From 60a8468dde682a4736123a03ea632e99afc140bf Mon Sep 17 00:00:00 2001 From: Delyan Angelov Date: Tue, 20 Aug 2024 18:48:13 +0300 Subject: [PATCH] parser: fix another parser panic, discovered through fuzzing with radamsa --- vlib/v/parser/expr.v | 6 +++++- .../silent/radamsa_invalid_prinln_nonsense_vfmt_off.vv | 1 + 2 files changed, 6 insertions(+), 1 deletion(-) create mode 100644 vlib/v/parser/testdata/silent/radamsa_invalid_prinln_nonsense_vfmt_off.vv diff --git a/vlib/v/parser/expr.v b/vlib/v/parser/expr.v index 01391e3ac..f515654ae 100644 --- a/vlib/v/parser/expr.v +++ b/vlib/v/parser/expr.v @@ -825,7 +825,11 @@ fn (mut p Parser) prefix_expr() ast.Expr { fn (mut p Parser) recast_as_pointer(mut cast_expr ast.CastExpr, pos token.Pos) { cast_expr.typ = cast_expr.typ.ref() - cast_expr.typname = p.table.sym(cast_expr.typ).name + cast_expr.typname = if cast_expr.typ == 0 { + p.table.sym(cast_expr.typ).name + } else { + 'unknown type name' + } cast_expr.pos = pos.extend(cast_expr.pos) } diff --git a/vlib/v/parser/testdata/silent/radamsa_invalid_prinln_nonsense_vfmt_off.vv b/vlib/v/parser/testdata/silent/radamsa_invalid_prinln_nonsense_vfmt_off.vv new file mode 100644 index 000000000..052a65ac3 --- /dev/null +++ b/vlib/v/parser/testdata/silent/radamsa_invalid_prinln_nonsense_vfmt_off.vv @@ -0,0 +1 @@ +println(&Held|!&) -- 2.39.5