diff --git a/ffserver.c b/ffserver.c
index 3702fd638ac81fff6cbc8764088a7a147e77df42..012056dd48806dc9cba75c7ba73dcf9fee28775d 100644
--- a/ffserver.c
+++ b/ffserver.c
@@ -3663,7 +3663,7 @@ static void handle_child_exit(int sig)
 
                 if (uptime < 30)
                     /* Turn off any more restarts */
-                    feed->child_argv = 0;
+                    ffserver_free_child_args(&feed->child_argv);
             }
         }
     }
diff --git a/ffserver_config.c b/ffserver_config.c
index f34dc5e5b2e673abff52eb59876ddc38cd05109c..5f01e43f97caa25ce4700c752a661b6876090c94 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);
+}
diff --git a/ffserver_config.h b/ffserver_config.h
index 4e1e0e09fc55e175fe1b4610d642ed36e3ca1e1a..bdeb3c990afaf0b7698955f021b40633bc4e3ba0 100644
--- a/ffserver_config.h
+++ b/ffserver_config.h
@@ -128,4 +128,6 @@ void ffserver_parse_acl_row(FFServerStream *stream, FFServerStream* feed,
 
 int ffserver_parse_ffconfig(const char *filename, FFServerConfig *config);
 
+void ffserver_free_child_args(void *argsp);
+
 #endif /* FFSERVER_CONFIG_H */