|
@@ -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);
|
|
|
+}
|