Fix Atlas vulnerability response parsing — API returns arrays per host, not objects

This commit is contained in:
root
2026-04-27 16:21:19 +00:00
parent 06c6821d85
commit 623b57ca06

View File

@@ -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);