]> Cypherpunks repositories - gostls13.git/commitdiff
cmd/trace: handle invalid goid para in /trace
authorHana (Hyang-Ah) Kim <hyangah@gmail.com>
Wed, 2 May 2018 00:01:00 +0000 (20:01 -0400)
committerHyang-Ah Hana Kim <hyangah@gmail.com>
Tue, 8 May 2018 19:25:01 +0000 (19:25 +0000)
Change-Id: I1cb7c8b70a5ae16386f6abb577c23d821f7ff7f0
Reviewed-on: https://go-review.googlesource.com/112197
Reviewed-by: Peter Weinberger <pjw@google.com>
Run-TryBot: Hyang-Ah Hana Kim <hyangah@gmail.com>

src/cmd/trace/trace.go

index fcba0cbc3fb3d87b39daac637f754cbd055ca88f..31ef3b6892391beab7bf6f9587bbbb89d8d9af39 100644 (file)
@@ -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
                }
        }