{"record":{"id":"ca1926e74056a55b","repo":"nodejs/node","slug":"extra-input-n","errorCode":null,"errorMessage":"extra input\\n","messagePattern":"extra input\\\\n","errorType":"console","errorClass":null,"httpStatus":null,"severity":"info","filePath":"deps/brotli/c/tools/brotli.c","lineNumber":1267,"sourceCode":"    } else if (result == BROTLI_DECODER_RESULT_NEEDS_MORE_OUTPUT) {\n      if (!ProvideOutput(context)) return BROTLI_FALSE;\n    } else if (result == BROTLI_DECODER_RESULT_SUCCESS) {\n      if (!FlushOutput(context)) return BROTLI_FALSE;\n      BROTLI_BOOL has_more_input = (context->available_in != 0);\n      int extra_char = EOF;\n      if (!has_more_input) {\n        extra_char = fgetc(context->fin);\n        if (extra_char != EOF) {\n          has_more_input = BROTLI_TRUE;\n          context->input[0] = (uint8_t)extra_char;\n          context->next_in = context->input;\n          context->available_in = 1;\n        }\n      }\n      if (has_more_input) {\n        if (context->allow_concatenated) {\n          if (context->verbosity > 0) {\n            fprintf(stderr, \"extra input\\n\");\n          }\n          if (!ProvideOutput(context)) return BROTLI_FALSE;\n          BrotliDecoderDestroyInstance(context->decoder);\n          context->decoder = NULL;\n          if (!InitDecoder(context)) return BROTLI_FALSE;\n          s = context->decoder;\n        } else {\n          fprintf(stderr, \"corrupt input [%s]\\n\",\n                  PrintablePath(context->current_input_path));\n          if (context->verbosity > 0) {\n            fprintf(stderr, \"reason: extra input\\n\");\n          }\n          return BROTLI_FALSE;\n        }\n      } else {\n        if (context->verbosity > 0) {\n          context->end_time = clock();\n          fprintf(stderr, \"Decompressed \");","sourceCodeStart":1249,"sourceCodeEnd":1285,"githubUrl":"https://github.com/nodejs/node/blob/1b2de5e052fc0fb95fd7fb6846dcec4ade598e9e/deps/brotli/c/tools/brotli.c#L1249-L1285","documentation":"Informational verbose message at brotli.c:1267, printed only when verbosity > 0 AND context->allow_concatenated is true. After a brotli stream decodes successfully (BROTLI_DECODER_RESULT_SUCCESS), if there are still bytes remaining in the file, the tool treats this as a concatenated multi-stream brotli file. It destroys the current decoder, creates a fresh one via InitDecoder, and continues decoding the next stream. This message is not an error — it signals normal concatenated-stream processing.","triggerScenarios":"Decompressing a file that contains two or more brotli streams concatenated back-to-back (a valid brotli convention). After the first stream reaches SUCCESS, the code peeks one extra byte with fgetc; if it is not EOF, has_more_input is set. With allow_concatenated enabled (the default for the brotli -d command), the tool logs this message and reinitializes the decoder for the next stream.","commonSituations":"Decompressing a file produced by concatenating multiple brotli-compressed chunks (common in web bundling, CDNI, or streaming compression pipelines). A developer runs 'brotli -d -v multi.br' and sees this informational line for each concatenated segment.","solutions":["No action needed — this is expected behavior when decompressing concatenated brotli streams with -v enabled.","If the message is noisy, run without -v to suppress it.","If you did not expect concatenated streams, investigate whether the source inadvertently appended multiple brotli files together."],"exampleFix":null,"handlingStrategy":"validation","validationCode":"// This is informational, not an error. No validation needed.\n// If you want to detect concatenated streams programmatically:\n// after BrotliDecoderResult SUCCESS, check if fgetc(fin) != EOF.","typeGuard":null,"tryCatchPattern":null,"preventionTips":["Recognize this as expected behavior for multi-stream brotli files.","Run without -v if the message is undesirable.","Document that concatenated brotli streams are supported by default in the brotli tool."],"tags":["brotli","decompression","concatenated","informational","verbose"],"backgroundTag":null,"analyzedSha":"1b2de5e052fc0fb95fd7fb6846dcec4ade598e9e","analyzedAt":"2026-08-13T00:53:24.642Z","schemaVersion":2},"datasetVersion":"2026-08-13T04:17:16.726Z"}