XML output writes a vulnerability's `created` date as `published` and `updated`
Los mantenedores suelen responder en 7 días
Nadie ha tomado este issue todavía.
Evaluación
- Dificultad
- 2/5
- Tiempo estimado
- 1-3 horas
- Aptitud para principiantes
- 88/100
- Tipo de issue
- Error
- Claridad
- Bien especificado
- Estado de actividad
- Activo
- Stack tecnológico
- node.js, typescript, xml
Línea de trabajo
Empieza en src/serialize/xml/normalize.ts, en VulnerabilityNormalizer, y revisa la construcción del elemento de fecha. Compara la salida XML con las fechas del modelo y la salida JSON existente. Actualiza el normalizador XML y añade o ajusta la cobertura para fechas distintas y ausentes; el XML debería conservar cada fecha de forma independiente, y las snapshots relevantes deberían coincidir.
Escrito por el modelo de indexación a partir del texto del issue.
Descripción
Describe the bug
The XML normalizer writes a vulnerability's created date into all three date elements. published and updated are never read, so in XML they are wrong, missing, or made up. The JSON output is correct.
To reproduce
const { Models, Serialize, Spec } = require('@cyclonedx/cyclonedx-library')
const bom = new Models.Bom()
bom.vulnerabilities.add(new Models.Vulnerability.Vulnerability({
bomRef: 'v1',
created: new Date('2021-01-01T00:00:00Z'),
published: new Date('2022-02-02T00:00:00Z'),
updated: new Date('2023-03-03T00:00:00Z')
}))
const serializer = new Serialize.XmlSerializer(
new Serialize.XML.Normalize.Factory(Spec.Spec1dot6))
console.log(serializer.serialize(bom, { space: 2 }))
Output:
<created>2021-01-01T00:00:00.000Z</created>
<published>2021-01-01T00:00:00.000Z</published>
<updated>2021-01-01T00:00:00.000Z</updated>
Two more cases:
| Dates set on the model | XML output |
|---|---|
only published and updated |
no date elements at all |
only created |
created, plus published and updated with the same value |
Expected behaviour
Each element carries its own value, as in the JSON output:
<created>2021-01-01T00:00:00.000Z</created>
<published>2022-02-02T00:00:00.000Z</published>
<updated>2023-03-03T00:00:00.000Z</updated>
Cause
src/serialize/xml/normalize.ts, in VulnerabilityNormalizer:
makeOptionalDateTimeElement(data.created, 'created'),
makeOptionalDateTimeElement(data.created, 'published'),
makeOptionalDateTimeElement(data.created, 'updated'),
The stored snapshots show it too: tests/_data/models.js sets published to ...00:00:41 and updated to ...00:00:42, and tests/_data/serializeResults/xml_complex_spec1.6.xml.bin has ...00:00:40 three times.
Environment
- Library version: 10.5.0 (
mainat 7456cad) - Node.js 24.18.0, Windows 11
I can open a PR with the fix and the regenerated snapshots.
AI disclosure: this was found with the help of Claude Code. The snippet was run against the built library.
- Lenguaje dominante
- TypeScript
- Estrellas
- 25
- Forks
- 16
- Merge medio
- 5 d 17 h
- PR fusionados (30 d)
- 9
Preparar el entorno
- Sin Dockerfile ni archivo de Docker Compose
- Tiene una plantilla de pull request
- Leer la guía de contribución
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Más de CycloneDX/cyclonedx-javascript-library
-
export for denoAbiertoenhancement
Dificultad 2/5 1-3 horas Aptitud para principiantes 68/100
CycloneDX/cyclonedx-javascript-library#1514 ·
Los mantenedores suelen responder en 7 días
-
CycloneDX 1.7.1Abierto
Dificultad 3/5 1-2 días Aptitud para principiantes 48/100
CycloneDX/cyclonedx-javascript-library#1463 ·
Los mantenedores suelen responder en 7 días
-
Dificultad 3/5 1-2 días Aptitud para principiantes 68/100
CycloneDX/cyclonedx-javascript-library#1446 ·
Los mantenedores suelen responder en 7 días
-
Dificultad 5/5 Más de una semana Aptitud para principiantes 25/100
CycloneDX/cyclonedx-javascript-library#1441 ·
Los mantenedores suelen responder en 7 días
-
feat: Deserializer/DenormalizerAbiertoenhancement schema 2.0
Dificultad 5/5 Más de una semana Aptitud para principiantes 35/100
CycloneDX/cyclonedx-javascript-library#1436 ·
Los mantenedores suelen responder en 7 días
Todos los issues de CycloneDX/cyclonedx-javascript-library
Issues similares
-
area:tooling good first issue
Dificultad 2/5 1-3 horas Aptitud para principiantes 68/100
interledger/publisher-tools#1007 ·
Los mantenedores suelen responder en 1 día
-
priority/medium roadmap/v1.1.1 stakeholder/rapr type/bug
Dificultad 2/5 1-3 horas Aptitud para principiantes 83/100
databrickslabs/ontos#1420 ·
Los mantenedores suelen responder en 3 días
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 76/100
vercel-labs/just-bash#756 ·
Los mantenedores suelen responder en 1 día
-
area: ci good first issue
Dificultad 1/5 Menos de una hora Aptitud para principiantes 85/100
interledger/web-monetization-extension#1555 ·
Los mantenedores suelen responder en 1 día
-
[t-dialog] 弹窗组件和抽屉组件的文档说明不够详细清楚Abierto🐞 bug 🧐 unconfirmed
Dificultad 2/5 1-3 horas Aptitud para principiantes 72/100
Tencent/tdesign-vue-next#7056 · 1 comentario ·
Los mantenedores suelen responder en 1 día