On Fri, Feb 23, 2018 at 05:24:04PM +0900, Misono, Tomohiro wrote:
> On 2018/02/16 4:04, Omar Sandoval wrote:
> > From: Omar Sandoval <osan...@fb.com>
> 
> > +static enum btrfs_util_error openat_parent_and_name(int dirfd, const char 
> > *path,
> > +                                               char *name, size_t name_len,
> > +                                               int *fd)
> > +{
> > +   char *tmp_path, *slash, *dirname, *basename;
> > +   size_t len;
> > +
> > +   /* Ignore trailing slashes. */
> > +   len = strlen(path);
> > +   while (len > 1 && path[len - 1] == '/')
> > +           len--;
> > +
> > +   tmp_path = malloc(len + 1);
> > +   if (!tmp_path)
> > +           return BTRFS_UTIL_ERROR_NO_MEMORY;
> > +   memcpy(tmp_path, path, len);
> > +   tmp_path[len] = '\0';
> > +
> > +   slash = memrchr(tmp_path, '/', len);
> > +   if (slash == tmp_path) {
> > +           dirname = "/";
> > +           basename = tmp_path + 1;
> > +   } else if (slash) {
> > +           *slash = '\0';
> > +           dirname = tmp_path;
> > +           basename = slash + 1;
> > +   } else {
> > +           dirname = ".";
> > +           basename = tmp_path;
> > +   }
> > +
> > +   len = strlen(basename);
> > +   if (len >= name_len) {
> > +           errno = ENAMETOOLONG;
> 
> tmp_path should be also freed here.

Another good catch, thanks.
--
To unsubscribe from this list: send the line "unsubscribe linux-btrfs" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to