{"record":{"id":"91a7665c610081f4","repo":"quarkusio/quarkus","slug":"unsupported-parameter","errorCode":null,"errorMessage":"Unsupported parameter: ","messagePattern":"Unsupported parameter: ","errorType":"http","errorClass":"BadRequestException","httpStatus":400,"severity":"warning","filePath":"independent-projects/resteasy-reactive/server/runtime/src/main/java/org/jboss/resteasy/reactive/server/core/request/AcceptHeaders.java","lineNumber":56,"sourceCode":"            if (endIndex < 0) {\n                content = header.substring(offset);\n            } else {\n                content = header.substring(offset, endIndex);\n            }\n\n            QualityValue qualityValue = QualityValue.DEFAULT;\n            int qualityIndex = content.indexOf(';');\n            if (qualityIndex >= 0) {\n                String parameter = content.substring(qualityIndex + 1);\n                content = content.substring(0, qualityIndex);\n\n                int equalsIndex = parameter.indexOf('=');\n                if (equalsIndex < 0) {\n                    throw new BadRequestException(\"Malformed parameter: \" + parameter);\n                }\n                String name = parameter.substring(0, equalsIndex).trim();\n                if (!\"q\".equals(name)) {\n                    throw new BadRequestException(\"Unsupported parameter: \" + parameter);\n                }\n                String value = parameter.substring(equalsIndex + 1).trim();\n                qualityValue = QualityValue.valueOf(value);\n            }\n\n            content = content.trim();\n            if (content.length() == 0) {\n                throw new BadRequestException(\"Empty Field in header: \" + header);\n            }\n            if (content.equals(\"*\")) {\n                result.put(null, qualityValue);\n            } else {\n                result.put(content, qualityValue);\n            }\n\n            if (endIndex < 0) {\n                break;\n            }","sourceCodeStart":38,"sourceCodeEnd":74,"githubUrl":"https://github.com/quarkusio/quarkus/blob/e1c734241f34c7919086ceb4c9262b4a58f6de44/independent-projects/resteasy-reactive/server/runtime/src/main/java/org/jboss/resteasy/reactive/server/core/request/AcceptHeaders.java#L38-L74","documentation":"AcceptHeaders.getStringQualityValues() parses headers like Accept-Language and Accept-Charset into quality values. Each comma-separated item may carry parameters of the form name=value; only q (quality) is permitted. Any other parameter name triggers this BadRequestException.","triggerScenarios":"A client sends a header like 'Accept-Language: en;level=1' or 'Accept-Charset: utf-8;x=y' — a parameter whose name is not 'q'.","commonSituations":"Custom HTTP clients or proxies appending non-standard parameters; hand-written header values in tests; browser plugins or corporate middleware injecting parameters like 'level' or 'charset'.","solutions":["Remove or rename the unsupported parameter so only q=... remains in the header value","Fix the client/proxy that generates the header to emit RFC-compliant values","Sanitize/rewrite the header in a filter or proxy before it reaches the server"],"exampleFix":"// before\nAccept-Language: en;level=1\n// after\nAccept-Language: en;q=0.9","handlingStrategy":"validation","validationCode":"boolean hasOnlyQParams(String item) {\n    for (String p : item.split(\";\")) {\n        String t = p.trim();\n        if (t.isEmpty()) continue;\n        int eq = t.indexOf('=');\n        if (eq > 0 && !t.substring(0, eq).trim().equals(\"q\")) return false;\n    }\n    return true;\n}","typeGuard":"boolean isAcceptHeaderItemSafe(String header) {\n    return header != null && java.util.Arrays.stream(header.split(\",\"))\n        .allMatch(this::hasOnlyQParams);\n}","tryCatchPattern":"try {\n    AcceptHeaders.getStringQualityValues(header);\n} catch (BadRequestException e) {\n    log.warn(\"Rejecting malformed header: \" + e.getMessage());\n    // fall back to default negotiation\n}","preventionTips":["Only send q parameters in Accept-style headers","Validate client-generated headers in integration tests","Normalize headers at a gateway before they reach the server"],"tags":["http","header-parsing","bad-request"],"backgroundTag":"malformed-http-header","analyzedSha":"e1c734241f34c7919086ceb4c9262b4a58f6de44","analyzedAt":"2026-09-05T17:01:29.979Z","contentChangedAt":"2026-09-05T17:01:29.979Z","schemaVersion":2},"datasetVersion":"2026-09-14T00:17:10.932Z"}