From 911428cd5ff2a3007da560ec7bbc0337a6eb4b8b Mon Sep 17 00:00:00 2001 From: Delyan Angelov Date: Tue, 20 Aug 2024 19:15:29 +0300 Subject: [PATCH] parser: fix another panic, affecting recast_as_pointer (discovered by fuzzing with radamsa) --- vlib/v/parser/parse_type.v | 3 +++ .../silent/radamsa_invalid_prinln_invalid_utf8_vfmt_off.vv | 6 ++++++ 2 files changed, 9 insertions(+) create mode 100644 vlib/v/parser/testdata/silent/radamsa_invalid_prinln_invalid_utf8_vfmt_off.vv diff --git a/vlib/v/parser/parse_type.v b/vlib/v/parser/parse_type.v index c5cbf68f8..a333c62e2 100644 --- a/vlib/v/parser/parse_type.v +++ b/vlib/v/parser/parse_type.v @@ -882,6 +882,9 @@ fn (mut p Parser) parse_generic_inst_type(name string) ast.Type { if gt.has_flag(.generic) { is_instance = false } + if gt == 0 { + return ast.void_type + } gts := p.table.sym(gt) if gts.kind == .multi_return { p.error_with_pos('cannot use multi return as generic concrete type', type_pos) diff --git a/vlib/v/parser/testdata/silent/radamsa_invalid_prinln_invalid_utf8_vfmt_off.vv b/vlib/v/parser/testdata/silent/radamsa_invalid_prinln_invalid_utf8_vfmt_off.vv new file mode 100644 index 000000000..0b510e7aa --- /dev/null +++ b/vlib/v/parser/testdata/silent/radamsa_invalid_prinln_invalid_utf8_vfmt_off.vv @@ -0,0 +1,6 @@ +println('Hello, Wotln('Hell<, Wotln('Hello, World!') +println('Hello, Wotln('Hell<, Wotln('Hello, World!') +println('Hello, Wotln('Hell<, Wotln('Hello, World!') +println('Hello, Wotln('Hellprintln('Hello, Wotln('Hell<, Wotln('Hello, World!à) +println('Helloprintln('HelloÀ¬ Worrld!'À© +,À Wœtlo('') -- 2.39.5