Skip to content

Commit ab706ad

Browse files
pm-harshad-manejsnellbaker
authored andcommitted
Fix for Issue 3130: passing new copy of adUnits object to every adapter (prebid#3131)
* passing new copy of adUnits object to every adapter * add test to verify bidders can't mutate eachothers bid requests
1 parent cea3f1e commit ab706ad

File tree

2 files changed

+22
-2
lines changed

2 files changed

+22
-2
lines changed

src/adaptermanager.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -194,7 +194,7 @@ exports.makeBidRequests = function(adUnits, auctionStart, auctionId, cbTimeout,
194194
auctionId,
195195
bidderRequestId,
196196
tid,
197-
bids: getBids({bidderCode, auctionId, bidderRequestId, 'adUnits': adUnitsS2SCopy, labels}),
197+
bids: getBids({bidderCode, auctionId, bidderRequestId, 'adUnits': utils.deepClone(adUnitsS2SCopy), labels}),
198198
auctionStart: auctionStart,
199199
timeout: _s2sConfig.timeout,
200200
src: CONSTANTS.S2S.SRC,
@@ -229,7 +229,7 @@ exports.makeBidRequests = function(adUnits, auctionStart, auctionId, cbTimeout,
229229
bidderCode,
230230
auctionId,
231231
bidderRequestId,
232-
bids: getBids({bidderCode, auctionId, bidderRequestId, 'adUnits': adUnitsClientCopy, labels}),
232+
bids: getBids({bidderCode, auctionId, bidderRequestId, 'adUnits': utils.deepClone(adUnitsClientCopy), labels}),
233233
auctionStart: auctionStart,
234234
timeout: cbTimeout,
235235
refererInfo

test/spec/unit/core/adapterManager_spec.js

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -762,6 +762,26 @@ describe('adapterManager tests', function () {
762762
})
763763
});
764764

765+
it('should make separate bidder request objects for each bidder', () => {
766+
adUnits = [utils.deepClone(getAdUnits()[0])];
767+
768+
let bidRequests = AdapterManager.makeBidRequests(
769+
adUnits,
770+
Date.now(),
771+
utils.getUniqueIdentifierStr(),
772+
function callback() {},
773+
[]
774+
);
775+
776+
let sizes1 = bidRequests[1].bids[0].sizes;
777+
let sizes2 = bidRequests[0].bids[0].sizes;
778+
779+
// mutate array
780+
sizes1.splice(0, 1);
781+
782+
expect(sizes1).not.to.deep.equal(sizes2);
783+
});
784+
765785
describe('setBidderSequence', function () {
766786
beforeEach(function () {
767787
sinon.spy(utils, 'shuffle');

0 commit comments

Comments
 (0)