]> git.ipfire.org Git - thirdparty/asterisk.git/commitdiff
app_stack: protect against missing parameters to STACK_PEEK and LOCAL_PEEK
authorCorey Farrell <git@cfware.com>
Sat, 1 Feb 2014 00:23:42 +0000 (00:23 +0000)
committerCorey Farrell <git@cfware.com>
Sat, 1 Feb 2014 00:23:42 +0000 (00:23 +0000)
STACK_PEEK requires 2 parameters and LOCAL_PEEK requires 1 parameter.  This
protects against situations where those parameters are blank or missing by
logging an error and returning.

(closes issue ASTERISK-23220)
Reported by: James Sharp
........

Merged revisions 407100 from http://svn.asterisk.org/svn/asterisk/branches/1.8

git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/11@407103 65c4cc65-6c06-0410-ace0-fbb531ad65f3

apps/app_stack.c

index 2e982b956c30a043a6feb4262bd964d444d3be32..20b03087f3958cd8328a82509099e5ca11131569 100644 (file)
@@ -763,6 +763,12 @@ static int peek_read(struct ast_channel *chan, const char *cmd, char *data, char
        }
 
        AST_STANDARD_RAW_ARGS(args, data);
+
+       if (ast_strlen_zero(args.n) || ast_strlen_zero(args.name)) {
+               ast_log(LOG_ERROR, "LOCAL_PEEK requires parameters n and varname\n");
+               return -1;
+       }
+
        n = atoi(args.n);
        *buf = '\0';
 
@@ -802,6 +808,11 @@ static int stackpeek_read(struct ast_channel *chan, const char *cmd, char *data,
        data = ast_strdupa(data);
        AST_STANDARD_APP_ARGS(args, data);
 
+       if (ast_strlen_zero(args.n) || ast_strlen_zero(args.which)) {
+               ast_log(LOG_ERROR, "STACK_PEEK requires parameters n and which\n");
+               return -1;
+       }
+
        n = atoi(args.n);
        if (n <= 0) {
                ast_log(LOG_ERROR, "STACK_PEEK must be called with a positive peek value\n");