affectedTable: function()

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;
},