Fix possible uninitialised value dereference if jq_init() fails
If jq_init() fails, goto out would try to free input_state which is uninitialised. I initialised input_state to NULL to fix the problem. Ref: https://github.com/jqlang/jq/pull/2934#discussion_r1367795641 Reported-By: Klemens Nanni <kn@openbsd.org>
This commit is contained in:
1 parent
7ab117a483
commit
e85e358233
1 file changed
+3
-2
+3
-2
@@ -310,6 +310,7 @@ int umain(int argc, char* argv[]) {
|
|||||||
int main(int argc, char* argv[]) {
|
int main(int argc, char* argv[]) {
|
||||||
#endif
|
#endif
|
||||||
jq_state *jq = NULL;
|
jq_state *jq = NULL;
|
||||||
|
jq_util_input_state *input_state = NULL;
|
||||||
int ret = JQ_OK_NO_OUTPUT;
|
int ret = JQ_OK_NO_OUTPUT;
|
||||||
int compiled = 0;
|
int compiled = 0;
|
||||||
int parser_flags = 0;
|
int parser_flags = 0;
|
||||||
@@ -344,7 +345,7 @@ int main(int argc, char* argv[]) {
|
|||||||
|
|
||||||
jq = jq_init();
|
jq = jq_init();
|
||||||
if (jq == NULL) {
|
if (jq == NULL) {
|
||||||
perror("malloc");
|
perror("jq_init");
|
||||||
ret = JQ_ERROR_SYSTEM;
|
ret = JQ_ERROR_SYSTEM;
|
||||||
goto out;
|
goto out;
|
||||||
}
|
}
|
||||||
@@ -352,7 +353,7 @@ int main(int argc, char* argv[]) {
|
|||||||
int dumpopts = JV_PRINT_INDENT_FLAGS(2);
|
int dumpopts = JV_PRINT_INDENT_FLAGS(2);
|
||||||
const char* program = 0;
|
const char* program = 0;
|
||||||
|
|
||||||
jq_util_input_state *input_state = jq_util_input_init(NULL, NULL); // XXX add err_cb
|
input_state = jq_util_input_init(NULL, NULL); // XXX add err_cb
|
||||||
|
|
||||||
int further_args_are_strings = 0;
|
int further_args_are_strings = 0;
|
||||||
int further_args_are_json = 0;
|
int further_args_are_json = 0;
|
||||||
|
|||||||
Reference in new issue
Block a user