]> git.ipfire.org Git - thirdparty/asterisk.git/commitdiff
Ignore unknown formats in ast_format_str_reduce() and return an error if no know...
authorMatthew Nicholson <mnicholson@digium.com>
Tue, 1 Dec 2009 15:34:57 +0000 (15:34 +0000)
committerMatthew Nicholson <mnicholson@digium.com>
Tue, 1 Dec 2009 15:34:57 +0000 (15:34 +0000)
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.4@231740 65c4cc65-6c06-0410-ace0-fbb531ad65f3

main/file.c

index 6631112c4f6f2d85b3acd12b7e539a07cf4c76ec..164560312ecfe9b70c484ff15b31e2511a519ff3 100644 (file)
@@ -1365,7 +1365,7 @@ char *ast_format_str_reduce(char *fmts)
        char *fmts_str[AST_MAX_FORMATS];
        char *stringp, *type;
        char *orig = fmts;
-       int i, j, x, found;
+       int i, j, x, first, found;
        int len = strlen(fmts) + 1;
 
        if (AST_LIST_LOCK(&formats)) {
@@ -1392,11 +1392,19 @@ char *ast_format_str_reduce(char *fmts)
        }
        AST_LIST_UNLOCK(&formats);
 
+       first = 1;
        for (i = 0; i < x; i++) {
+               /* ignore invalid entries */
+               if (!fmts_ptr[i]) {
+                       ast_log(LOG_WARNING, "ignoring unknown format '%s'\n", fmts_str[i]);
+                       continue;
+               }
+
                /* special handling for the first entry */
-               if (i == 0) {
+               if (first) {
                        fmts += snprintf(fmts, len, "%s", fmts_str[i]);
                        len -= (fmts - orig);
+                       first = 0;
                        continue;
                }
 
@@ -1415,6 +1423,11 @@ char *ast_format_str_reduce(char *fmts)
                }
        }
 
+       if (first) {
+               ast_log(LOG_WARNING, "no known formats found in format list (%s)\n", orig);
+               return NULL;
+       }
+
        return orig;
 }