[FFmpeg-devel,1/2] ffserver: Fix off by 1 error in path

Submitted by Michael Niedermayer on Oct. 22, 2017, 3:11 p.m.

Details

Message ID 20171022151121.12909-1-michael@niedermayer.cc
State New
Headers show

Commit Message

Michael Niedermayer Oct. 22, 2017, 3:11 p.m.
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
---
 fftools/ffserver.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

Comments

Clément Bœsch Oct. 23, 2017, 8:42 a.m.
On Sun, Oct 22, 2017 at 05:11:20PM +0200, Michael Niedermayer wrote:
> Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
> ---
>  fftools/ffserver.c | 4 ++--
>  1 file changed, 2 insertions(+), 2 deletions(-)
> 
> diff --git a/fftools/ffserver.c b/fftools/ffserver.c
> index d4885dfa0e..51f31bc704 100644
> --- a/fftools/ffserver.c
> +++ b/fftools/ffserver.c
> @@ -499,9 +499,9 @@ static void start_children(FFServerStream *feed)
>      if (!slash) {
>          pathname = av_mallocz(sizeof("ffmpeg"));
>      } else {
> -        pathname = av_mallocz(slash - my_program_name + sizeof("ffmpeg"));
> +        pathname = av_mallocz(slash - my_program_name + 1 + sizeof("ffmpeg"));
>          if (pathname != NULL) {
> -            memcpy(pathname, my_program_name, slash - my_program_name);
> +            memcpy(pathname, my_program_name, slash - my_program_name + 1);
>          }

maybe that's correct but the whole code around here needs rewrite.

how about changing the whole chunk with (untested):

    prog = av_strdup(my_program_name);
    dirname = av_dirname(prog);
    pathname = *dirname ? av_asprintf("%s/%s", dirname, "ffmpeg")
                        : av_asprintf("ffmpeg")
    av_free(filepath);
Clément Bœsch Oct. 23, 2017, 8:44 a.m.
On Mon, Oct 23, 2017 at 10:42:53AM +0200, Clément Bœsch wrote:
[...]
> how about changing the whole chunk with (untested):
> 
>     prog = av_strdup(my_program_name);
>     dirname = av_dirname(prog);
>     pathname = *dirname ? av_asprintf("%s/%s", dirname, "ffmpeg")
>                         : av_asprintf("ffmpeg")
>     av_free(filepath);
              ^^^^^^^^
              prog
Michael Niedermayer Oct. 24, 2017, 12:38 a.m.
On Mon, Oct 23, 2017 at 10:44:07AM +0200, Clément Bœsch wrote:
> On Mon, Oct 23, 2017 at 10:42:53AM +0200, Clément Bœsch wrote:
> [...]
> > how about changing the whole chunk with (untested):
> > 
> >     prog = av_strdup(my_program_name);
> >     dirname = av_dirname(prog);
> >     pathname = *dirname ? av_asprintf("%s/%s", dirname, "ffmpeg")
> >                         : av_asprintf("ffmpeg")
> >     av_free(filepath);
>               ^^^^^^^^
>               prog

works fine, will push with this

thanks

[...]

Patch hide | download patch | download mbox

diff --git a/fftools/ffserver.c b/fftools/ffserver.c
index d4885dfa0e..51f31bc704 100644
--- a/fftools/ffserver.c
+++ b/fftools/ffserver.c
@@ -499,9 +499,9 @@  static void start_children(FFServerStream *feed)
     if (!slash) {
         pathname = av_mallocz(sizeof("ffmpeg"));
     } else {
-        pathname = av_mallocz(slash - my_program_name + sizeof("ffmpeg"));
+        pathname = av_mallocz(slash - my_program_name + 1 + sizeof("ffmpeg"));
         if (pathname != NULL) {
-            memcpy(pathname, my_program_name, slash - my_program_name);
+            memcpy(pathname, my_program_name, slash - my_program_name + 1);
         }
     }
     if (!pathname) {