Skip to content

Commit 59c2a46

Browse files
Merge pull request #294 from secvisogram/196-csaf-2.1_optional_test_6.2.38
feat: add optional test 6.2.38
2 parents a7e7792 + 9b78ab2 commit 59c2a46

File tree

4 files changed

+55
-1
lines changed

4 files changed

+55
-1
lines changed

csaf_2_1/recommendedTests.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,3 +27,4 @@ export { recommendedTest_6_2_8 } from './recommendedTests/recommendedTest_6_2_8.
2727
export { recommendedTest_6_2_9 } from './recommendedTests/recommendedTest_6_2_9.js'
2828
export { recommendedTest_6_2_3 } from './recommendedTests/recommendedTest_6_2_3.js'
2929
export { recommendedTest_6_2_22 } from './recommendedTests/recommendedTest_6_2_22.js'
30+
export { recommendedTest_6_2_38 } from './recommendedTests/recommendedTest_6_2_38.js'
Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
import Ajv from 'ajv/dist/jtd.js'
2+
3+
const ajv = new Ajv()
4+
5+
const inputSchema = /** @type {const} */ ({
6+
additionalProperties: true,
7+
properties: {
8+
document: {
9+
additionalProperties: true,
10+
properties: {
11+
category: { type: 'string' },
12+
},
13+
},
14+
},
15+
})
16+
17+
const validate = ajv.compile(inputSchema)
18+
19+
/**
20+
* This implements the recommended test 6.2.38 of the CSAF 2.1 standard.
21+
*
22+
/**
23+
* @param {any} doc
24+
*/
25+
export function recommendedTest_6_2_38(doc) {
26+
/** @type {Array<{ message: string; instancePath: string }>} */
27+
const warnings = []
28+
const context = { warnings }
29+
30+
if (!validate(doc)) {
31+
return context
32+
}
33+
34+
if (doc.document.category.match(/^csaf_deprecated_.*$/)) {
35+
context.warnings.push({
36+
message:
37+
'The document category indicates the usage of a deprecated profile as it starts with "csaf_deprecated_"',
38+
instancePath: '/document/category',
39+
})
40+
}
41+
42+
return context
43+
}

tests/csaf_2_1/oasis.js

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -63,7 +63,6 @@ const excluded = [
6363
'6.2.35',
6464
'6.2.36',
6565
'6.2.37',
66-
'6.2.38',
6766
'6.2.39.1',
6867
'6.2.39.2',
6968
'6.2.39.3',
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
import assert from 'node:assert'
2+
import { recommendedTest_6_2_38 } from '../../csaf_2_1/recommendedTests.js'
3+
4+
describe('recommendedTest_6_2_38', function () {
5+
it('only runs on relevant documents', function () {
6+
assert.equal(
7+
recommendedTest_6_2_38({ vulnerabilities: 'mydoc' }).warnings.length,
8+
0
9+
)
10+
})
11+
})

0 commit comments

Comments
 (0)