Skip to content

Commit 5eb65ea

Browse files
committed
Remove unsafe usage of _.map
When a map contained a "length" property this would cause it to treat it as an array instead of a map.
1 parent 06ef5f0 commit 5eb65ea

File tree

3 files changed

+18
-11
lines changed

3 files changed

+18
-11
lines changed

src/sentry/static/sentry/app/components/events/extraData.jsx

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,7 @@
11
import React from "react";
2-
import _ from "underscore";
32

43
import PropTypes from "../../proptypes";
5-
4+
import {objectToArray} from "../../utils";
65
import EventDataSection from "./eventDataSection";
76
import DefinitionList from "./interfaces/definitionList";
87

@@ -17,17 +16,17 @@ var EventExtraData = React.createClass({
1716
},
1817

1918
render() {
20-
let extraDataArray = _.chain(this.props.event.context)
21-
.map((val, key) => [key, val])
22-
.value();
19+
let extraDataArray = objectToArray(this.props.event.context);
2320

2421
return (
2522
<EventDataSection
2623
group={this.props.group}
2724
event={this.props.event}
2825
type="extra"
2926
title="Additional Data">
30-
<DefinitionList data={extraDataArray} isContextData={true}/>
27+
<DefinitionList
28+
data={extraDataArray}
29+
isContextData={true}/>
3130
</EventDataSection>
3231
);
3332
}

src/sentry/static/sentry/app/components/events/interfaces/csp.jsx

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import React from "react";
2-
import _ from "underscore";
32
import PropTypes from "../../../proptypes";
43

4+
import {objectToArray} from "../../../utils";
55
import EventDataSection from "../eventDataSection";
66
import DefinitionList from "./definitionList";
77

@@ -15,10 +15,7 @@ var CSPInterface = React.createClass({
1515

1616
render() {
1717
let {group, event, data} = this.props;
18-
19-
let extraDataArray = _.chain(data)
20-
.map((val, key) => [key.replace(/_/g, '-'), val])
21-
.value();
18+
let extraDataArray = objectToArray(data);
2219

2320
return (
2421
<EventDataSection

src/sentry/static/sentry/app/utils.jsx

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -64,6 +64,16 @@ var objectMatchesSubset = function(obj, other, deep){
6464
return true;
6565
};
6666

67+
// XXX(dcramer): the previous mechanism of using _.map here failed
68+
// miserably if a param was named 'length'
69+
const objectToArray = function(obj) {
70+
let result = [];
71+
for (var key in obj) {
72+
result.push([key, obj[key]]);
73+
}
74+
return result;
75+
};
76+
6777
var compareArrays = function(arr1, arr2, compFunc) {
6878
if (arr1 === arr2) {
6979
return true;
@@ -189,6 +199,7 @@ export default {
189199
modelsEqual: modelsEqual,
190200
valueIsEqual: valueIsEqual,
191201
parseLinkHeader: require('./utils/parseLinkHeader'),
202+
objectToArray: objectToArray,
192203

193204
Collection: require('./utils/collection'),
194205
PendingChangeQueue: require('./utils/pendingChangeQueue'),

0 commit comments

Comments
 (0)