diff --git a/ffserver_config.c b/ffserver_config.c index de8a4547fb8d1d1cb5703a894f643e9952534cbb..5df871c36aee8481f3f2d20f0d7ee864109adfbf 100644 --- a/ffserver_config.c +++ b/ffserver_config.c @@ -116,6 +116,8 @@ void ffserver_parse_acl_row(FFServerStream *stream, FFServerStream* feed, { char arg[1024]; FFServerIPAddressACL acl; + FFServerIPAddressACL *nacl; + FFServerIPAddressACL **naclp; int errors = 0; ffserver_get_arg(arg, sizeof(arg), &p); @@ -150,33 +152,35 @@ void ffserver_parse_acl_row(FFServerStream *stream, FFServerStream* feed, } } - if (!errors) { - FFServerIPAddressACL *nacl = av_mallocz(sizeof(*nacl)); - FFServerIPAddressACL **naclp = 0; - - acl.next = 0; - *nacl = acl; + if (errors) + return; - if (stream) - naclp = &stream->acl; - else if (feed) - naclp = &feed->acl; - else if (ext_acl) - naclp = &ext_acl; - else { - fprintf(stderr, "%s:%d: ACL found not in <Stream> or <Feed>\n", - filename, line_num); - errors++; - } + nacl = av_mallocz(sizeof(*nacl)); + naclp = 0; - if (naclp) { - while (*naclp) - naclp = &(*naclp)->next; + acl.next = 0; + *nacl = acl; - *naclp = nacl; - } else - av_free(nacl); + if (stream) + naclp = &stream->acl; + else if (feed) + naclp = &feed->acl; + else if (ext_acl) + naclp = &ext_acl; + else { + fprintf(stderr, "%s:%d: ACL found not in <Stream> or <Feed>\n", + filename, line_num); + errors++; /* FIXME: No effect whatsoever */ } + + if (naclp) { + while (*naclp) + naclp = &(*naclp)->next; + + *naclp = nacl; + } else + av_free(nacl); + } /* add a codec and set the default parameters */