This is the mail archive of the
cygwin
mailing list for the Cygwin project.
Re: mkshortcut (cygutils-1.4.14) free error
- From: Mark Geisert <mark at maxrnd dot com>
- To: cygwin at cygwin dot com
- Date: Mon, 26 Oct 2015 03:57:42 +0000 (UTC)
- Subject: Re: mkshortcut (cygutils-1.4.14) free error
- Authentication-results: sourceware.org; auth=none
- References: <1445135414 dot 3384650 dot 413058409 dot 46BC94AD at webmail dot messagingengine dot com> <1445823930 dot 241438 dot 419951441 dot 109BA262 at webmail dot messagingengine dot com>
Anthony Heading writes:
> I see the cygutils package has been orphaned, perhaps explaining the
> lack of response to the below.
> A related question then is that the vanilla mkshortcut built from the
> latest source package does not
> seem to perfectly match the behaviour of the binary. Is there any way
> to review or reproduce how
> the binary package was built, or any other way to verify that the source
> and binaries do match?
Unfortunately I have no answers for your good questions above. But...
> On Sat, Oct 17, 2015, at 10:30 PM, Anthony Heading wrote:
> > Seems free() is being called on an adjusted pointer, causing general
> > misbehaviour. A minimal patch below.
[...sorry for deletions within the patch; trying to satisfy gmane...]
> > - char *buf_str, *tmp_str;
> > + char *buf_str, *tmp_str, *base_str;
[...]
> > buf_str = xstrndup (opts.target_arg, strlen(opts.target_arg));
> > + base_str = buf_str;
> > tmp_str = buf_str;
...if tmp_str is not modified after the above line, ...
> > tmp = strlen (buf_str) - 1;
> > while (strrchr (buf_str, '/') == (buf_str + tmp))
> > <at> <at> -504,7 +505,7 <at> <at>
> > buf_str++;
> > }
> > link_name = xstrndup (tmp_str, strlen (tmp_str));
> > - free (buf_str);
> > + free (base_str);
...then "free(tmp_str);" should solve the original issue without having to
define a new variable base_str. I didn't look at the complete original
code, only the patch that you posted, but hopefully this points to a "more
minimal" fix if you agree it's solid.
..mark
--
Problem reports: http://cygwin.com/problems.html
FAQ: http://cygwin.com/faq/
Documentation: http://cygwin.com/docs.html
Unsubscribe info: http://cygwin.com/ml/#unsubscribe-simple