|
| 1 | +From 5d26749e30c14254dabd04cb2b408d1484de2c14 Mon Sep 17 00:00:00 2001 |
| 2 | +From: archana25-ms <v-shettigara@microsoft.com> |
| 3 | +Date: Wed, 7 May 2025 07:27:13 +0000 |
| 4 | +Subject: [PATCH] Address CVE-2024-34155 |
| 5 | +Upstream Patch Reference: https://github.com/golang/go/commit/b232596139dbe96a62edbe3a2a203e856bf556eb |
| 6 | + |
| 7 | +--- |
| 8 | + src/go/parser/parser.go | 2 ++ |
| 9 | + src/go/parser/parser_test.go | 9 +++++---- |
| 10 | + 2 files changed, 7 insertions(+), 4 deletions(-) |
| 11 | + |
| 12 | +diff --git a/src/go/parser/parser.go b/src/go/parser/parser.go |
| 13 | +index c34ccea..ea81cfc 100644 |
| 14 | +--- a/src/go/parser/parser.go |
| 15 | ++++ b/src/go/parser/parser.go |
| 16 | +@@ -1685,6 +1685,8 @@ func (p *parser) checkExprOrType(x ast.Expr) ast.Expr { |
| 17 | + } |
| 18 | + |
| 19 | + func (p *parser) parsePrimaryExpr(x ast.Expr) ast.Expr { |
| 20 | ++ defer decNestLev(incNestLev(p)) |
| 21 | ++ |
| 22 | + if p.trace { |
| 23 | + defer un(trace(p, "PrimaryExpr")) |
| 24 | + } |
| 25 | +diff --git a/src/go/parser/parser_test.go b/src/go/parser/parser_test.go |
| 26 | +index 1a46c87..9e4ce35 100644 |
| 27 | +--- a/src/go/parser/parser_test.go |
| 28 | ++++ b/src/go/parser/parser_test.go |
| 29 | +@@ -607,10 +607,11 @@ var parseDepthTests = []struct { |
| 30 | + {name: "chan2", format: "package main; var x «<-chan »int"}, |
| 31 | + {name: "interface", format: "package main; var x «interface { M() «int» }»", scope: true, scopeMultiplier: 2}, // Scopes: InterfaceType, FuncType |
| 32 | + {name: "map", format: "package main; var x «map[int]»int"}, |
| 33 | +- {name: "slicelit", format: "package main; var x = «[]any{«»}»", parseMultiplier: 2}, // Parser nodes: UnaryExpr, CompositeLit |
| 34 | +- {name: "arraylit", format: "package main; var x = «[1]any{«nil»}»", parseMultiplier: 2}, // Parser nodes: UnaryExpr, CompositeLit |
| 35 | +- {name: "structlit", format: "package main; var x = «struct{x any}{«nil»}»", parseMultiplier: 2}, // Parser nodes: UnaryExpr, CompositeLit |
| 36 | +- {name: "maplit", format: "package main; var x = «map[int]any{1:«nil»}»", parseMultiplier: 2}, // Parser nodes: CompositeLit, KeyValueExpr |
| 37 | ++ {name: "slicelit", format: "package main; var x = []any{«[]any{«»}»}", parseMultiplier: 3}, // Parser nodes: UnaryExpr, CompositeLit |
| 38 | ++ {name: "arraylit", format: "package main; var x = «[1]any{«nil»}»", parseMultiplier: 3}, // Parser nodes: UnaryExpr, CompositeLit |
| 39 | ++ {name: "structlit", format: "package main; var x = «struct{x any}{«nil»}»", parseMultiplier: 3}, // Parser nodes: UnaryExpr, CompositeLit |
| 40 | ++ {name: "maplit", format: "package main; var x = «map[int]any{1:«nil»}»", parseMultiplier: 3}, // Parser nodes: CompositeLit, KeyValueExpr |
| 41 | ++ {name: "element", format: "package main; var x = struct{x any}{x: «{«»}»}"}, |
| 42 | + {name: "dot", format: "package main; var x = «x.»x"}, |
| 43 | + {name: "index", format: "package main; var x = x«[1]»"}, |
| 44 | + {name: "slice", format: "package main; var x = x«[1:2]»"}, |
| 45 | +-- |
| 46 | +2.45.3 |
| 47 | + |
0 commit comments