On Tuesday, September 20, 2016 5:07:14 PM CEST Jan Larres wrote:
> Is there any possibility that someone could have a look at this? Having a set
> of "standard" excludes with this option is quite useful to always exclude
> custom build files, swap files, backup files etc that aren't covered by the
> existing options. Thanks!

That's because 'name_list' elements point to temporary memory allocated by
wordsplit code while parsing TAR_OPTIONS.  That memory is however explicitly
removed right after the TAR_OPTIONS is parsed.  So the naive patch would be:

    option-parser: fix use-after-free error

    diff --git a/src/tar.c b/src/tar.c
    index ba24c43..ddc5d33 100644
    --- a/src/tar.c
    +++ b/src/tar.c
    @@ -2202,8 +2202,6 @@ parse_default_options (void)
           ws.ws_wordv[0] = (char*) program_name;
           more_options (ws.ws_offs + ws.ws_wordc, ws.ws_wordv, &loc);
         }
    -
    -  wordsplit_free (&ws);
     }

This is OK, because the function is called just once (we don't have to care
about memory leaks too much.  However, the wordsplit code is used multiple times
while parsing arguments, so I'm not sure .. it might ask for some systematic
long-term fix?

Pavel


Reply via email to