Skip to content

Commit

Permalink
Make jq_get_lib_dirs return an empty array if JQ_LIBRARY_PATH is not set
Browse files Browse the repository at this point in the history
For the jq_state used by the jq utility, the JQ_LIBRARY_PATH attribute
will always be set, but, in general, it is possible that it might not
be.

If it is not set, jq_get_lib_dirs() will return jv_invalid().

That is not good, because some code in linker.c expects it to always
returns an array.

This patch makes jq_get_lib_dirs() return an empty array if
JQ_LIBRARY_PATH is not set to prevent problems.

This issue made OSS fuzz trigger failed assertions every time it tried
to compile a script that uses "include".

Fixes https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=61796
  • Loading branch information
emanuele6 authored and nicowilliams committed Aug 27, 2023
1 parent 6436f1e commit ab47880
Showing 1 changed file with 2 additions and 1 deletion.
3 changes: 2 additions & 1 deletion src/execute.c
Original file line number Diff line number Diff line change
Expand Up @@ -1267,7 +1267,8 @@ jv jq_get_prog_origin(jq_state *jq) {
}

jv jq_get_lib_dirs(jq_state *jq) {
return jq_get_attr(jq, jv_string("JQ_LIBRARY_PATH"));
jv lib_dirs = jq_get_attr(jq, jv_string("JQ_LIBRARY_PATH"));
return jv_is_valid(lib_dirs) ? lib_dirs : jv_array();
}

void jq_set_attrs(jq_state *jq, jv attrs) {
Expand Down

0 comments on commit ab47880

Please sign in to comment.