From: Michael Niedermayer <mich...@niedermayer.cc>

This feature is not know much or used much AFAIK, and it might be helpfull in
exploits.
No specific case is known where it can be used in an exploit though

Signed-off-by: Michael Niedermayer <mich...@niedermayer.cc>
---
 libavformat/avio.c |   30 +-----------------------------
 1 file changed, 1 insertion(+), 29 deletions(-)

diff --git a/libavformat/avio.c b/libavformat/avio.c
index 21713d9..21655d8 100644
--- a/libavformat/avio.c
+++ b/libavformat/avio.c
@@ -146,33 +146,8 @@ static int url_alloc_for_protocol(URLContext **puc, struct 
URLProtocol *up,
             goto fail;
         }
         if (up->priv_data_class) {
-            int proto_len= strlen(up->name);
-            char *start = strchr(uc->filename, ',');
             *(const AVClass **)uc->priv_data = up->priv_data_class;
             av_opt_set_defaults(uc->priv_data);
-            if(!strncmp(up->name, uc->filename, proto_len) && uc->filename + 
proto_len == start){
-                int ret= 0;
-                char *p= start;
-                char sep= *++p;
-                char *key, *val;
-                p++;
-                while(ret >= 0 && (key= strchr(p, sep)) && p<key && (val = 
strchr(key+1, sep))){
-                    *val= *key= 0;
-                    ret= av_opt_set(uc->priv_data, p, key+1, 0);
-                    if (ret == AVERROR_OPTION_NOT_FOUND)
-                        av_log(uc, AV_LOG_ERROR, "Key '%s' not found.\n", p);
-                    *val= *key= sep;
-                    p= val+1;
-                }
-                if(ret<0 || p!=key){
-                    av_log(uc, AV_LOG_ERROR, "Error parsing options string 
%s\n", start);
-                    av_freep(&uc->priv_data);
-                    av_freep(&uc);
-                    err = AVERROR(EINVAL);
-                    goto fail;
-                }
-                memmove(start, key+1, strlen(key));
-            }
         }
     }
     if (int_cb)
@@ -242,16 +217,13 @@ static struct URLProtocol *url_find_protocol(const char 
*filename)
     char proto_str[128], proto_nested[128], *ptr;
     size_t proto_len = strspn(filename, URL_SCHEME_CHARS);
 
-    if (filename[proto_len] != ':' &&
-        (filename[proto_len] != ',' || !strchr(filename + proto_len + 1, ':')) 
||
+    if (filename[proto_len] != ':' ||
         is_dos_path(filename))
         strcpy(proto_str, "file");
     else
         av_strlcpy(proto_str, filename,
                    FFMIN(proto_len + 1, sizeof(proto_str)));
 
-    if ((ptr = strchr(proto_str, ',')))
-        *ptr = '\0';
     av_strlcpy(proto_nested, proto_str, sizeof(proto_nested));
     if ((ptr = strchr(proto_nested, '+')))
         *ptr = '\0';
-- 
1.7.9.5

_______________________________________________
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
http://ffmpeg.org/mailman/listinfo/ffmpeg-devel

Reply via email to