diff options
| author | Joseph Hunkeler <jhunkeler@gmail.com> | 2026-05-12 11:01:37 -0400 |
|---|---|---|
| committer | Joseph Hunkeler <jhunkeler@gmail.com> | 2026-05-12 11:01:37 -0400 |
| commit | 2dbf196d3147fd87e0539a45e01a98e4d719389f (patch) | |
| tree | bc7a5a043b4465ad3b8f61062695fbd3819e4cbb /src/lib | |
| parent | 77aedfe62eba8e2d3beca7a3ada7c29aa8d09e09 (diff) | |
| download | stasis-2dbf196d3147fd87e0539a45e01a98e4d719389f.tar.gz | |
Usable lines denote the number of entries
* reduce complexity
* 'x' should not overflow
Diffstat (limited to 'src/lib')
| -rw-r--r-- | src/lib/core/wheel.c | 9 |
1 files changed, 6 insertions, 3 deletions
diff --git a/src/lib/core/wheel.c b/src/lib/core/wheel.c index 2162dae..e94060a 100644 --- a/src/lib/core/wheel.c +++ b/src/lib/core/wheel.c @@ -1133,16 +1133,16 @@ int wheel_get_entry_point(struct Wheel *pkg, const char *filename) { usable_lines--; } } + pkg->num_entry_point = usable_lines; - pkg->entry_point = calloc(usable_lines + 1, sizeof(*pkg->entry_point)); + pkg->entry_point = calloc(pkg->num_entry_point + 1, sizeof(*pkg->entry_point)); if (!pkg->entry_point) { goto GEP_FAIL; } - for (size_t i = 0; i < usable_lines; i++) { + for (size_t i = 0; i < pkg->num_entry_point; i++) { pkg->entry_point[i] = calloc(1, sizeof(*pkg->entry_point[0])); if (!pkg->entry_point[i]) { - guard_array_n_free(pkg->entry_point, usable_lines + 1); goto GEP_FAIL; } } @@ -1198,6 +1198,9 @@ int wheel_get_entry_point(struct Wheel *pkg, const char *filename) { return 0; GEP_FAIL: + if (pkg->entry_point) { + guard_array_n_free(pkg->entry_point, pkg->num_entry_point); + } guard_strlist_free(&lines); guard_free(data); return -1; |
