]> Sergey Matveev's repositories - stargrave-blog.git/commit
Проверка отсутствия лишних полей в KEKS
authorSergey Matveev <stargrave@stargrave.org>
Thu, 9 Oct 2025 20:02:00 +0000 (23:02 +0300)
committerSergey Matveev <stargrave@stargrave.org>
Thu, 9 Oct 2025 20:02:00 +0000 (23:02 +0300)
commit021d6a90d3dfc6c0b812c66f1b4e811a444644fe
tree4b825dc642cb6eb9a060e54bf8d69288fbee4904
parent04fb1bc910382a9ffb844c3020591fff81a1bc7c
Проверка отсутствия лишних полей в KEKS

KEKS/Schema я написал уже относительно давно. Но только сегодня был
шокирован осознанием того, что у меня не было возможности убедиться
через схемы в том, что в MAP нет лишних полей, за исключением явно
перечисленных, пускай даже и optional. Это вообще поведение по
умолчанию как и в ASN.1, так и в CDDL. И мои команды валидации не
позволяли это проверить.

Добавил команду EXAMINED, которая декрементирует счётчик кол-ва
неучтённых/необработанных полей в MAP. По завершению проверки схемы
напротив MAP-а, он проверяет что равен нулю. Проверка включается только
если хотя бы одна команды EXAMINED была встречена. Соответственно в Tcl
схеме, если не указать "len=~", то EXAMINED команды будут добавляться
после каждого TAKE создаваемого во время выполнения "field" команды
схемы. Иначе EXAMINED не добавляется и проверки на кол-во учтённых полей
не будет.

Для меня на удивление мало кода потребовалось для поддержки этой
команды и вообще проверки.