{"record":{"id":"d139307f35106705","repo":"nodejs/node","slug":"error-parsing-lgwin-value-s-n","errorCode":null,"errorMessage":"error parsing lgwin value [%s]\\n","messagePattern":"error parsing lgwin value \\[(.+?)\\]\\\\n","errorType":"validation","errorClass":null,"httpStatus":null,"severity":"error","filePath":"deps/brotli/c/tools/brotli.c","lineNumber":472,"sourceCode":"          if (quality_set) {\n            fprintf(stderr, \"quality already set\\n\");\n            return COMMAND_INVALID;\n          }\n          quality_set = ParseInt(argv[i], BROTLI_MIN_QUALITY,\n                                 BROTLI_MAX_QUALITY, &params->quality);\n          if (!quality_set) {\n            fprintf(stderr, \"error parsing quality value [%s]\\n\", argv[i]);\n            return COMMAND_INVALID;\n          }\n        } else if (c == 'w') {\n          if (lgwin_set) {\n            fprintf(stderr, \"lgwin parameter already set\\n\");\n            return COMMAND_INVALID;\n          }\n          lgwin_set = ParseInt(argv[i], 0,\n                               BROTLI_MAX_WINDOW_BITS, &params->lgwin);\n          if (!lgwin_set) {\n            fprintf(stderr, \"error parsing lgwin value [%s]\\n\", argv[i]);\n            return COMMAND_INVALID;\n          }\n          if (params->lgwin != 0 && params->lgwin < BROTLI_MIN_WINDOW_BITS) {\n            fprintf(stderr,\n                    \"lgwin parameter (%d) smaller than the minimum (%d)\\n\",\n                    params->lgwin, BROTLI_MIN_WINDOW_BITS);\n            return COMMAND_INVALID;\n          }\n        } else if (c == 'C') {\n          if (comment_set) {\n            fprintf(stderr, \"comment already set\\n\");\n            return COMMAND_INVALID;\n          }\n          params->comment_len = MAX_COMMENT_LEN;\n          if (!ParseBase64(argv[i], params->comment, &params->comment_len)) {\n            fprintf(stderr, \"invalid base64-encoded comment\\n\");\n            return COMMAND_INVALID;\n          }","sourceCodeStart":454,"sourceCodeEnd":490,"githubUrl":"https://github.com/nodejs/node/blob/1b2de5e052fc0fb95fd7fb6846dcec4ade598e9e/deps/brotli/c/tools/brotli.c#L454-L490","documentation":"`ParseInt` (brotli.c:228) parses `-w`'s argument with bounds `[0, BROTLI_MAX_WINDOW_BITS]`. It rejects non-digits, leading zeros, >5 digits, and out-of-range values. A failure prints `error parsing lgwin value [<arg>]` and returns COMMAND_INVALID.","triggerScenarios":"`brotli -w abc in` (non-digit), `brotli -w 030 in` (leading zero), `brotli -w 999999 in` (>5 digits), `brotli -w 999 in` (above BROTLI_MAX_WINDOW_BITS).","commonSituations":"Passing a float (`-w 22.5`); negative values from misconfigured env; confusing lgwin with quality magnitude.","solutions":["Pass an integer in [0, BROTLI_MAX_WINDOW_BITS] with no leading zeros (e.g. `-w 22`).","Use `0` for the auto/default window; pick a value in [BROTLI_MIN_WINDOW_BITS, BROTLI_MAX_WINDOW_BITS] otherwise.","Validate the variable: `[[ \"$W\" =~ ^[0-9]{1,5}$ ]] || exit 1`."],"exampleFix":"# before\nbrotli -w 030 in\n# after\nbrotli -w 22 in","handlingStrategy":"validation","validationCode":"# bash: validate -w value (0..BROTLI_MAX_WINDOW_BITS, no leading zero)\nMAXW=24  # BROTLI_MAX_WINDOW_BITS; some builds allow larger with --large-window\nargv=(\"$@\")\nfor ((i=0;i<${#argv[@]};i++)); do\n  if [ \"${argv[$i]}\" = -w ]; then\n    v=${argv[$((i+1))]:-}\n    if ! [[ \"$v\" =~ ^(0|[1-9][0-9]{0,4})$ ]] || [ \"$v\" -gt \"$MAXW\" ]; then\n      echo \"invalid lgwin '$v'\" >&2; exit 2\n    fi\n  fi\ndone\nbrotli \"$@\"","typeGuard":null,"tryCatchPattern":"# bash\nif ! brotli \"$@\"; then rc=$?; echo \"brotli exit $rc; verify -w value\" >&2; exit \"$rc\"; fi","preventionTips":["Use integers with no leading zeros; `0` means default window.","Validate the source variable with a regex before invoking."],"tags":["cli","brotli","argument-parsing","lgwin","parse-error"],"backgroundTag":null,"analyzedSha":"1b2de5e052fc0fb95fd7fb6846dcec4ade598e9e","analyzedAt":"2026-08-13T00:53:24.642Z","schemaVersion":2},"datasetVersion":"2026-08-13T04:17:16.726Z"}