in public/js/util.js [150:232]
getAffectedProductString: function (cve) {
var status={};
var lines = [];
for (var vendor of cve.affects.vendor.vendor_data) {
var vendor_name = vendor.vendor_name;
for(var product of vendor.product.product_data) {
for(var version of product.version.version_data) {
var vv = version.version_value;
var cat = "affected";
if(version.version_affected) {
if(version.version_affected.startsWith('?')) {
cat = "unknown";
} else if (version.version_affected.startsWith('!')) {
cat = "unaffected";
}
var prefix = product.product_name + " ";
if(version.version_name && version.version_name != "") {
prefix += version.version_name + " ";
}
switch (version.version_affected) {
case "!":
case "?":
case "=":
vv = version.version_value;
break;
case "<":
case "!<":
case "?<":
vv = prefix + "versions earlier than " + version.version_value;
break;
case ">":
case "?>":
vv = prefix + "versions later than " + version.version_value;
break;
case "<=":
case "!<=":
case "?<=":
vv = product.product_name + " " + version.version_value + " and earlier versions";
break;
case ">=":
case "!>=":
case "?>=":
vv = product.product_name + " " + version.version_value + " and later versions";
break;
default:
vv = version.version_value;
}
}
if (version.platform) {
vv = vv + " on " + version.platform;
}
if (!status[cat]) {
status[cat] = {};
}
// ASF
if(!status[cat][product.product_name]) {
status[cat][product.product_name] = [];
}
status[cat][product.product_name].push(vv);
// END ASF
}
}
}
var stringifyArray = function(ob) {
var ret = [];
for(var p in ob) {
ret.push(p + "\n" + ob[p].join(';\n') + ".");
}
return ret.join('\n');
}
var ret = [];
if (status.affected) {
ret.push('This issue affects:\n' + stringifyArray(status.affected));
}
if (status.unaffected) {
ret.push('This issue does not affect:\n' + stringifyArray(status.unaffected));
}
if (status.unknown) {
ret.push('It is not known whether this issue affects:\n' + stringifyArray(status.unknown));
}
return ret.join('\n\n');
},