On Tue, 21 Sep 2010, Carlos R. Mafra wrote:
> > --- a/WINGs/findfile.c
> > +++ b/WINGs/findfile.c
> > @@ -84,9 +84,8 @@ char *wexpandpath(char *path)
> > path++;
> > if (*path == '/' || *path == 0) {
> > home = wgethomedir();
> > - if (strlen(home) > PATH_MAX)
> > + if (strlcpy(buffer, home, sizeof(buffer)) >=
> > sizeof(buffer))
> > goto error;
> > - strcat(buffer, home);
> > } else {
> > int j;
> > j = 0;
> > @@ -98,9 +97,8 @@ char *wexpandpath(char *path)
> > path++;
> > }
> > home = getuserhomedir(buffer2);
> > - if (!home || strlen(home) > PATH_MAX)
> > + if (!home || strlcat(buffer, home, sizeof(buffer)) >=
> > sizeof(buffer))
> > goto error;
> > - strcat(buffer, home);
>
> I was wondering why you replaced the first strcat() with strlcpy() while
> the second with strlcat().
it doesn't really matter. if you are just starting to fill up a
storage, cat and cpy do the same thing. for consistency's sake i'll
make them consistent, thanks for pointing it out.
> > @@ -358,8 +370,11 @@ char *wfindfileinarray(WMPropList * array, char *file)
> > path = wmalloc(len + flen + 2);
> > path = memcpy(path, p, len);
> > path[len] = 0;
> > - strcat(path, "/");
> > - strcat(path, file);
> > + if (strlcat(path, "/", len + flen + 2) >= len + flen + 2 ||
> > + strlcat(path, file, len + flen + 2) >= len + flen + 2) {
> > + wfree(path);
> > + return NULL;
> > + }
>
> Please put all these multiple "wfree(path); return NULL;" going into one
> 'goto error', here and in other places in the patch too. You will also
> save the { } for the if's, as they become one-liners.
thank you :) (lively demonstration of not all gotos are bad)
> > + for(i = 0; s[i]; !found && i++) {
>
> 'for' is not a function, so for (...)
ok.
--
[-]
mkdir /nonexistent
--
To unsubscribe, send mail to [email protected].