]> Sergey Matveev's repositories - stargrave-blog.git/commitdiff
Проверка отсутствия лишних полей в 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)
KEKS/Schema я написал уже относительно давно. Но только сегодня был
шокирован осознанием того, что у меня не было возможности убедиться
через схемы в том, что в MAP нет лишних полей, за исключением явно
перечисленных, пускай даже и optional. Это вообще поведение по
умолчанию как и в ASN.1, так и в CDDL. И мои команды валидации не
позволяли это проверить.

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

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


No differences found