Re: [PATCH] mingw-multibyte: fix memory acces violation and path length limits.
- From
Johannes Schindelin <johannes.schindelin@gmx.de>
- Date
- Sep 28, 2013, 23:18 UTC
- Message-ID
- <alpine.DEB.1.00.1309290112380.1191@s15462909.onlinehome-server.info>
- In-Reply-To
- <1380403036-20413-1-git-send-email-wnoguchi.0727@gmail.com>
Hi,
On Sun, 29 Sep 2013, Wataru Noguchi wrote:
Show 11 quoted lines
> --- a/convert.c
> +++ b/convert.c
> @@ -724,6 +724,11 @@ static void convert_attrs(struct conv_attrs *ca, const char *path)
> {
> int i;
> static struct git_attr_check ccheck[NUM_CONV_ATTRS];
> +
> + if (NUM_CONV_ATTRS != 0) {
> + ccheck[0].attr = NULL;
> + ccheck[0].value = NULL;
> + }I wonder whether it would make more sense to use
memset(ccheck, 0, sizeof(ccheck))
? But then, ccheck is static and *should* be initialized to all 0 according to the C standard. And re-initializing it to NULL would invalidate the values that were set earlier.
Also, if NUM_CONV_ATTRS == 0, I would expect
> if (!ccheck[0].attr) {to access an invalid location...
Show 18 quoted lines
> diff --git a/git-compat-util.h b/git-compat-util.h > index a31127f..ba02c69 100644 > --- a/git-compat-util.h > +++ b/git-compat-util.h > @@ -237,6 +237,16 @@ extern char *gitbasename(char *); > #ifndef PATH_MAX > #define PATH_MAX 4096 > #endif > +#ifdef GIT_WINDOWS_NATIVE > +/* Git for Windows checkout PATH_MAX is reduce to 260. > + * but if checkout relative long path name, its length too short. > + * thus, expand length. > + */ > +#ifdef PATH_MAX > +#undef PATH_MAX > +#endif > +#define PATH_MAX 4096 > +#endif
This looks fine, but I am wary... did you not say that a crash was caused by this? In that case, we would have a user that accesses the respective buffer without checking the size and we would still have to fix that bug..
Ciao, Dscho
-- -- *** Please reply-to-all at all times *** *** (do not pretend to know who is subscribed and who is not) *** *** Please avoid top-posting. *** The msysGit Wiki is here: https://github.com/msysgit/msysgit/wiki - Github accounts are free. You received this message because you are subscribed to the Google Groups "msysGit" group. To post to this group, send email to msysgit@googlegroups.com To unsubscribe from this group, send email to msysgit+unsubscribe@googlegroups.com For more options, and view previous threads, visit this group at http://groups.google.com/group/msysgit?hl=en_US?hl=en --- You received this message because you are subscribed to the Google Groups "msysGit" group. To unsubscribe from this group and stop receiving emails from it, send an email to msysgit+unsubscribe@googlegroups.com. For more options, visit https://groups.google.com/groups/opt_out.