fix: reference 可能包含多个 url 字段

Signed-off-by: Jia Chao <jiac13@chinaunicom.cn>
This commit is contained in:
Jia Chao 2024-06-12 10:43:17 +08:00
parent 809d87897e
commit 524b23e0d8
2 changed files with 8 additions and 5 deletions

View File

@ -521,14 +521,14 @@ impl Note {
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct Reference {
pub r#type: String,
pub url: String,
pub url: Vec<String>,
}
impl Reference {
pub fn new() -> Self {
Reference {
r#type: String::new(),
url: String::new(),
url: Vec::new(),
}
}
@ -537,8 +537,11 @@ impl Reference {
loop {
match xmlreader.next() {
Ok(XmlEvent::StartElement { attributes, .. }) => {
self.r#type = attributes[0].value.clone();
self.url = xmlreader.next_characters();
if xmlreader.depth == 3 {
self.r#type = attributes[0].value.clone();
} else {
self.url.push(xmlreader.next_characters());
}
}
Ok(XmlEvent::EndElement { .. }) => {
if xmlreader.depth < 3 {

View File

@ -54,7 +54,7 @@ fn cvrf_works() {
let reference_url = "https://www.openeuler.org/en/security/cve/detail.html?id=CVE-2023-45288";
assert_eq!(cvrf.documentreferences.len(), 3);
assert_eq!(cvrf.documentreferences[1].r#type, reference_type);
assert_eq!(cvrf.documentreferences[1].r#url, reference_url);
assert_eq!(cvrf.documentreferences[1].url[0], reference_url);
// producttree
let producttree_productid = "openEuler-22.03-LTS";