{"record":{"id":"d7db665745c79335","repo":"googleapis/mcp-toolbox","slug":"range-q-is-missing","errorCode":null,"errorMessage":"range %q is missing '-'","messagePattern":"range %q is missing '-'","errorType":"validation","errorClass":null,"httpStatus":null,"severity":"error","filePath":"internal/tools/cloudstorage/cloudstoragereadobject/cloudstoragereadobject.go","lineNumber":171,"sourceCode":"//\n//\t\"\"           → (0, -1)       // full object\n//\t\"bytes=0-9\"  → (0, 10)       // first 10 bytes\n//\t\"bytes=10-\"  → (10, -1)      // from byte 10 to end\n//\t\"bytes=-N\"   → (-N, -1)      // last N bytes\nfunc parseRange(rangeSpec string) (offset int64, length int64, err error) {\n\tif rangeSpec == \"\" {\n\t\treturn 0, -1, nil\n\t}\n\n\tspec := strings.TrimSpace(rangeSpec)\n\tif !strings.HasPrefix(spec, \"bytes=\") {\n\t\treturn 0, 0, fmt.Errorf(\"range %q must start with 'bytes='\", rangeSpec)\n\t}\n\tspec = strings.TrimPrefix(spec, \"bytes=\")\n\n\tdash := strings.IndexByte(spec, '-')\n\tif dash < 0 {\n\t\treturn 0, 0, fmt.Errorf(\"range %q is missing '-'\", rangeSpec)\n\t}\n\n\tstartStr := spec[:dash]\n\tendStr := spec[dash+1:]\n\n\tswitch {\n\tcase startStr == \"\" && endStr == \"\":\n\t\treturn 0, 0, fmt.Errorf(\"range %q requires at least one bound\", rangeSpec)\n\n\tcase startStr == \"\":\n\t\tn, parseErr := strconv.ParseInt(endStr, 10, 64)\n\t\tif parseErr != nil || n <= 0 {\n\t\t\treturn 0, 0, fmt.Errorf(\"range %q has a bad suffix length\", rangeSpec)\n\t\t}\n\t\treturn -n, -1, nil\n\n\tcase endStr == \"\":\n\t\tstart, parseErr := strconv.ParseInt(startStr, 10, 64)","sourceCodeStart":153,"sourceCodeEnd":189,"githubUrl":"https://github.com/googleapis/mcp-toolbox/blob/8cc6e09de2ad7b8bffc77751799585a1401a48eb/internal/tools/cloudstorage/cloudstoragereadobject/cloudstoragereadobject.go#L153-L189","documentation":"Range-parser guard in parseRange: the spec after the 'bytes=' prefix contains no '-' separator, so it is neither a start-end, open-ended, nor suffix range.","triggerScenarios":"Thrown at internal/tools/cloudstorage/cloudstoragereadobject/cloudstoragereadobject.go:171 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Use the HTTP range syntax 'bytes=<start>-<end>', 'bytes=<start>-' or 'bytes=-<n>'","Omit the range parameter entirely to read the whole object"],"exampleFix":null,"handlingStrategy":"validation","validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"8cc6e09de2ad7b8bffc77751799585a1401a48eb","analyzedAt":"2026-09-05T01:10:36.887Z","contentChangedAt":"2026-09-05T01:10:36.887Z","schemaVersion":2},"datasetVersion":"2026-09-08T10:18:20.063Z"}