? ComedianMail.wav ? E22554v21td.pdf ? Tribute To Judge Judy.mp3.1 ? bc.mp3 ? cdr.diff.txt ? manpage.links ? manpage.refs ? mydiff.txt ? test.call ? voicemail.patch.txt Index: cli.c =================================================================== RCS file: /usr/cvsroot/asterisk/cli.c,v retrieving revision 1.56 diff -u -r1.56 cli.c --- cli.c 8 Oct 2004 18:20:49 -0000 1.56 +++ cli.c 14 Oct 2004 04:11:13 -0000 @@ -437,11 +437,11 @@ static int handle_commandmatchesarray(int fd, int argc, char *argv[]) { - char *buf; + char *buf, *obuf; int buflen = 2048; int len = 0; char **matches; - int x; + int x, matchlen; if (argc != 4) return RESULT_SHOWUSAGE; @@ -455,11 +455,17 @@ #if 0 printf("command matchesarray for '%s' %s got '%s'\n", argv[2], argv[3], matches[x]); #endif - if (len + strlen(matches[x]) >= buflen) { - buflen += strlen(matches[x]) * 3; - buf = realloc(buf, buflen); + matchlen = strlen(matches[x]) + 1; + if (len + matchlen >= buflen) { + buflen += matchlen * 3; + obuf = buf; + buf = realloc(obuf, buflen); + if (!buf) + /* Out of memory... Just free old buffer and be done */ + free(obuf); } - len += sprintf( buf + len, "%s ", matches[x]); + if (buf) + len += sprintf( buf + len, "%s ", matches[x]); free(matches[x]); matches[x] = NULL; }