Skip to content

Commit 5ddf311

Browse files
UlisesGasconjonchurch
authored andcommitted
Revert "sec: security patch for CVE-2024-51999"
This reverts commit 6e97452.
1 parent 49744ab commit 5ddf311

File tree

2 files changed

+3
-106
lines changed

2 files changed

+3
-106
lines changed

lib/utils.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -287,7 +287,7 @@ function createETagGenerator (options) {
287287

288288
function parseExtendedQueryString(str) {
289289
return qs.parse(str, {
290-
plainObjects: true
290+
allowPrototypes: true
291291
});
292292
}
293293

test/req.query.js

Lines changed: 2 additions & 105 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@
33
var assert = require('assert')
44
var express = require('../')
55
, request = require('supertest');
6-
var qs = require('qs');
76

87
describe('req', function(){
98
describe('.query', function(){
@@ -39,22 +38,6 @@ describe('req', function(){
3938
.get('/?user.name=tj')
4039
.expect(200, '{"user.name":"tj"}', done);
4140
});
42-
43-
it('should not be able to access object prototype properties', function (done) {
44-
var app = createApp('extended', true);
45-
46-
request(app)
47-
.get('/?foo=yee')
48-
.expect(200, /TypeError: req\.query\.hasOwnProperty is not a function/, done);
49-
});
50-
51-
it('should be able to use object prototype property names as keys', function (done) {
52-
var app = createApp('extended', true);
53-
54-
request(app)
55-
.get('/?hasOwnProperty=yee')
56-
.expect(200, '{"query":{"hasOwnProperty":"yee"},"error":"TypeError: req.query.hasOwnProperty is not a function"}', done);
57-
});
5841
});
5942

6043
describe('when "query parser" is simple', function () {
@@ -65,22 +48,6 @@ describe('req', function(){
6548
.get('/?user%5Bname%5D=tj')
6649
.expect(200, '{"user[name]":"tj"}', done);
6750
});
68-
69-
it('should not be able to access object prototype properties', function (done) {
70-
var app = createApp('simple', true);
71-
72-
request(app)
73-
.get('/?foo=yee')
74-
.expect(200, /TypeError: req\.query\.hasOwnProperty is not a function/, done);
75-
});
76-
77-
it('should be able to use object prototype property names as keys', function (done) {
78-
var app = createApp('simple', true);
79-
80-
request(app)
81-
.get('/?hasOwnProperty=yee')
82-
.expect(200, '{"query":{"hasOwnProperty":"yee"},"error":"TypeError: req.query.hasOwnProperty is not a function"}', done);
83-
});
8451
});
8552

8653
describe('when "query parser" is a function', function () {
@@ -93,18 +60,6 @@ describe('req', function(){
9360
.get('/?user%5Bname%5D=tj')
9461
.expect(200, '{"length":17}', done);
9562
});
96-
97-
// test exists to verify behavior for folks wishing to workaround our qs defaults
98-
it('should drop object prototype property names and be able to access object prototype properties', function (done) {
99-
var app = createApp(
100-
function (str) {
101-
return qs.parse(str)
102-
}, true);
103-
104-
request(app)
105-
.get('/?hasOwnProperty=biscuits')
106-
.expect(200, '{"query":{},"hasOwnProperty":false}', done);
107-
});
10863
});
10964

11065
describe('when "query parser" disabled', function () {
@@ -115,22 +70,6 @@ describe('req', function(){
11570
.get('/?user%5Bname%5D=tj')
11671
.expect(200, '{}', done);
11772
});
118-
119-
it('should not be able to access object prototype properties', function (done) {
120-
var app = createApp('extended', true);
121-
122-
request(app)
123-
.get('/?foo=yee')
124-
.expect(200, /TypeError: req\.query\.hasOwnProperty is not a function/, done);
125-
});
126-
127-
it('should be able to use object prototype property names as keys', function (done) {
128-
var app = createApp('extended', true);
129-
130-
request(app)
131-
.get('/?hasOwnProperty=yee')
132-
.expect(200, '{"query":{"hasOwnProperty":"yee"},"error":"TypeError: req.query.hasOwnProperty is not a function"}', done);
133-
});
13473
});
13574

13675
describe('when "query parser" enabled', function () {
@@ -141,22 +80,6 @@ describe('req', function(){
14180
.get('/?user%5Bname%5D=tj')
14281
.expect(200, '{"user[name]":"tj"}', done);
14382
});
144-
145-
it('should not be able to access object prototype properties', function (done) {
146-
var app = createApp('extended', true);
147-
148-
request(app)
149-
.get('/?foo=yee')
150-
.expect(200, /TypeError: req\.query\.hasOwnProperty is not a function/, done);
151-
});
152-
153-
it('should be able to use object prototype property names as keys', function (done) {
154-
var app = createApp('extended', true);
155-
156-
request(app)
157-
.get('/?hasOwnProperty=yee')
158-
.expect(200, '{"query":{"hasOwnProperty":"yee"},"error":"TypeError: req.query.hasOwnProperty is not a function"}', done);
159-
});
16083
});
16184

16285
describe('when "query parser fn" is missing', function () {
@@ -174,22 +97,6 @@ describe('req', function(){
17497
.get('/?user[name]=tj&user.name=tj')
17598
.expect(200, '{"user":{"name":"tj"},"user.name":"tj"}', done);
17699
});
177-
178-
it('should not be able to access object prototype properties', function (done) {
179-
var app = createApp('extended', true);
180-
181-
request(app)
182-
.get('/?foo=yee')
183-
.expect(200, /TypeError: req\.query\.hasOwnProperty is not a function/, done);
184-
});
185-
186-
it('should be able to use object prototype property names as keys', function (done) {
187-
var app = createApp('extended', true);
188-
189-
request(app)
190-
.get('/?hasOwnProperty=yee')
191-
.expect(200, '{"query":{"hasOwnProperty":"yee"},"error":"TypeError: req.query.hasOwnProperty is not a function"}', done);
192-
});
193100
});
194101

195102
describe('when "query parser" an unknown value', function () {
@@ -201,25 +108,15 @@ describe('req', function(){
201108
})
202109
})
203110

204-
function createApp(setting, isPrototypePropertyTest) {
111+
function createApp(setting) {
205112
var app = express();
206113

207114
if (setting !== undefined) {
208115
app.set('query parser', setting);
209116
}
210117

211118
app.use(function (req, res) {
212-
if(isPrototypePropertyTest) {
213-
try {
214-
var hasOwnProperty = req.query.hasOwnProperty('✨ express ✨');
215-
res.send({ query: req.query, hasOwnProperty: hasOwnProperty });
216-
} catch (error) {
217-
res.send({ query: req.query, error: error.toString() });
218-
}
219-
}
220-
else {
221-
res.send(req.query);
222-
}
119+
res.send(req.query);
223120
});
224121

225122
return app;

0 commit comments

Comments
 (0)