Commit bb6672b6aba1cb45a10d52bec828e68379e9ad61

Theo Buehler 2022-04-14T11:51:32

make sure callers of got_object_idset_add() free data.

diff --git a/lib/pack_create.c b/lib/pack_create.c
index b52856e..4e9a9b9 100644
--- a/lib/pack_create.c
+++ b/lib/pack_create.c
@@ -867,11 +867,19 @@ add_object(int want_meta, struct got_object_idset *idset,
 		(*nfound)++;
 		err = report_progress(progress_cb, progress_arg, rl,
 		    *ncolored, *nfound, *ntrees, 0L, 0, 0, 0, 0);
-		if (err)
+		if (err) {
+			clear_meta(m);
+			free(m);
 			return err;
+		}
 	}
 
-	return got_object_idset_add(idset, id, m);
+	err = got_object_idset_add(idset, id, m);
+	if (err) {
+		clear_meta(m);
+		free(m);
+	}
+	return err;
 }
 
 static const struct got_error *
diff --git a/lib/reference.c b/lib/reference.c
index ea1f566..8616b4e 100644
--- a/lib/reference.c
+++ b/lib/reference.c
@@ -1569,8 +1569,10 @@ add_object_id_map_entry(struct got_object_idset *idset,
 
 		TAILQ_INIT(&ent->refs);
 		err = got_object_idset_add(idset, id, ent);
-		if (err)
+		if (err) {
+			free(ent);
 			return err;
+		}
 	}
 
 	err = got_reflist_entry_dup(&new, re);