aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorJoseph Hunkeler <jhunkeler@gmail.com>2026-04-29 13:27:33 -0400
committerJoseph Hunkeler <jhunkeler@gmail.com>2026-05-11 15:55:11 -0400
commit94f67cb77eacaefbd5e3d47bbf5d99ce03c2dc9e (patch)
tree71cb98cc72ffbe4814e7543b31cb632dd3d6327d /src
parentbbc45830393375f8b15edffc147c16ab1f946a00 (diff)
downloadstasis-94f67cb77eacaefbd5e3d47bbf5d99ce03c2dc9e.tar.gz
wheel_package_free: fix NULL dereference in provides_extra loop
Diffstat (limited to 'src')
-rw-r--r--src/lib/core/wheel.c13
1 files changed, 7 insertions, 6 deletions
diff --git a/src/lib/core/wheel.c b/src/lib/core/wheel.c
index 2132818..4bd5c64 100644
--- a/src/lib/core/wheel.c
+++ b/src/lib/core/wheel.c
@@ -982,13 +982,14 @@ void wheel_metadata_free(struct WheelMetadata *meta) {
guard_strlist_free(&meta->requires_dist);
guard_strlist_free(&meta->keywords);
guard_strlist_free(&meta->license_file);
-
- for (size_t i = 0; meta->provides_extra[i] != NULL; i++) {
- guard_free(meta->provides_extra[i]->target);
- guard_strlist_free(&meta->provides_extra[i]->requires_dist);
- guard_free(meta->provides_extra[i]);
+ if (meta->provides_extra) {
+ for (size_t i = 0; meta->provides_extra[i] != NULL; i++) {
+ guard_free(meta->provides_extra[i]->target);
+ guard_strlist_free(&meta->provides_extra[i]->requires_dist);
+ guard_free(meta->provides_extra[i]);
+ }
+ guard_free(meta->provides_extra);
}
- guard_free(meta->provides_extra);
guard_free(meta);
}