From 535f064c364064e511aff61cdb029dbe139baea5 Mon Sep 17 00:00:00 2001 From: zer0x64 Date: Sun, 5 Apr 2026 14:52:30 -0400 Subject: [PATCH] allow omitting cfss on 0 flag --- ctf/templates/init/schemas/track.yaml.json | 14 +++++++++++++- ctf/validators.py | 3 +++ 2 files changed, 16 insertions(+), 1 deletion(-) 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(