diff options
| author | Joseph Hunkeler <jhunkeler@gmail.com> | 2026-04-29 13:27:33 -0400 |
|---|---|---|
| committer | Joseph Hunkeler <jhunkeler@gmail.com> | 2026-04-29 13:27:33 -0400 |
| commit | 8cb9ffcb99e6e280d1b9e7c3abe9397d12a8be82 (patch) | |
| tree | 6cfebfba86ce4697a39765a6f776f21369819797 | |
| parent | 17767f81876e781109ac06d174dbdc0c164fabf0 (diff) | |
| download | stasis-8cb9ffcb99e6e280d1b9e7c3abe9397d12a8be82.tar.gz | |
wheel_package_free: fix NULL dereference in provides_extra loop
| -rw-r--r-- | src/lib/core/wheel.c | 13 |
1 files changed, 7 insertions, 6 deletions
diff --git a/src/lib/core/wheel.c b/src/lib/core/wheel.c index 91b1761..415def9 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); } |
