Skip to content

deps: body-parser@~1.20.4#7021

Merged
bjohansebas merged 1 commit into
expressjs:4.xfrom
suuuuuuminnnnnn:deps-body-parser-1.20.4
Feb 8, 2026
Merged

deps: body-parser@~1.20.4#7021
bjohansebas merged 1 commit into
expressjs:4.xfrom
suuuuuuminnnnnn:deps-body-parser-1.20.4

Conversation

@suuuuuuminnnnnn

Copy link
Copy Markdown

TL;DR

Updates body-parser from ~1.20.3 to ~1.20.4 to pull in patched qs@6.14.1 and clear the GHSA-6rw7-vpxm-498p advisory. Single-line change, full test pass, npm audit --production reports 0 vulnerabilities.


Context

Issue

Problem

Express 4.x depends on body-parser, which transitively depends on qs. qs < 6.14.1 is flagged by GHSA-6rw7-vpxm-498p (HIGH severity: arrayLimit bypass → potential DoS via memory exhaustion).
This is reported as vulnerable (not malicious).

Dependency chain (before)

express@4.22.1
└── body-parser@1.20.3
    └── qs@6.13.0 (vulnerable)

Additional context (#6972)

With ~1.20.3 in package.json:

  • Fresh installs may resolve to newer patch releases, but
  • Existing installations running npm install express@4 can remain on 1.20.3 since it still satisfies ~1.20.3.

Bumping the minimum to ~1.20.4 makes the safe patch-level update explicit.


Changes

  • package.json: bump body-parser from ~1.20.3~1.20.4 (single-line change)
  • No lockfile changes (repo policy)
- "body-parser": "~1.20.3",
+ "body-parser": "~1.20.4",

Evidence

Dependency tree (after)

npm ls body-parser qs
express@4.22.1
├─┬ body-parser@1.20.4
│ └── qs@6.14.1 deduped
└── qs@6.14.1

Vulnerabilities (after)

npm audit --production
found 0 vulnerabilities

Tests

npm test
1322 passing (1s)
1 pending

Notes

  • No functional changes besides the dependency bump.
  • Patch-level update only; no breaking changes expected.

Developer's Certificate of Origin 1.1

By making a contribution to this project, I certify that:

(a) The contribution was created in whole or in part by me and I have the right to submit it under the open source license indicated in the file; or

(b) The contribution is based upon previous work that, to the best of my knowledge, is covered under an appropriate open source license and I have the right under that license to submit that work with modifications, whether created in whole or in part by me, under the same open source license (unless I am permitted to submit under a different license), as indicated in the file; or

(c) The contribution was provided directly to me by some other person who certified (a), (b) or (c) and I have not modified it.

(d) I understand and agree that this project and the contribution are public and that a record of the contribution (including all personal information I submit with it, including my sign-off) is maintained indefinitely and may be redistributed consistent with this project or the open source license(s) involved.

@krzysdz krzysdz added 4.x deps dependencies Pull requests that update a dependency file labels Feb 6, 2026
@bjohansebas bjohansebas merged commit d39e8ad into expressjs:4.x Feb 8, 2026
53 checks passed
mergify Bot added a commit to robfrank/linklift that referenced this pull request Jun 4, 2026
[//]: # (dependabot-start)
⚠️ \*\*Dependabot is rebasing this PR\*\* ⚠️
Rebasing might not happen immediately, so don't worry if this takes some time.
Note: if you make any changes to this PR yourself, they will take precedence over the rebase.
---
[//]: # (dependabot-end)
Bumps [qs](https://github.com/ljharb/qs) and [express](https://github.com/expressjs/express). These dependencies needed to be updated together.
Updates `qs` from 6.14.2 to 6.15.2
Changelog

*Sourced from [qs's changelog](https://github.com/ljharb/qs/blob/main/CHANGELOG.md).*

> **6.15.2**
> ----------
>
> * [Fix] `stringify`: skip null/undefined entries in `arrayFormat: 'comma'` + `encodeValuesOnly` instead of crashing in `encoder`
> * [Fix] `stringify`: use configured `delimiter` after `charsetSentinel` ([#555](https://redirect.github.com/ljharb/qs/issues/555))
> * [Fix] `stringify`: apply `formatter` to encoded key under `strictNullHandling` ([#554](https://redirect.github.com/ljharb/qs/issues/554))
> * [Fix] `stringify`: skip null/undefined filter-array entries instead of crashing in `encoder` ([#551](https://redirect.github.com/ljharb/qs/issues/551))
> * [Fix] `parse`: handle nested bracket groups and add regression tests ([#530](https://redirect.github.com/ljharb/qs/issues/530))
> * [readme] fix grammar ([#550](https://redirect.github.com/ljharb/qs/issues/550))
> * [Dev Deps] update `@ljharb/eslint-config`
> * [Tests] add regression tests for keys containing percent-encoded bracket text
>
> **6.15.1**
> ----------
>
> * [Fix] `parse`: `parameterLimit: Infinity` with `throwOnLimitExceeded: true` silently drops all parameters
> * [Deps] update `@ljharb/eslint-config`
> * [Dev Deps] update `@ljharb/eslint-config`, `iconv-lite`
> * [Tests] increase coverage
>
> **6.15.0**
> ----------
>
> * [New] `parse`: add `strictMerge` option to wrap object/primitive conflicts in an array ([#425](https://redirect.github.com/ljharb/qs/issues/425), [#122](https://redirect.github.com/ljharb/qs/issues/122))
> * [Fix] `duplicates` option should not apply to bracket notation keys ([#514](https://redirect.github.com/ljharb/qs/issues/514))


Commits

* [`9aca407`](ljharb/qs@9aca407) v6.15.2
* [`5e33d33`](ljharb/qs@5e33d33) [Dev Deps] update `@ljharb/eslint-config`
* [`21f80b3`](ljharb/qs@21f80b3) [Fix] `stringify`: skip null/undefined entries in `arrayFormat: 'comma'` + `e...
* [`a0a81ea`](ljharb/qs@a0a81ea) [Fix] `stringify`: use configured `delimiter` after `charsetSentinel`
* [`e3062f7`](ljharb/qs@e3062f7) [Fix] `stringify`: apply `formatter` to encoded key under `strictNullHandling`
* [`0c180a4`](ljharb/qs@0c180a4) [Fix] `stringify`: skip null/undefined filter-array entries instead of crashi...
* [`3a8b94a`](ljharb/qs@3a8b94a) [Tests] add regression tests for keys containing percent-encoded bracket text
* [`96755ab`](ljharb/qs@96755ab) [readme] fix grammar
* [`a419ce5`](ljharb/qs@a419ce5) [Fix] `parse`: handle nested bracket groups and add regression tests
* [`3f5e1c5`](ljharb/qs@3f5e1c5) v6.15.1
* Additional commits viewable in [compare view](ljharb/qs@v6.14.2...v6.15.2)
  
Updates `express` from 4.22.1 to 4.22.2
Release notes

*Sourced from [express's releases](https://github.com/expressjs/express/releases).*

> v4.22.2
> -------
>
> What's Changed
> --------------
>
> * fix: restore >20 array parsing for `req.query` repeated keys ([`8d09bfe6`](expressjs/express@8d09bfe))
>   + This also unifies array-cap behavior across notations. Indexed notation (`a[0]=...`) was historically capped at qs's default `arrayLimit` of 20 even in older qs versions; after this change it also allows up to 1000 items.
> * deps: qs@~6.15.1
> * deps: body-parser@~1.20.5
>
> New Contributors
> ----------------
>
> * [`@​suuuuuuminnnnnn`](https://github.com/suuuuuuminnnnnn) made their first contribution in [expressjs/express#7021](https://redirect.github.com/expressjs/express/pull/7021)
> * [`@​SAY-5`](https://github.com/SAY-5) made their first contribution in [expressjs/express#7181](https://redirect.github.com/expressjs/express/pull/7181)
>
> **Full Changelog**: <expressjs/express@v4.22.1...v4.22.2>


Changelog

*Sourced from [express's changelog](https://github.com/expressjs/express/blob/v4.22.2/History.md).*

> 4.22.2 / 2026-05-011
> ====================
>
> * fix: restore >20 array parsing for `req.query` repeated keys ([`8d09bfe6`](expressjs/express@8d09bfe))
>   + This also unifies array-cap behavior across notations. Indexed notation (`a[0]=...`) was historically capped at qs's default `arrayLimit` of 20 even in older qs versions; after this change it also allows up to 1000 items.
> * deps: qs@~6.15.1
> * deps: body-parser@~1.20.5


Commits

* [`df0abc9`](expressjs/express@df0abc9) 4.22.2
* [`836d366`](expressjs/express@836d366) `4.x` update qs to 6.15.1, body-parser 1.20.5 ([#7224](https://redirect.github.com/expressjs/express/issues/7224))
* [`8d09bfe`](expressjs/express@8d09bfe) fix: restore array parsing for req.query repeated keys ([#7181](https://redirect.github.com/expressjs/express/issues/7181))
* [`d39e8ad`](expressjs/express@d39e8ad) deps: body-parser@~1.20.4 ([#7021](https://redirect.github.com/expressjs/express/issues/7021))
* [`efe85d9`](expressjs/express@efe85d9) deps: qs@^6.14.1 ([#6972](https://redirect.github.com/expressjs/express/issues/6972))
* [`f62378e`](expressjs/express@f62378e) 📝 add note to history
* See full diff in [compare view](expressjs/express@v4.22.1...v4.22.2)
  
Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`.
[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)
---
Dependabot commands and options
  
You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it
- `@dependabot show  ignore conditions` will show all of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
You can disable automated security fix PRs for this repo from the [Security Alerts page](https://github.com/robfrank/linklift/network/alerts).
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

4.x dependencies Pull requests that update a dependency file deps

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants