From 62ac01d5ed6bf0db995c38a999bc05ac835f3176 Mon Sep 17 00:00:00 2001 From: Masatake YAMATO Date: Sat, 8 Jan 2022 03:40:52 +0900 Subject: [PATCH 1/2] OpenAPI: move trace-print before inspecting token Signed-off-by: Masatake YAMATO --- parsers/openapi.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/parsers/openapi.c b/parsers/openapi.c index e9d34e2152..8a4a84d33d 100644 --- a/parsers/openapi.c +++ b/parsers/openapi.c @@ -271,8 +271,8 @@ static void openapiPlayStateMachine (struct sOpenAPISubparser *openapi, switch (openapi->play_detection_state) { case DSTAT_LAST_KEY: - openapi->type_stack->key = parseKey(token); TRACE_PRINT(" key: %s\n", (char*)token->data.scalar.value); + openapi->type_stack->key = parseKey(token); handleKey (openapi, token); break; case DSTAT_LAST_VALUE: From 1e85d24fbbeeea1675a39bbdd507631b116b2b9e Mon Sep 17 00:00:00 2001 From: Masatake YAMATO Date: Sat, 8 Jan 2022 03:49:34 +0900 Subject: [PATCH 2/2] OpenAPI: inspect token unless the type_stack is empty Signed-off-by: Masatake YAMATO --- Units/parser-openapi.r/crash-test.d/README | 6 ++++++ Units/parser-openapi.r/crash-test.d/input.yml | 1 + parsers/openapi.c | 7 +++++-- 3 files changed, 12 insertions(+), 2 deletions(-) create mode 100644 Units/parser-openapi.r/crash-test.d/README create mode 100644 Units/parser-openapi.r/crash-test.d/input.yml diff --git a/Units/parser-openapi.r/crash-test.d/README b/Units/parser-openapi.r/crash-test.d/README new file mode 100644 index 0000000000..0d2b11a720 --- /dev/null +++ b/Units/parser-openapi.r/crash-test.d/README @@ -0,0 +1,6 @@ +This is a crash test. +The code is derived from puppet/spec/fixtures/unit/data_providers/environments/hiera_bad_syntax_yaml/data/bad.yaml. + + REPO=https://github.com/puppetlabs/puppet.git + ALIGNMENT=6.2.0 + LANGUAGES=Ruby,PuppetManifest diff --git a/Units/parser-openapi.r/crash-test.d/input.yml b/Units/parser-openapi.r/crash-test.d/input.yml new file mode 100644 index 0000000000..c343a51c8a --- /dev/null +++ b/Units/parser-openapi.r/crash-test.d/input.yml @@ -0,0 +1 @@ +{x: diff --git a/parsers/openapi.c b/parsers/openapi.c index 8a4a84d33d..690f46228b 100644 --- a/parsers/openapi.c +++ b/parsers/openapi.c @@ -272,8 +272,11 @@ static void openapiPlayStateMachine (struct sOpenAPISubparser *openapi, { case DSTAT_LAST_KEY: TRACE_PRINT(" key: %s\n", (char*)token->data.scalar.value); - openapi->type_stack->key = parseKey(token); - handleKey (openapi, token); + if (openapi->type_stack) + { + openapi->type_stack->key = parseKey(token); + handleKey (openapi, token); + } break; case DSTAT_LAST_VALUE: TRACE_PRINT(" value: %s\n", (char*)token->data.scalar.value);