mirror of
https://github.com/asterisk/asterisk.git
synced 2025-11-16 14:58:25 +00:00
Issue 10055 - Change memory allocation to use the heap for a command, since the output has the potential to overflow the stack (as it did here)
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.4@72556 65c4cc65-6c06-0410-ace0-fbb531ad65f3
This commit is contained in:
@@ -1636,17 +1636,26 @@ static int action_command(struct mansession *s, const struct message *m)
|
||||
/* FIXME: Wedge a ActionID response in here, waiting for later changes */
|
||||
ast_cli_command(fd, cmd); /* XXX need to change this to use a FILE * */
|
||||
l = lseek(fd, 0, SEEK_END); /* how many chars available */
|
||||
buf = alloca(l + 1);
|
||||
final_buf = alloca(l + 1);
|
||||
|
||||
/* This has a potential to overflow the stack. Hence, use the heap. */
|
||||
buf = ast_calloc(1, l + 1);
|
||||
final_buf = ast_calloc(1, l + 1);
|
||||
if (buf) {
|
||||
lseek(fd, 0, SEEK_SET);
|
||||
read(fd, buf, l);
|
||||
buf[l] = '\0';
|
||||
close(fd);
|
||||
unlink(template);
|
||||
if (final_buf) {
|
||||
term_strip(final_buf, buf, l);
|
||||
final_buf[l] = '\0';
|
||||
astman_append(s, final_buf);
|
||||
}
|
||||
astman_append(s, S_OR(final_buf, buf));
|
||||
ast_free(buf);
|
||||
}
|
||||
close(fd);
|
||||
unlink(template);
|
||||
astman_append(s, "--END COMMAND--\r\n\r\n");
|
||||
if (final_buf)
|
||||
ast_free(final_buf);
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user