in public/js/util.js [233:301]
affectedTable: function (cve) {
var status={};
for (var vendor of cve.affects.vendor.vendor_data) {
var vendor_name = vendor.vendor_name;
if(!status[vendor_name]) {
status[vendor_name] = {};
}
for(var product of vendor.product.product_data) {
var product_name = product.product_name;
if(!status[vendor_name][product_name]) {
status[vendor_name][product_name] = {};
}
for(var version of product.version.version_data) {
var vv = version.version_value;
var cat = "affected";
var prefix = vn = "";
if(version.version_name && version.version_name != "") {
vn = version.version_name;
}
if(version.version_affected) {
if(version.version_affected.startsWith('?')) {
cat = "unknown";
} else if (version.version_affected.startsWith('!')) {
cat = "unaffected";
}
switch (version.version_affected) {
case "!":
case "?":
case "=":
vv = version.version_value;
break;
case "<":
case "!<":
case "?<":
vv = "< " + version.version_value;
break;
case ">":
case "?>":
vv = "> " + version.version_value;
break;
case "<=":
case "!<=":
case "?<=":
vv = "<= " + version.version_value;
break;
case ">=":
case "!>=":
case "?>=":
vv = ">= " + version.version_value;
break;
default:
vv = version.version_value;
}
}
if(version.platform && version.platform != "") {
vv += ' on ' + version.platform;
}
if(!status[vendor_name][product_name][vn]) {
status[vendor_name][product_name][vn] = {};
}
if (!status[vendor_name][product_name][vn][cat]) {
status[vendor_name][product_name][vn][cat] = [];
}
status[vendor_name][product_name][vn][cat].push(vv);
}
}
}
return status;
},