BTW the leak happens when a pattern in variable modifier s///
is not found.
$ set a="test"
$ echo $a:s/badpattern//
test
Any objections if I commit this?
On Thu, Sep 20, 2018 at 12:30:05PM +0800, Michael Mikonos wrote:
> Hello,
>
> In setDolp() pointers cp and dp initially point to the same
> copied string, but later dp can become NULL if Strstr() finds
> no match. The copied string is not freed in this case.
> NetBSD added this fix in their dol.c revision 1.23 (2006).
> OK?
>
> - Michael
>
>
> Index: dol.c
> ===================================================================
> RCS file: /cvs/src/bin/csh/dol.c,v
> retrieving revision 1.24
> diff -u -p -u -r1.24 dol.c
> --- dol.c 18 Sep 2018 06:56:09 -0000 1.24
> +++ dol.c 20 Sep 2018 04:14:37 -0000
> @@ -766,8 +766,10 @@ setDolp(Char *cp)
> addla(dp);
> free(dp);
> }
> - else
> + else {
> addla(cp);
> + free(cp);
> + }
>
> dolp = STRNULL;
> if (seterr)