{"record":{"id":"f910accf0d5da317","repo":"prestodb/presto","slug":"invalid-header-name-s","errorCode":null,"errorMessage":"Invalid header name: %s","messagePattern":"Invalid header name: (.+?)","errorType":"validation","errorClass":"IllegalArgumentException","httpStatus":null,"severity":"error","filePath":"presto-main/src/main/java/com/facebook/presto/server/AsyncPageTransportServlet.java","lineNumber":137,"sourceCode":"        response.sendError(SC_BAD_REQUEST, message);\n    }\n\n    protected void parseURI(String requestURI, HttpServletRequest request, HttpServletResponse response)\n            throws IOException\n    {\n        // Split a task URI without allocating a list and unnecessary strings\n        // Example:  /v1/task/async/{taskId}/results/{bufferId}/{token}\n        TaskId taskId = null;\n        OutputBufferId bufferId = null;\n        long token = 0;\n\n        if (request != null) {\n            Enumeration<String> headerNames = request.getHeaderNames();\n            while (headerNames.hasMoreElements()) {\n                String headerName = headerNames.nextElement();\n                String headerValue = request.getHeader(headerName);\n                if (headerName.contains(\"\\r\") || headerName.contains(\"\\n\")) {\n                    throw new IllegalArgumentException(format(\"Invalid header name: %s\", headerName));\n                }\n                if (headerValue.contains(\"\\r\") || headerValue.contains(\"\\n\")) {\n                    throw new IllegalArgumentException(format(\"Invalid header value: %s\", headerValue));\n                }\n            }\n        }\n\n        int previousIndex = -1;\n        for (int part = 0; part < 8; part++) {\n            int nextIndex = requestURI.indexOf('/', previousIndex + 1);\n\n            if (nextIndex == -1 && part != 7 || nextIndex != -1 && part == 7) {\n                reportFailure(response, format(\"Unexpected URI for task result request in async mode: %s\", requestURI));\n                return;\n            }\n\n            switch (part) {\n                case 4:","sourceCodeStart":119,"sourceCodeEnd":155,"githubUrl":"https://github.com/prestodb/presto/blob/55bb57d202de3b926896fa966c2c4a44c779634e/presto-main/src/main/java/com/facebook/presto/server/AsyncPageTransportServlet.java#L119-L155","documentation":"AsyncPageTransportServlet.parseURI rejects a request header whose name fails HTTP header-name validation while forwarding extra headers into the page response; the offending name is included and the request is answered with 400 Bad Request.","triggerScenarios":"Thrown at presto-main/src/main/java/com/facebook/presto/server/AsyncPageTransportServlet.java:137 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Fix the client/proxy that injects the malformed header name"],"exampleFix":null,"handlingStrategy":"validation","validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"55bb57d202de3b926896fa966c2c4a44c779634e","analyzedAt":"2026-09-04T12:50:26.162Z","contentChangedAt":"2026-09-04T12:50:26.162Z","schemaVersion":2},"datasetVersion":"2026-09-11T21:17:09.523Z"}