Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/FFmpeg/FFmpeg.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLukasz Marek <lukasz.m.luki2@gmail.com>2014-11-20 02:28:03 +0300
committerLukasz Marek <lukasz.m.luki2@gmail.com>2014-11-27 01:32:33 +0300
commit3cb0bec6870cf0bb7879f7bfd4119ef39a02a464 (patch)
treea70ac3415cdf32de8cd06f9964581ce84a7cc5d6 /ffserver_config.c
parentec6e035b8b1fcd7a1838ac12c887389a44af4d98 (diff)
ffserver: dont leak child arguments
Signed-off-by: Lukasz Marek <lukasz.m.luki2@gmail.com>
Diffstat (limited to 'ffserver_config.c')
-rw-r--r--ffserver_config.c20
1 files changed, 18 insertions, 2 deletions
diff --git a/ffserver_config.c b/ffserver_config.c
index f34dc5e5b2..5f01e43f97 100644
--- a/ffserver_config.c
+++ b/ffserver_config.c
@@ -31,6 +31,8 @@
#include "cmdutils.h"
#include "ffserver_config.h"
+#define MAX_CHILD_ARGS 64
+
static int ffserver_save_avoption(const char *opt, const char *arg, int type,
FFServerConfig *config);
static void vreport_config_error(const char *filename, int line_num, int log_level,
@@ -691,10 +693,10 @@ static int ffserver_parse_config_feed(FFServerConfig *config, const char *cmd, c
if (!av_strcasecmp(cmd, "Launch")) {
int i;
- feed->child_argv = av_mallocz(64 * sizeof(char *));
+ feed->child_argv = av_mallocz_array(MAX_CHILD_ARGS, sizeof(char *));
if (!feed->child_argv)
return AVERROR(ENOMEM);
- for (i = 0; i < 62; i++) {
+ for (i = 0; i < MAX_CHILD_ARGS - 2; i++) {
ffserver_get_arg(arg, sizeof(arg), p);
if (!arg[0])
break;
@@ -1255,3 +1257,17 @@ int ffserver_parse_ffconfig(const char *filename, FFServerConfig *config)
#undef ERROR
#undef WARNING
+
+void ffserver_free_child_args(void *argsp)
+{
+ int i;
+ char **args;
+ if (!argsp)
+ return;
+ args = *(char ***)argsp;
+ if (!args)
+ return;
+ for (i = 0; i < MAX_CHILD_ARGS; i++)
+ av_free(args[i]);
+ av_freep(argsp);
+}