diff --git a/res/res_agi.c b/res/res_agi.c index f7bc8d9cf45a3c6dabb0ce2b6e06112418e1ec01..cd4760b411d573e6b92060f42b6b25d55af0eba5 100644 --- a/res/res_agi.c +++ b/res/res_agi.c @@ -3391,7 +3391,7 @@ static enum agi_result run_agi(struct ast_channel *chan, char *request, AGI *agi 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 @@ static enum agi_result run_agi(struct ast_channel *chan, char *request, AGI *agi 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)); }