commit f97edf0cbcf2ee1ea1d71a162699f0be79bd0400 from: Florian Obser date: Thu Jul 21 05:40:56 2022 UTC Make sure got_repo_pack_fds_close() frees a malloc'ed pointer. Found by llvm's scan-build (bad free). OK stsp commit - 2edc2f9dc130b3033b3ac7fe72754b2e6ef15dc7 commit + f97edf0cbcf2ee1ea1d71a162699f0be79bd0400 blob - 1df2b67a5d1be7e6d8c93905c0833dd40165bc3b blob + 1afcaaffa734eb472002229d279079cb970029da --- lib/repository.c +++ lib/repository.c @@ -252,11 +252,16 @@ const struct got_error * got_repo_pack_fds_open(int **pack_fds) { const struct got_error *err = NULL; - int i, pack_fds_tmp[GOT_PACK_NUM_TEMPFILES]; + int i, *pack_fds_tmp; + pack_fds_tmp = calloc(GOT_PACK_NUM_TEMPFILES, sizeof(int)); + if (pack_fds_tmp == NULL) + return got_error_from_errno("calloc"); *pack_fds = calloc(GOT_PACK_NUM_TEMPFILES, sizeof(**pack_fds)); - if (*pack_fds == NULL) + if (*pack_fds == NULL) { + free(pack_fds_tmp); return got_error_from_errno("calloc"); + } for (i = 0; i < GOT_PACK_NUM_TEMPFILES; i++) { pack_fds_tmp[i] = got_opentempfd(); @@ -266,7 +271,7 @@ got_repo_pack_fds_open(int **pack_fds) return err; } } - memcpy(*pack_fds, pack_fds_tmp, sizeof(pack_fds_tmp)); + memcpy(*pack_fds, pack_fds_tmp, GOT_PACK_NUM_TEMPFILES * sizeof(int)); return err; }