{"record":{"id":"efb8b001de3603ed","repo":"XTLS/Xray-core","slug":"padding-turn-length-d-is-outside-d-d","errorCode":null,"errorMessage":"padding turn length %d is outside %d-%d","messagePattern":"padding turn length (.+?) is outside (.+?)-(.+?)","errorType":"validation","errorClass":null,"httpStatus":null,"severity":"error","filePath":"transport/internet/finalmask/xmc/padding.go","lineNumber":239,"sourceCode":"\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 {\n\t\t\treturn fmt.Errorf(\"read padding body: %w\", err)\n\t\t}\n\t\tremaining -= chunkLength\n\t}\n\treturn nil\n}\n\nfunc selectPaddingVariant(turn paddingTurn, prefixLength int) (int, []int, []paddingDelayRange, error) {\n\tif len(turn.variants) == 0 {\n\t\tminimum, maximum := turn.minLength, turn.maxLength\n\t\tif turn.sendMinLength != 0 || turn.sendMaxLength != 0 {","sourceCodeStart":221,"sourceCodeEnd":257,"githubUrl":"https://github.com/XTLS/Xray-core/blob/7d214f8b094f75322fa3990f8aadad1c912f24f5/transport/internet/finalmask/xmc/padding.go#L221-L257","documentation":"Error \"padding turn length %d is outside %d-%d\" thrown in XTLS/Xray-core.","triggerScenarios":"Thrown at transport/internet/finalmask/xmc/padding.go:239 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"}