> Date: Wed, 18 Aug 2010 09:21:14 -0400
> From: Chris Sutcliffe <ir0nh...@gmail.com>
> Cc: psm...@gnu.org, make-w32@gnu.org
> 
> I spent more time looking at the code as opposed to trying to figure
> out GDB and I've fixed the issue.  The problem was the memcpy to clear
> the trailing slash for win32 in find_directory.  Here's an updated
> patch:
> 
> --- dir.c.orig  2010-08-18 09:12:02 -0400
> +++ dir.c       2010-08-18 09:12:23 -0400
> @@ -464,7 +464,7 @@
> 
>          /* Remove any trailing slashes.  Windows32 stat fails even on
>             valid directories if they end in a slash. */
> -        memcpy (tem, name, p - name + 1);
> +        strncpy(tem, name, MAXPATHLEN);
>          tstart = tem;
>          if (tstart[1] == ':')
>            tstart += 2;
> 
> instead of relying on 'p' to determine the amount of memory to copy, I
> went the safer route and use strncpy to copy the path being evaluated
> to tem and make sure that we don't exceed tem's memory allocation
> (which is defined as 'char tem[MAXPATHLEN]').

Can you explain what exactly was the problem with the original code?
The value of p was computed earlier as

      p = name + strlen (name);

So it is okay to use `p - name + 1' as the number of characters to
copy, right?

Can you add a printf line there to show the value of `p - name + 1'?

Thanks.

_______________________________________________
Make-w32 mailing list
Make-w32@gnu.org
http://lists.gnu.org/mailman/listinfo/make-w32

Reply via email to