From: Hana (Hyang-Ah) Kim Date: Wed, 2 May 2018 00:01:00 +0000 (-0400) Subject: cmd/trace: handle invalid goid para in /trace X-Git-Tag: go1.11beta1~477 X-Git-Url: http://www.git.cypherpunks.su/?a=commitdiff_plain;h=43b18f42410f427dbfa5b33cae88f6ef574bd547;p=gostls13.git cmd/trace: handle invalid goid para in /trace Change-Id: I1cb7c8b70a5ae16386f6abb577c23d821f7ff7f0 Reviewed-on: https://go-review.googlesource.com/112197 Reviewed-by: Peter Weinberger Run-TryBot: Hyang-Ah Hana Kim --- diff --git a/src/cmd/trace/trace.go b/src/cmd/trace/trace.go index fcba0cbc3f..31ef3b6892 100644 --- a/src/cmd/trace/trace.go +++ b/src/cmd/trace/trace.go @@ -185,11 +185,15 @@ func httpJsonTrace(w http.ResponseWriter, r *http.Request) { // If goid argument is present, we are rendering a trace for this particular goroutine. goid, err := strconv.ParseUint(goids, 10, 64) if err != nil { - log.Printf("failed to parse goid parameter '%v': %v", goids, err) + log.Printf("failed to parse goid parameter %q: %v", goids, err) return } analyzeGoroutines(res.Events) - g := gs[goid] + g, ok := gs[goid] + if !ok { + log.Printf("failed to find goroutine %d", goid) + return + } params.mode = modeGoroutineOriented params.startTime = g.StartTime if g.EndTime != 0 { @@ -249,12 +253,12 @@ func httpJsonTrace(w http.ResponseWriter, r *http.Request) { // If start/end arguments are present, we are rendering a range of the trace. start, err = strconv.ParseInt(startStr, 10, 64) if err != nil { - log.Printf("failed to parse start parameter '%v': %v", startStr, err) + log.Printf("failed to parse start parameter %q: %v", startStr, err) return } end, err = strconv.ParseInt(endStr, 10, 64) if err != nil { - log.Printf("failed to parse end parameter '%v': %v", endStr, err) + log.Printf("failed to parse end parameter %q: %v", endStr, err) return } }