commit 56866f4a1fa810c53b06c97db0f3db3888de1ff7 from: Stefan Sperling date: Sat Mar 17 14:27:00 2018 UTC fix resource leaks in error paths of got_object_blob_open() commit - d0f3be7ced58c524baf1ac738b44c04317bcb757 commit + 56866f4a1fa810c53b06c97db0f3db3888de1ff7 blob - e3b651dca5e235020e2814ac50e46f03139a6c9a blob + b1f7520044fe4677b1abf79fb72406632d489757 --- lib/object.c +++ lib/object.c @@ -747,11 +747,18 @@ got_object_blob_open(struct got_blob_object **blob, if (obj->flags & GOT_OBJ_FLAG_PACKED) { (*blob)->read_buf = calloc(1, blocksize); - if ((*blob)->read_buf == NULL) + if ((*blob)->read_buf == NULL) { + free(*blob); + *blob = NULL; return got_error(GOT_ERR_NO_MEM); + } err = got_packfile_extract_object(&((*blob)->f), obj, repo); - if (err) + if (err) { + free((*blob)->read_buf); + free(*blob); + *blob = NULL; return err; + } } else { err = open_loose_object(&((*blob)->f), obj, repo); if (err) { @@ -764,6 +771,7 @@ got_object_blob_open(struct got_blob_object **blob, if (err != NULL) { fclose((*blob)->f); free(*blob); + *blob = NULL; return err; }