summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorEmanuele Torre <torreemanuele6@gmail.com>2023-08-26 23:30:47 +0200
committerNico Williams <nico@cryptonector.com>2023-08-26 17:17:29 -0500
commit6436f1e0f8687a65471f5fec07e85f64adaa66e9 (patch)
treee0a91ea0f69b93fc26d28c7c38ddf7e30a345abe /src
parent2c3561810d846efbf55de3b2444c78a8c125fc47 (diff)
Fix memory leak in find_lib for some invalid inputs
Diffstat (limited to 'src')
-rw-r--r--src/linker.c6
1 files changed, 6 insertions, 0 deletions
diff --git a/src/linker.c b/src/linker.c
index e86c2b4e..e7d1024c 100644
--- a/src/linker.c
+++ b/src/linker.c
@@ -136,16 +136,22 @@ static jv jv_basename(jv name) {
static jv find_lib(jq_state *jq, jv rel_path, jv search, const char *suffix, jv jq_origin, jv lib_origin) {
if (!jv_is_valid(rel_path)) {
jv_free(search);
+ jv_free(jq_origin);
+ jv_free(lib_origin);
return rel_path;
}
if (jv_get_kind(rel_path) != JV_KIND_STRING) {
jv_free(rel_path);
jv_free(search);
+ jv_free(jq_origin);
+ jv_free(lib_origin);
return jv_invalid_with_msg(jv_string_fmt("Module path must be a string"));
}
if (jv_get_kind(search) != JV_KIND_ARRAY) {
jv_free(rel_path);
jv_free(search);
+ jv_free(jq_origin);
+ jv_free(lib_origin);
return jv_invalid_with_msg(jv_string_fmt("Module search path must be an array"));
}