]> git.ipfire.org Git - thirdparty/asterisk.git/commitdiff
Resolve a logic error that was causing Page() to crash when more than one
authorSean Bright <sean@malleable.com>
Sun, 25 Jan 2009 13:33:20 +0000 (13:33 +0000)
committerSean Bright <sean@malleable.com>
Sun, 25 Jan 2009 13:33:20 +0000 (13:33 +0000)
channel was specified.

(closes issue #14308)
Reported by: bluefox
Patches:
      20090124__bug14308.diff.txt uploaded by seanbright (license 71)
Tested by: kc0bvu

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

apps/app_page.c

index c94e1b11a831a6eeba71f1ccd895ed90bba6be9a..896b31b3448c87392abc98539701feeba9616821 100644 (file)
@@ -120,12 +120,15 @@ static int page_exec(struct ast_channel *chan, void *data)
        /* Count number of extensions in list by number of ampersands + 1 */
        num_dials = 1;
        tmp2 = tmp;
-       while (*tmp2 && *tmp2++ == '&') {
-               num_dials++;
+       while (*tmp2) {
+               if (*tmp2 == '&') {
+                       num_dials++;
+               }
+               tmp2++;
        }
 
-       if (!(dial_list = ast_calloc(num_dials, sizeof(void *)))) {
-               ast_log(LOG_ERROR, "Can't allocate %ld bytes for dial list\n", (long)(sizeof(void *) * num_dials));
+       if (!(dial_list = ast_calloc(num_dials, sizeof(struct ast_dial *)))) {
+               ast_log(LOG_ERROR, "Can't allocate %ld bytes for dial list\n", (long)(sizeof(struct ast_dial *) * num_dials));
                ast_module_user_remove(u);
                return -1;
        }