aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMichael Niedermayer <michael@niedermayer.cc>2017-10-22 17:11:20 +0200
committerMichael Niedermayer <michael@niedermayer.cc>2017-10-26 17:34:42 +0200
commit0ccb27e0942701622d1065db58d6adf0d0643d32 (patch)
tree4d2607b6410098fe4fe8c87bb7b5032483803bce
parente8fd32b69ffdf7e3eba7b1223c1f66e69687307f (diff)
downloadffmpeg-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.c24
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) {