diff options
author | Michael Niedermayer <michael@niedermayer.cc> | 2017-10-22 17:11:20 +0200 |
---|---|---|
committer | Michael Niedermayer <michael@niedermayer.cc> | 2017-10-26 17:34:42 +0200 |
commit | 0ccb27e0942701622d1065db58d6adf0d0643d32 (patch) | |
tree | 4d2607b6410098fe4fe8c87bb7b5032483803bce | |
parent | e8fd32b69ffdf7e3eba7b1223c1f66e69687307f (diff) | |
download | ffmpeg-0ccb27e0942701622d1065db58d6adf0d0643d32.tar.gz |
ffserver: Fix off by 1 error in path
Code suggested by ubitux
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
(cherry picked from commit 617f0c65e1bac8983a5b6521818c1b9b57f0804b)
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
-rw-r--r-- | ffserver.c | 24 |
1 files changed, 10 insertions, 14 deletions
diff --git a/ffserver.c b/ffserver.c index 8b819b6934..193f63bd7a 100644 --- a/ffserver.c +++ b/ffserver.c @@ -476,7 +476,7 @@ static int compute_datarate(DataRateData *drd, int64_t count) static void start_children(FFServerStream *feed) { char *pathname; - char *slash; + char *dirname, *prog; int i; size_t cmd_length; @@ -495,22 +495,18 @@ static void start_children(FFServerStream *feed) return; } - slash = strrchr(my_program_name, '/'); - if (!slash) { - pathname = av_mallocz(sizeof("ffmpeg")); - } else { - pathname = av_mallocz(slash - my_program_name + sizeof("ffmpeg")); - if (pathname != NULL) { - memcpy(pathname, my_program_name, slash - my_program_name); - } - } - if (!pathname) { + /* use "ffmpeg" in the path of current program. Ignore user provided path */ + prog = av_strdup(my_program_name); + if (prog) { + dirname = av_dirname(prog); + pathname = *dirname ? av_asprintf("%s/%s", dirname, "ffmpeg") + : av_asprintf("ffmpeg"); + av_free(prog); + } + if (!prog || !pathname) { http_log("Could not allocate memory for children cmd line\n"); return; } - /* use "ffmpeg" in the path of current program. Ignore user provided path */ - - strcat(pathname, "ffmpeg"); for (; feed; feed = feed->next) { |