]> git.ipfire.org Git - thirdparty/asterisk.git/commitdiff
Merged revisions 246200 via svnmerge from
authorTilghman Lesher <tilghman@meg.abyt.es>
Wed, 10 Feb 2010 21:22:30 +0000 (21:22 +0000)
committerTilghman Lesher <tilghman@meg.abyt.es>
Wed, 10 Feb 2010 21:22:30 +0000 (21:22 +0000)
https://origsvn.digium.com/svn/asterisk/trunk

........
  r246200 | tilghman | 2010-02-10 15:19:35 -0600 (Wed, 10 Feb 2010) | 2 lines

  Fix weird issue with unit tests on optimized build - turned out to be a signing issue.
........

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

funcs/func_strings.c

index eef3b6bf9c09d9cfcb3bbf7ab7639ed73558db7a..e242abddc9f99990123d9d2354cf9592e3b9f917 100644 (file)
@@ -431,7 +431,8 @@ static int filter(struct ast_channel *chan, const char *cmd, char *parse, char *
                             AST_APP_ARG(allowed);
                             AST_APP_ARG(string);
        );
-       char *outbuf = buf, ac;
+       char *outbuf = buf;
+       unsigned char ac;
        char allowed[256] = "";
        size_t allowedlen = 0;
        int32_t bitfield[8] = { 0, }; /* 256 bits */
@@ -448,7 +449,7 @@ static int filter(struct ast_channel *chan, const char *cmd, char *parse, char *
        }
 
        /* Expand ranges */
-       for (; *(args.allowed) && allowedlen < sizeof(allowed); ) {
+       for (; *(args.allowed);) {
                char c1 = 0, c2 = 0;
                size_t consumed = 0;
 
@@ -472,13 +473,13 @@ static int filter(struct ast_channel *chan, const char *cmd, char *parse, char *
                        for (ac = c1; ac != c2; ac++) {
                                bitfield[ac / 32] |= 1 << (ac % 32);
                        }
+                       bitfield[ac / 32] |= 1 << (ac % 32);
 
                        ast_debug(4, "c1=%d, c2=%d\n", c1, c2);
-
-                       /* Decrement before the loop increment */
-                       (args.allowed)--;
                } else {
-                       bitfield[c1 / 32] |= 1 << (c1 % 32);
+                       ac = (unsigned char) c1;
+                       ast_debug(4, "c1=%d, consumed=%d, args.allowed=%s\n", c1, consumed, args.allowed - consumed);
+                       bitfield[ac / 32] |= 1 << (ac % 32);
                }
        }