Fix Atlas vulnerability response parsing — API returns arrays per host, not objects
This commit is contained in:
@@ -3907,24 +3907,18 @@ function BulkAtlasModal({ selectedFindings, onClose, onSuccess }) {
|
|||||||
const data = await res.json();
|
const data = await res.json();
|
||||||
if (cancelled) return;
|
if (cancelled) return;
|
||||||
|
|
||||||
// Parse response — Atlas returns { host_id: { qualys_id: vulnObj, ... }, ... }
|
// Parse response — Atlas returns { "host_id": [ { qualys_id, title, ... }, ... ], ... }
|
||||||
const qualysMap = new Map();
|
const qualysMap = new Map();
|
||||||
if (data && typeof data === 'object') {
|
if (data && typeof data === 'object' && !Array.isArray(data)) {
|
||||||
const entries = Array.isArray(data) ? data : Object.entries(data);
|
for (const [, vulnList] of Object.entries(data)) {
|
||||||
for (const entry of entries) {
|
if (!Array.isArray(vulnList)) continue;
|
||||||
let vulns;
|
for (const vuln of vulnList) {
|
||||||
if (Array.isArray(entry)) {
|
const qid = vuln.qualys_id || vuln.sourceId;
|
||||||
vulns = entry[1];
|
if (!qid) continue;
|
||||||
} else if (typeof entry === 'object') {
|
|
||||||
vulns = entry;
|
|
||||||
} else continue;
|
|
||||||
|
|
||||||
if (vulns && typeof vulns === 'object' && !Array.isArray(vulns)) {
|
|
||||||
for (const [qid, vuln] of Object.entries(vulns)) {
|
|
||||||
if (!qualysMap.has(qid)) {
|
if (!qualysMap.has(qid)) {
|
||||||
qualysMap.set(qid, {
|
qualysMap.set(qid, {
|
||||||
qualys_id: qid,
|
qualys_id: qid,
|
||||||
title: vuln?.title || vuln?.vulnerability_title || qid,
|
title: vuln.title || qid,
|
||||||
count: 1,
|
count: 1,
|
||||||
});
|
});
|
||||||
} else {
|
} else {
|
||||||
@@ -3933,7 +3927,6 @@ function BulkAtlasModal({ selectedFindings, onClose, onSuccess }) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
const sorted = [...qualysMap.values()].sort((a, b) => b.count - a.count);
|
const sorted = [...qualysMap.values()].sort((a, b) => b.count - a.count);
|
||||||
setAvailableQualys(sorted);
|
setAvailableQualys(sorted);
|
||||||
|
|||||||
Reference in New Issue
Block a user