[asterisk-commits] seanbright: trunk r302550 - in /trunk: ./ res/res_agi.c

SVN commits to the Asterisk project asterisk-commits at lists.digium.com
Wed Jan 19 12:45:49 CST 2011


Author: seanbright
Date: Wed Jan 19 12:45:44 2011
New Revision: 302550

URL: http://svnview.digium.com/svn/asterisk?view=rev&rev=302550
Log:
Merged revisions 302549 via svnmerge from 
https://origsvn.digium.com/svn/asterisk/branches/1.8

................
  r302549 | seanbright | 2011-01-19 13:43:11 -0500 (Wed, 19 Jan 2011) | 17 lines
  
  Merged revisions 302548 via svnmerge from 
  https://origsvn.digium.com/svn/asterisk/branches/1.6.2
  
  ........
    r302548 | seanbright | 2011-01-19 13:37:09 -0500 (Wed, 19 Jan 2011) | 10 lines
    
    Properly handle partial reads from fgets() when handling AGIs.
    
    When fgets() failed with EAGAIN, we were continually decrementing the available
    space left in our buffer, resulting in botched command handling.
    
    (closes issue #16032)
    Reported by: notahat
    Patches:
          agi_buffer_patch2.diff uploaded by fnordian (license 110)
  ........
................

Modified:
    trunk/   (props changed)
    trunk/res/res_agi.c

Propchange: trunk/
------------------------------------------------------------------------------
Binary property 'branch-1.8-merged' - no diff available.

Modified: trunk/res/res_agi.c
URL: http://svnview.digium.com/svn/asterisk/trunk/res/res_agi.c?view=diff&rev=302550&r1=302549&r2=302550
==============================================================================
--- trunk/res/res_agi.c (original)
+++ trunk/res/res_agi.c Wed Jan 19 12:45:44 2011
@@ -3391,7 +3391,7 @@
 			retry = AGI_NANDFS_RETRY;
 			buf[0] = '\0';
 
-			while (buflen < (len - 1)) {
+			while (len > 1) {
 				res = fgets(buf + buflen, len, readf);
 				if (feof(readf))
 					break;
@@ -3402,7 +3402,7 @@
 				buflen = strlen(buf);
 				if (buflen && buf[buflen - 1] == '\n')
 					break;
-				len -= buflen;
+				len = sizeof(buf) - buflen;
 				if (agidebug)
 					ast_verbose( "AGI Rx << temp buffer %s - errno %s\n", buf, strerror(errno));
 			}




More information about the asterisk-commits mailing list