From 487832e662ada98f00df9067a180b0a4c8b83df3 Mon Sep 17 00:00:00 2001 From: NagyZoltanPeter <113987313+NagyZoltanPeter@users.noreply.github.com> Date: Tue, 7 Apr 2026 14:24:51 +0200 Subject: [PATCH] Add pre-check of options used in config Json for logos-delivery-api pre-createNode, treat unrecognized options as error --- liblogosdelivery/logos_delivery_api/node_api.nim | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/liblogosdelivery/logos_delivery_api/node_api.nim b/liblogosdelivery/logos_delivery_api/node_api.nim index cd644abd7..3555b096d 100644 --- a/liblogosdelivery/logos_delivery_api/node_api.nim +++ b/liblogosdelivery/logos_delivery_api/node_api.nim @@ -1,4 +1,4 @@ -import std/[json, strutils] +import std/[json, strutils, sets] import chronos, chronicles, results, confutils, confutils/std/net, ffi import waku/factory/waku, @@ -28,6 +28,16 @@ registerReqFFI(CreateNodeRequest, ctx: ptr FFIContext[Waku]): " configJson string: " & $configJson ) + # Collect known fields + var knownFields = initHashSet[string]() + for confField, _ in fieldPairs(conf): + knownFields.incl(confField) + # Check for unknown keys + for key in jsonNode.keys: + if key notin knownFields: + error "Invalid configuration option found.", option = key + return err("Invalid configuration option found: " & key) + for confField, confValue in fieldPairs(conf): if jsonNode.contains(confField): let formattedString = ($jsonNode[confField]).strip(chars = {'\"'})