btrfs-progs: fix btrfs_get_subvol cut/paste error

in btrfs_get_subvol(), there is a cut and paste error:

       if (ri->full_path)
               the_ri->full_path = strdup(ri->full_path);
       else
               the_ri->name = NULL;

It should be setting the_ri->full_path to NULL here.
Do it in a function instead of the cpoy & paste to avoid future
errors.

Signed-off-by: Eric Sandeen <sandeen@redhat.com>
This commit is contained in:
Eric Sandeen 2013-02-25 16:54:35 -06:00 committed by David Sterba
parent efbbbc88cb
commit 220e1ccd87

View File

@ -1515,6 +1515,13 @@ int btrfs_list_subvols_print(int fd, struct btrfs_list_filter_set *filter_set,
return 0;
}
char *strdup_or_null(const char *s)
{
if (!s)
return NULL;
return strdup(s);
}
int btrfs_get_subvol(int fd, struct root_info *the_ri)
{
int ret = 1, rr;
@ -1537,18 +1544,9 @@ int btrfs_get_subvol(int fd, struct root_info *the_ri)
}
if (!comp_entry_with_rootid(the_ri, ri, 0)) {
memcpy(the_ri, ri, offsetof(struct root_info, path));
if (ri->path)
the_ri->path = strdup(ri->path);
else
the_ri->path = NULL;
if (ri->name)
the_ri->name = strdup(ri->name);
else
the_ri->name = NULL;
if (ri->full_path)
the_ri->full_path = strdup(ri->full_path);
else
the_ri->name = NULL;
the_ri->path = strdup_or_null(ri->path);
the_ri->name = strdup_or_null(ri->name);
the_ri->full_path = strdup_or_null(ri->full_path);
ret = 0;
break;
}