pbx.c: prevent potential crash from recursive replace()

Recurisve usage of replace() resulted in corruption of the
temporary string storage and potential crash.  By changing
the string to be allocated separtely per instance, this is
eliminated.

ASTERISK-23650 #comment Reported by: Roel van Meer
ASTERISK-23650 #close

Review: https://reviewboard.asterisk.org/r/3539/



git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.8@414214 65c4cc65-6c06-0410-ace0-fbb531ad65f3
changes/98/198/1
Scott Griepentrog 12 years ago
parent 7fa61bee7d
commit 1035ef957c

@ -780,7 +780,7 @@ static int replace(struct ast_channel *chan, const char *cmd, char *data, struct
AST_APP_ARG(replace);
);
char *strptr, *varsubst;
struct ast_str *str = ast_str_thread_get(&result_buf, 16);
RAII_VAR(struct ast_str *, str, ast_str_create(16), ast_free);
char find[256]; /* Only 256 characters possible */
char replace[2] = "";
size_t unused;

Loading…
Cancel
Save