diff --git a/lib/blkid/ChangeLog b/lib/blkid/ChangeLog index 3e95a727..919fbb01 100644 --- a/lib/blkid/ChangeLog +++ b/lib/blkid/ChangeLog @@ -1,3 +1,7 @@ +2007-03-21 Theodore Tso + + * resolve.c (blkid_get_devname): Fix memory leak. + 2007-03-18 Theodore Tso * tag.c (blkid_dev_has_tag): Allow value to be NULL, in which case diff --git a/lib/blkid/resolve.c b/lib/blkid/resolve.c index 747ea476..b4a93081 100644 --- a/lib/blkid/resolve.c +++ b/lib/blkid/resolve.c @@ -79,22 +79,24 @@ char *blkid_get_devname(blkid_cache cache, const char *token, value ? value : "", cache ? "in cache" : "from disk")); if (!value) { - if (!strchr(token, '=')) - return blkid_strdup(token); + if (!strchr(token, '=')) { + ret = blkid_strdup(token); + goto out; + } blkid_parse_tag_string(token, &t, &v); if (!t || !v) - goto errout; + goto out; token = t; value = v; } dev = blkid_find_dev_with_tag(c, token, value); if (!dev) - goto errout; + goto out; ret = blkid_strdup(blkid_dev_devname(dev)); -errout: +out: if (t) free(t); if (v)