From a05c2fd52744bc6306b38b4c7b6b6310e1ea74a4 Mon Sep 17 00:00:00 2001 From: Patrick McDermott Date: Sun, 30 Jul 2023 21:57:23 -0400 Subject: ustar: Add function to free member structure --- diff --git a/opkg-opk/opk/read.c b/opkg-opk/opk/read.c index e079b94..9d6bb40 100644 --- a/opkg-opk/opk/read.c +++ b/opkg-opk/opk/read.c @@ -171,7 +171,7 @@ _opkg_opk_opk_read_control(struct opkg_opk_opk *opk) buffer += 2; } if (buffer[0] == '\0') { - free(member); + opkg_opk_ustar_member_free(member); continue; } @@ -179,7 +179,7 @@ _opkg_opk_opk_read_control(struct opkg_opk_opk *opk) if (member->type != '-') { opkg_opk_error(_("Non-regular control files not " "supported")); - free(member); + opkg_opk_ustar_member_free(member); _opkg_opk_opk_read_free_inner(opk); if (opk->control_dir != NULL) { # pragma GCC diagnostic push @@ -198,7 +198,7 @@ _opkg_opk_opk_read_control(struct opkg_opk_opk *opk) "-Wanalyzer-use-of-uninitialized-value" if (sprintf(path, "%s/%s", opk->control_dir, member->name) <= 0) { - free(member); + opkg_opk_ustar_member_free(member); _opkg_opk_opk_read_free_inner(opk); free(path); return OPKG_OPK_ERROR; @@ -215,7 +215,7 @@ _opkg_opk_opk_read_control(struct opkg_opk_opk *opk) if (fp == NULL) { opkg_opk_error(_("Failed to extract control " "file")); - free(member); + opkg_opk_ustar_member_free(member); _opkg_opk_opk_read_free_inner(opk); # pragma GCC diagnostic push # pragma GCC diagnostic ignored \ @@ -243,7 +243,7 @@ _opkg_opk_opk_read_control(struct opkg_opk_opk *opk) } else { print = 0; } - free(member); + opkg_opk_ustar_member_free(member); if (print == 1 && opk->previously_printed == 1) { puts(""); } @@ -413,7 +413,7 @@ _opkg_opk_opk_read_data(struct opkg_opk_opk *opk) if (opk->print_data_head == NULL) { if (opk->list_data == 0) { - free(member); + opkg_opk_ustar_member_free(member); } continue; } @@ -423,12 +423,12 @@ _opkg_opk_opk_read_data(struct opkg_opk_opk *opk) OPKG_OPK_OK) { /* Name not requested for printing. */ if (opk->list_data == 0) { - free(member); + opkg_opk_ustar_member_free(member); } continue; } if (opk->list_data == 0) { - free(member); + opkg_opk_ustar_member_free(member); } if (opk->previously_printed == 1) { puts(""); @@ -544,7 +544,7 @@ _opkg_opk_opk_read_data(struct opkg_opk_opk *opk) } head = member; member = member->next; - free(head); + opkg_opk_ustar_member_free(head); } opk->previously_printed = 1; @@ -597,13 +597,13 @@ opkg_opk_opk_read(struct opkg_opk_opk *opk, const char *file_name) goto out3; } if (strcmp(member->name, "debian-binary") != 0) { - free(member); + opkg_opk_ustar_member_free(member); opkg_opk_error(_("Failed to find \"debian-binary\" in archive") ); ret = OPKG_OPK_ERROR; goto out3; } - free(member); + opkg_opk_ustar_member_free(member); if (opkg_opk_ustar_read(opk->outer_ustar, &version_buffer, &version_size) != OPKG_OPK_OK) { @@ -625,12 +625,12 @@ opkg_opk_opk_read(struct opkg_opk_opk *opk, const char *file_name) return OPKG_OPK_ERROR; } if (strcmp(member->name, "control.tar.gz") != 0) { - free(member); + opkg_opk_ustar_member_free(member); opkg_opk_error(_("Failed to find \"control.tar.gz\" in archive") ); return OPKG_OPK_ERROR; } - free(member); + opkg_opk_ustar_member_free(member); if (_opkg_opk_opk_read_control(opk) != OPKG_OPK_OK) { ret = OPKG_OPK_ERROR; goto out3; @@ -642,11 +642,11 @@ opkg_opk_opk_read(struct opkg_opk_opk *opk, const char *file_name) return OPKG_OPK_ERROR; } if (strcmp(member->name, "data.tar.gz") != 0) { - free(member); + opkg_opk_ustar_member_free(member); opkg_opk_error(_("Failed to find \"data.tar.gz\" in archive")); return OPKG_OPK_ERROR; } - free(member); + opkg_opk_ustar_member_free(member); if (_opkg_opk_opk_read_data(opk) != OPKG_OPK_OK) { ret = OPKG_OPK_ERROR; goto out3; diff --git a/opkg-opk/ustar.c b/opkg-opk/ustar.c index 5f6874a..5a202c7 100644 --- a/opkg-opk/ustar.c +++ b/opkg-opk/ustar.c @@ -440,6 +440,12 @@ opkg_opk_ustar_write_trailer(struct opkg_opk_ustar *ustar) } void +opkg_opk_ustar_member_free(struct opkg_opk_ustar_member *member) +{ + free(member); +} + +void opkg_opk_ustar_free(struct opkg_opk_ustar *ustar) { free(ustar); diff --git a/opkg-opk/ustar.h b/opkg-opk/ustar.h index 4a3dc1a..234964c 100644 --- a/opkg-opk/ustar.h +++ b/opkg-opk/ustar.h @@ -63,7 +63,7 @@ opkg_opk_ustar_init(struct opkg_opk_gzip *gzip); * Parameters: * - ustar: Archive structure. * - member: Address in which to store address of allocated member structure. - * Free with free(). + * Free with opkg_opk_ustar_member_free(). * Returns: * - OPKG_OPK_OK if a member was listed. More members may exist. * - OPKG_OPK_END if no more members exist. Parameter "member" is unchanged. @@ -107,6 +107,14 @@ int opkg_opk_ustar_write_trailer(struct opkg_opk_ustar *ustar); /* + * Frees a member structure. + * Parameters: + * - member: Member structure. + */ +void +opkg_opk_ustar_member_free(struct opkg_opk_ustar_member *member); + +/* * Frees an archive structure. * Parameters: * - ustar: Archive structure. -- cgit v0.9.1