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();
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();
if (data && typeof data === 'object') {
const entries = Array.isArray(data) ? data : Object.entries(data);
for (const entry of entries) {
let vulns;
if (Array.isArray(entry)) {
vulns = entry[1];
} 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 (data && typeof data === 'object' && !Array.isArray(data)) {
for (const [, vulnList] of Object.entries(data)) {
if (!Array.isArray(vulnList)) continue;
for (const vuln of vulnList) {
const qid = vuln.qualys_id || vuln.sourceId;
if (!qid) continue;
if (!qualysMap.has(qid)) {
qualysMap.set(qid, {
qualys_id: qid,
title: vuln?.title || vuln?.vulnerability_title || qid,
title: vuln.title || qid,
count: 1,
});
} else {
@@ -3933,7 +3927,6 @@ function BulkAtlasModal({ selectedFindings, onClose, onSuccess }) {
}
}
}
}
const sorted = [...qualysMap.values()].sort((a, b) => b.count - a.count);
setAvailableQualys(sorted);