diff --git a/ctf/templates/init/schemas/track.yaml.json b/ctf/templates/init/schemas/track.yaml.json index 404d9fa..871e559 100644 --- a/ctf/templates/init/schemas/track.yaml.json +++ b/ctf/templates/init/schemas/track.yaml.json @@ -239,7 +239,19 @@ "items": { "description": "A flag definition.", "type": "object", - "required": ["flag", "value", "return_string"], + "if": { + "properties": { + "value": { + "const": 0 + } + } + }, + "then": { + "required": ["flag", "value", "return_string"] + }, + "else": { + "required": ["flag", "value", "return_string", "cfss"] + }, "additionalProperties": false, "properties": { "flag": { diff --git a/ctf/validators.py b/ctf/validators.py index f1e7c35..edef761 100644 --- a/ctf/validators.py +++ b/ctf/validators.py @@ -487,6 +487,9 @@ def validate(self, track_name: str) -> list[ValidationError]: track_yaml = parse_track_yaml(track_name=track_name) for flag in track_yaml["flags"]: + # We don't need a CVSS if the flag value is 0 + if flag.get("value") == 0: + continue if "cfss" not in flag: errors.append( ValidationError(