aboutsummaryrefslogtreecommitdiff
path: root/e2fsprogs/blkid/tag.c
diff options
context:
space:
mode:
Diffstat (limited to 'e2fsprogs/blkid/tag.c')
-rw-r--r--e2fsprogs/blkid/tag.c18
1 files changed, 6 insertions, 12 deletions
diff --git a/e2fsprogs/blkid/tag.c b/e2fsprogs/blkid/tag.c
index e2c785cf0..95112eba5 100644
--- a/e2fsprogs/blkid/tag.c
+++ b/e2fsprogs/blkid/tag.c
@@ -41,11 +41,8 @@ void blkid_free_tag(blkid_tag tag)
41 list_del(&tag->bit_tags); /* list of tags for this device */ 41 list_del(&tag->bit_tags); /* list of tags for this device */
42 list_del(&tag->bit_names); /* list of tags with this type */ 42 list_del(&tag->bit_names); /* list of tags with this type */
43 43
44 if (tag->bit_name) 44 free(tag->bit_name);
45 free(tag->bit_name); 45 free(tag->bit_val);
46 if (tag->bit_val)
47 free(tag->bit_val);
48
49 free(tag); 46 free(tag);
50} 47}
51 48
@@ -112,8 +109,7 @@ int blkid_set_tag(blkid_dev dev, const char *name,
112 return -BLKID_ERR_MEM; 109 return -BLKID_ERR_MEM;
113 t = blkid_find_tag_dev(dev, name); 110 t = blkid_find_tag_dev(dev, name);
114 if (!value) { 111 if (!value) {
115 if (t) 112 blkid_free_tag(t);
116 blkid_free_tag(t);
117 } else if (t) { 113 } else if (t) {
118 if (!strcmp(t->bit_val, val)) { 114 if (!strcmp(t->bit_val, val)) {
119 /* Same thing, exit */ 115 /* Same thing, exit */
@@ -165,12 +161,10 @@ int blkid_set_tag(blkid_dev dev, const char *name,
165 return 0; 161 return 0;
166 162
167errout: 163errout:
168 if (t) 164 blkid_free_tag(t);
169 blkid_free_tag(t); 165 if (!t)
170 else if (val)
171 free(val); 166 free(val);
172 if (head) 167 blkid_free_tag(head);
173 blkid_free_tag(head);
174 return -BLKID_ERR_MEM; 168 return -BLKID_ERR_MEM;
175} 169}
176 170