in scripts/misc/upgrade.js [42:148]
function upgradeDocv002to003(doc) {
if (doc.cve) {
print('Found ' + doc.cve.CVE_data_meta.ID);
var source = {};
var DCCP = doc.cve.CNA_private;
if (DCCP) {
delete DCCP.merge_with;
if (DCCP.defect) {
source.defect = DCCP.defect;
}
delete DCCP.defect;
if (DCCP.advisoryID) {
source.advisory = DCCP.advisoryID;
}
delete DCCP.advisoryID
if (DCCP.metadata && DCCP.metadata.source) {
source.discovery = smap[DCCP.metadata.source];
}
doc.cve.source = source;
delete DCCP.metadata;
if (DCCP.bundle) {
delete DCCP.bundle;
}
if (doc.cve.CVE_data_meta.DATE_PUBLIC) {
DCCP.publish = {}
DCCP.publish.ym = doc.cve.CVE_data_meta.DATE_PUBLIC.substr(0, 7);
DCCP.publish.year = doc.cve.CVE_data_meta.DATE_PUBLIC.substr(0, 4);
DCCP.publish.month = doc.cve.CVE_data_meta.DATE_PUBLIC.substr(5, 2);
}
//if(DCCP.share_with_CVE) {
// delete DCCP.share_with_CVE;
//}
if (DCCP.merge_with) {
delete DCCP.merge_with;
}
if (DCCP.state) {
doc.cve.CVE_data_meta.STATE = statemap[DCCP.state];
delete DCCP.state;
}
}
// change this code to copy over advisory id from URL to source.advisory field.
/*
if (doc.cve.references && doc.cve.references.reference_data) {
var jsa = doc.cve.references.reference_data[0].url.match(/JSA\d+/);
if (jsa) {
if (!doc.cve.source.advisory) {
doc.cve.source.advisory = jsa[0];
}
}
}
*/
if (doc.cve.affects && doc.cve.affects.vendor && doc.cve.affects.vendor.vendor_data) {
for (var vi in doc.cve.affects.vendor.vendor_data) {
var v = doc.cve.affects.vendor.vendor_data[vi];
//print(v.vendor_name);
if (v.product && v.product.product_data) {
for (var pi in v.product.product_data) {
var p = v.product.product_data[pi];
//print(p.product_name);
if (p.version && p.version.version_data) {
for (var vri in p.version.version_data) {
var vr = p.version.version_data[vri];
//print(vr.version_value);
var k = vr.version_value.match(/(.*)\s+prior\s+to\s+(.*)/i);
if (k) {
vr.version_name = k[1];
vr.affected = "<";
vr.version_value = k[2];
}
}
}
}
}
}
}
if (doc.cve.credit)
var newCredit = [];
for (ci in doc.cve.credit) {
var c = doc.cve.credit[ci];
if (typeof c === 'string' || c instanceof String) {
newCredit.push({
lang: "eng",
value: c
});
} else {
newCredit.push(c);
}
}
if (doc.cve.solution instanceof String || typeof doc.cve.solution === 'string') {
var solution = [{
lang: "eng",
"value": doc.cve.solution
}];
doc.cve.solution = solution;
}
if (doc.cve.exploit instanceof String || typeof doc.cve.exploit === 'string') {
var exploit = [{
lang: "eng",
"value": doc.cve.exploit
}];
doc.cve.exploit = exploit;
}
doc.body = doc.cve;
delete doc.cve;
}
return doc;
}