{"record":{"id":"b4b2c936b076d4d7","repo":"XTLS/Xray-core","slug":"read-padding-header-w","errorCode":null,"errorMessage":"read padding header: %w","messagePattern":"read padding header: %w","errorType":"exception","errorClass":null,"httpStatus":null,"severity":"error","filePath":"transport/internet/finalmask/xmc/padding.go","lineNumber":228,"sourceCode":"\t\t}\n\t\tif err = writeFull(w, buffer[:chunkLength]); err != nil {\n\t\t\treturn fmt.Errorf(\"write padding chunk %d: %w\", i, err)\n\t\t}\n\t\twritten += chunkLength\n\t\tif i == 0 {\n\t\t\tclear(buffer[:header.Len()])\n\t\t}\n\t}\n\tif written != recordLength {\n\t\treturn fmt.Errorf(\"padding chunks total %d, want %d\", written, recordLength)\n\t}\n\treturn nil\n}\n\nfunc readPaddingTurn(r io.Reader, turn paddingTurn, prefixLength int) error {\n\tencodedLength, headerLength, err := readVarintWithLength(r)\n\tif err != nil {\n\t\treturn fmt.Errorf(\"read padding header: %w\", err)\n\t}\n\trecordLength := int(encodedLength)\n\tif recordLength < headerLength || recordLength > maxPaddingTurnLength {\n\t\treturn fmt.Errorf(\"invalid padding record length: %d\", recordLength)\n\t}\n\ttotalLength := prefixLength + recordLength\n\tif !paddingTurnAcceptsLength(turn, totalLength) {\n\t\tif len(turn.variants) > 0 {\n\t\t\treturn fmt.Errorf(\"padding turn length %d is not an allowed variant\", totalLength)\n\t\t}\n\t\treturn fmt.Errorf(\"padding turn length %d is outside %d-%d\", totalLength, turn.minLength, turn.maxLength)\n\t}\n\n\tvar buffer [paddingBufferLength]byte\n\tremaining := recordLength - headerLength\n\tfor remaining > 0 {\n\t\tchunkLength := min(remaining, len(buffer))\n\t\tif _, err := io.ReadFull(r, buffer[:chunkLength]); err != nil {","sourceCodeStart":210,"sourceCodeEnd":246,"githubUrl":"https://github.com/XTLS/Xray-core/blob/7d214f8b094f75322fa3990f8aadad1c912f24f5/transport/internet/finalmask/xmc/padding.go#L210-L246","documentation":"Error \"read padding header: %w\" thrown in XTLS/Xray-core.","triggerScenarios":"Thrown at transport/internet/finalmask/xmc/padding.go:228 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":[],"exampleFix":null,"handlingStrategy":null,"validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"7d214f8b094f75322fa3990f8aadad1c912f24f5","analyzedAt":"2026-08-15T14:26:24.325Z","schemaVersion":2},"datasetVersion":"2026-08-15T22:17:37.221Z"}