From patchwork Mon Oct 9 15:28:35 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Stefano Babic X-Patchwork-Id: 1845311 X-Patchwork-Delegate: sbabic@denx.de Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@legolas.ozlabs.org Authentication-Results: legolas.ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=googlegroups.com header.i=@googlegroups.com header.a=rsa-sha256 header.s=20230601 header.b=KygdKPs7; dkim-atps=neutral Authentication-Results: legolas.ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=googlegroups.com (client-ip=2a00:1450:4864:20::63f; helo=mail-ej1-x63f.google.com; envelope-from=swupdate+bncbaabbkfyscuqmgqeehvtkva@googlegroups.com; receiver=patchwork.ozlabs.org) Received: from mail-ej1-x63f.google.com (mail-ej1-x63f.google.com [IPv6:2a00:1450:4864:20::63f]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (secp384r1) server-digest SHA384) (No client certificate requested) by legolas.ozlabs.org (Postfix) with ESMTPS id 4S42xS58G8z1yq1 for ; Tue, 10 Oct 2023 02:28:44 +1100 (AEDT) Received: by mail-ej1-x63f.google.com with SMTP id a640c23a62f3a-9b97f1b493dsf378361366b.3 for ; Mon, 09 Oct 2023 08:28:44 -0700 (PDT) ARC-Seal: i=2; a=rsa-sha256; t=1696865321; cv=pass; d=google.com; s=arc-20160816; b=vGO1nx7IKz4buc5KohjntiP4bcEsBh3xaPIGg6j/4mhAx4pdw7Z2+sxhSAxyobzX8r OtjEX9KKY+5ZaQ0QXirRcXSzoJ6Cg3uKNM/25m3vYUyUU8My3cRrhF43O0bn3B1hmo55 BWQMDv/Sy+S5G5F2AeXF362LfKvNVcJ2i3cNOkU3W++wPQsm5an0U270npBocnLvfyvu tOT2stLBBTd14HgXDzqLjR3pTY7iHC0JWr40pSFXGSJXSgojxBqqhFFm04kRDjCG28Gb 3BQMOf63UdI7fG/M0cDYER9FJVOXqHGEjndnuq2qE4iVwFbN8WYrtEzY/zbImHOF5uwb gkBw== ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-unsubscribe:list-subscribe:list-archive:list-help:list-post :list-id:mailing-list:precedence:ui-outboundreport:mime-version :message-id:date:subject:cc:to:from:sender:dkim-signature; bh=EtKh03aJB7uPoYYMRobEOwblcKknWbXOpZo9eRg6uxM=; fh=TiEWcqMcKpHk5s7uErzpntoONrNfOXwKpI5P8bIlggk=; b=MUdM9HYablMHHa2kRfJ+7bcclNsT6VHgpdTIVlsPLpLqu/BxFIUUTFwDUTHYVyepMS w/uWPzT3ye6I/gESSsSi1SHynBt5mu7F/tjMBwFBEpWgaNuAnCIaTH8HAZymEYcYhrgB hxLoHZ6kVoNfOuECBph+ACXYmUJ2PzPaeXkMzSYVF16uISUrGDBTs0ZIYjX3BlbCHOXW g7+NXuSdg4QUgiyJb+sby8Un+yr6n1nASYHYm+5XjZsZNkwxS2QNRUMxCfMQfvK0M6GH orMlp8nGRsN8mhJh5V4StgMfiX7WyKnd0IQfPixIBtCiIgSKaZ3FuMgpwDeZFlqa/ZjE tilw== ARC-Authentication-Results: i=2; gmr-mx.google.com; spf=pass (google.com: domain of stefano.babic@swupdate.org designates 212.227.17.24 as permitted sender) smtp.mailfrom=stefano.babic@swupdate.org DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=googlegroups.com; s=20230601; t=1696865321; x=1697470121; darn=patchwork.ozlabs.org; h=list-unsubscribe:list-subscribe:list-archive:list-help:list-post :list-id:mailing-list:precedence:x-original-authentication-results :x-original-sender:ui-outboundreport:mime-version:message-id:date :subject:cc:to:from:sender:from:to:cc:subject:date:message-id :reply-to; bh=EtKh03aJB7uPoYYMRobEOwblcKknWbXOpZo9eRg6uxM=; b=KygdKPs7OPZmzIKEZp/AJdamCIvH8emmlo4Tr3w+xDL3R7E9I8r/kZ76kuGBHCkflo 7AllSx77vyqsPi5BV0nbDc2cF92neLo/MCHQia8I+Ha2seZAGM9ZOnU4OFfPW85fZjes fzjJBptHCJS5rfQ6ma1W3nhw1mCrQptC2PsarpADY6Sykf07a7sJA/jDwA2KPfcjVPBC f4F6Gt8SzXqGQMxXkojmDDZHiDZJ5AtypJHw9uo40BjHBecUrq2TErTgwmgFHf2eOkm0 50hFz1AQ5dsHJ7ZNVSiLJk3ufaW58LXbuDEo4RGsMyBo4Q+HUDRGReodk4hcf/p7zCXt 53lQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1696865321; x=1697470121; h=list-unsubscribe:list-subscribe:list-archive:list-help:list-post :x-spam-checked-in-group:list-id:mailing-list:precedence :x-original-authentication-results:x-original-sender :ui-outboundreport:mime-version:message-id:date:subject:cc:to:from :x-beenthere:x-gm-message-state:sender:from:to:cc:subject:date :message-id:reply-to; bh=EtKh03aJB7uPoYYMRobEOwblcKknWbXOpZo9eRg6uxM=; b=Ruuw2+zZg262ccAleLVAvyMpoDLE7sRtW+HRsObezurljUvM8WrmEbd9uCeQ0rIlvy 2DcKw4Hwvs659hrMT2KvBxwzwixBpFezlj0z1XO3SpDz8Aq7l2oyiOqa9H3OBOaiBtqv 8hVFsRkAbXyiD8erjx8dP8avHzhMFiS8HOawj0HmDXGe24Z6KphhLB6RV3ATPFdWQPXT EE4iBp2X5+buPbEj0gl9drpX/d8GvcOOVLfmCU/AideIZBYjz4UIySzsAvEC/S69Srhd fC6jgzy4DYDGNnRUFwX1bQjIox3B6MmZqdqH/DXYAzDhv3bKHkdhqIBqGcZPjcFy3wfX 7ttw== Sender: swupdate@googlegroups.com X-Gm-Message-State: AOJu0YyRy5xyOzy2DLcfG3RNnA2VXx4bMvucwsi0NhV+kYsoOdbeTyBh 0o71HOM72vlaNKEE5hlu0NE= X-Google-Smtp-Source: AGHT+IG7dejrVnAkFmTV+xgJCCtSDyr21YrMpVk6csqzvAbcmm+IJw2vHhPKKQj9ehlu4mwZpN8Ppg== X-Received: by 2002:a17:906:74c3:b0:9b7:292:85f6 with SMTP id z3-20020a17090674c300b009b7029285f6mr12848943ejl.12.1696865320934; Mon, 09 Oct 2023 08:28:40 -0700 (PDT) X-BeenThere: swupdate@googlegroups.com Received: by 2002:aa7:c58a:0:b0:537:a193:1300 with SMTP id g10-20020aa7c58a000000b00537a1931300ls222888edq.1.-pod-prod-05-eu; Mon, 09 Oct 2023 08:28:39 -0700 (PDT) X-Received: by 2002:a17:906:3282:b0:9a5:846d:d81f with SMTP id 2-20020a170906328200b009a5846dd81fmr13066310ejw.17.1696865318977; Mon, 09 Oct 2023 08:28:38 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1696865318; cv=none; d=google.com; s=arc-20160816; b=VKzE5BsxYJMvZ0FOvaIQVP85PWlSYSSc2NoEM85DPNBiZ07DL89v4DZE31hSCVhLLP ExM65bv4Q1EjLurnYP9iusYqnwJE3g3IqjtlC/HgYHBn0JPonbWPTU0cpLu6Mwe2n/fE MZ/bun/vjvVSFbTVW2U/EYH16N/rdX2uPB6h1EA+D3R9cskFdpQn1TNgHfUh58Wo4bZk dw+OIm9XVDyTJVhyoQHVhH1FkGGYUol7qv3P79eknyyPCtor+37+VFWQmrgCNDhEhUub Er6cEtl5DGKC4REL0xN6mOe9IZeFo3Oanz/gXjzam8LLtBXhuf/3OzXMq3uHq97d9l00 CaIg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=ui-outboundreport:content-transfer-encoding:mime-version:message-id :date:subject:cc:to:from; bh=lIvzwEDYTHeSW+ZIqrSxEQVViFUeh2bcSOzEW1HWDdY=; fh=TiEWcqMcKpHk5s7uErzpntoONrNfOXwKpI5P8bIlggk=; b=HQ7y4LlBQ3Q2kQh06yClpqewZqgTyGTnCcjbUKeiDIqwP3H3mh/p9XbHbFuXqSKmOC Eh3JAbTdNLryxUlIgx1NtWXFYl3E0pa9hdNYNNNtc8G9r1RefIcwobgKPR0lDu1jwrzR tKi2SogBVwA+sZ9QpQCnPCGvTGrWEkEkIbzog+sr3saBhTtQBOGq4u8QiPsfB4D57LAe qK7crJOEwcsTQeYiJLmyzoVJCB2xIAKBELfOjFLnY97d+2WKuxlOhznb1aW5PbbZE4LD nguPKOtiLKsKE8XH8Jx2TWxkJQIMrtdS7qKGbIaU8wT3NHOHEK7XsDqxYVJihQT9vyzz nw+A== ARC-Authentication-Results: i=1; gmr-mx.google.com; spf=pass (google.com: domain of stefano.babic@swupdate.org designates 212.227.17.24 as permitted sender) smtp.mailfrom=stefano.babic@swupdate.org Received: from mout.kundenserver.de (mout.kundenserver.de. [212.227.17.24]) by gmr-mx.google.com with ESMTPS id sa14-20020a1709076d0e00b009ae3e884341si699477ejc.0.2023.10.09.08.28.38 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 09 Oct 2023 08:28:38 -0700 (PDT) Received-SPF: pass (google.com: domain of stefano.babic@swupdate.org designates 212.227.17.24 as permitted sender) client-ip=212.227.17.24; Received: from paperino.fritz.box ([88.217.136.221]) by mrelayeu.kundenserver.de (mreue109 [213.165.67.113]) with ESMTPSA (Nemesis) id 1MCsLu-1qh6k21h20-008s8c; Mon, 09 Oct 2023 17:28:38 +0200 From: Stefano Babic To: swupdate@googlegroups.com Cc: Stefano Babic Subject: [swupdate] [PATCH 1/2] parselib: function to check if a field is numeric Date: Mon, 9 Oct 2023 17:28:35 +0200 Message-Id: <20231009152836.416267-1-stefano.babic@swupdate.org> X-Mailer: git-send-email 2.34.1 MIME-Version: 1.0 X-Provags-ID: V03:K1:wc9c6gBxpujhDyNA5uiSCldAV8nd9QrsiaTK8LwW9hx4WDzgFMJ REIwNo2FFFvSVaQKgYMxxivg5aaRO5YPLY7uXtYHFgqAC1bIDbYo2Wiz5euTZCap4OxofhB eVAMDW5kYdlti38ZbYZUO2pJFQuRCPIMMLMRGsduQhaXDRwqp6Ciev3qKw3wKEj9tpwIAF5 H0YNiNvjQACPj6CDYEhxA== X-Spam-Flag: NO UI-OutboundReport: notjunk:1;M01:P0:HQFCyrgbvQ4=;Gvxz1/smHDJfWZIIS4lS+Bq2RAN YMCT3IWY0OKVzykqMQ4oB4GWtCwlB9D97gNvSzh59Ae1Jtg573NnicrnegoUKVnZzILMZKHT7 DejIGSl84GoE4b0ysuROFWw3LfwxVvYQ50yu6Pc9ZIGxYKNr8Tn5ilac7Z0ZqeP1sb40SrxPP mva3+eUfCcJVcHZ4QYkiBVgLflME1c+s2MZWe89xpvevTozEZzJZtqdgxWFjoye0vCmQySQq5 7EvdIjOISLze/blg8livtQStR7RJT333b2sjI5THowsS6qLt5Pq9B53RuEZ9LFPPF5yDw/1AY Ovnhqndf0GOqrRjrAi9leO+ABzvxJ+3TLJF7vWO4j1v6q9DdaQt91a0HZ3ht1WiOmGULOXmEw zME6ybWdUL2pwnKpakDnJ7nKmUrXilXjJJv3Fst1VWhM+NT9xRPV5MjeKhGgcBDJ+2LfOksyY bPBtXAOAPsnXAk5N+ykAdI8AJf06PyqfLseg33oLKMgfVXm+3pmWQevK14v+lOfrS1scUNjsY WpFDqzCHwFNCSS+h9MkQOAPYgPYtksAEOAV/ptYZFpNkuydJPEkCs2yjdoc+A6CRT5zreY4BL oqNOorzfL4d8bwuVNwGATRWmPwcjQLj23gjzew/8/u3j/ek00GO0LN9wJ81ADHXVb3EzlyHHl FwJify2LF6DPoGQzE3liKZrOwRZwABxQnTu3K1EzG7gdpJpKit49w5BHy69hvbGcfYJDYHSsE apEwXnxwCKFs4afLMy91ehbhlULc6VKzhx33grIA7mX344KsEZz+eMQZH71dvB24qORACxBeb 9eaMb1pwh5iFG1rW0XpBs+Vt2ON+kOc6JnI8vWGvcWBxzU1ocklkbi6VnR+XpKgtAbsq/m5JP C4Xp6BJObV6fP7VRvKQYm3a8hxjKSTxCOjxU= X-Original-Sender: stefano.babic@swupdate.org X-Original-Authentication-Results: gmr-mx.google.com; spf=pass (google.com: domain of stefano.babic@swupdate.org designates 212.227.17.24 as permitted sender) smtp.mailfrom=stefano.babic@swupdate.org Precedence: list Mailing-list: list swupdate@googlegroups.com; contact swupdate+owners@googlegroups.com List-ID: X-Spam-Checked-In-Group: swupdate@googlegroups.com X-Google-Group-Id: 605343134186 List-Post: , List-Help: , List-Archive: , List-Unsubscribe: , This allows to check if an elem is numeric to call the right funtion to retrieve the value. Signed-off-by: Stefano Babic --- core/parsing_library.c | 14 ++++++++++++++ corelib/parsing_library_libconfig.c | 20 ++++++++++++++++++++ corelib/parsing_library_libjson.c | 17 +++++++++++++++++ include/parselib.h | 3 +++ 4 files changed, 54 insertions(+) diff --git a/core/parsing_library.c b/core/parsing_library.c index c39745ba..8d216838 100644 --- a/core/parsing_library.c +++ b/core/parsing_library.c @@ -120,6 +120,20 @@ void get_field_string_with_size(parsertype p, void *e, const char *path, char *d } } +bool is_field_numeric(parsertype p, void *e, const char *path) +{ + switch (p) { + case LIBCFG_PARSER: + return is_field_numeric_cfg((config_setting_t *)e, path); + case JSON_PARSER: + return is_field_numeric_json((json_object *)e, path); + default: + (void)e; + (void)path; + } + return false; +} + void get_field(parsertype p, void *e, const char *path, void *dest) { switch (p) { diff --git a/corelib/parsing_library_libconfig.c b/corelib/parsing_library_libconfig.c index a54a7686..de7340ee 100644 --- a/corelib/parsing_library_libconfig.c +++ b/corelib/parsing_library_libconfig.c @@ -71,6 +71,26 @@ void iterate_field_libconfig(config_setting_t *e, iterate_callback cb, void *dat } } +bool is_field_numeric_cfg(config_setting_t *e, const char *path) +{ + config_setting_t *elem; + int type; + + if (path) + elem = config_setting_lookup(e, path); + else + elem = e; + + if (!elem) + return false; + + type = config_setting_type(elem); + + return type == CONFIG_TYPE_INT || + type == CONFIG_TYPE_INT64 || + type == CONFIG_TYPE_FLOAT; +} + void get_field_cfg(config_setting_t *e, const char *path, void *dest) { config_setting_t *elem; diff --git a/corelib/parsing_library_libjson.c b/corelib/parsing_library_libjson.c index 11db74dd..60eeb6c2 100644 --- a/corelib/parsing_library_libjson.c +++ b/corelib/parsing_library_libjson.c @@ -124,6 +124,23 @@ void get_value_json(json_object *e, void *dest) } } +bool is_field_numeric_json(json_object *e, const char *path) +{ + enum json_type type; + json_object *fld = NULL; + + if (path) { + if (!json_object_object_get_ex(e, path, &fld)) + return false; + } else { + fld = e; + } + + type = json_object_get_type(fld); + return type == json_type_int || + type == json_type_double; +} + void get_field_json(json_object *e, const char *path, void *dest) { json_object *fld = NULL; diff --git a/include/parselib.h b/include/parselib.h index 66ea2b5a..387ddc67 100644 --- a/include/parselib.h +++ b/include/parselib.h @@ -33,6 +33,7 @@ typedef void (*iterate_callback)(const char *name, const char *value, #define config_setting_lookup config_lookup_from #endif +bool is_field_numeric_cfg(config_setting_t *e, const char *path); void get_value_libconfig(const config_setting_t *e, void *dest); void get_field_cfg(config_setting_t *e, const char *path, void *dest); void *get_child_libconfig(void *e, const char *name); @@ -58,6 +59,7 @@ void *get_node_libconfig(config_t *cfg, const char **nodes); #ifdef CONFIG_JSON #include +bool is_field_numeric_json(json_object *e, const char *path); const char *get_field_string_json(json_object *e, const char *path); void get_value_json(json_object *e, void *dest); void get_field_json(json_object *e, const char *path, void *dest); @@ -85,6 +87,7 @@ void *get_node_json(json_object *root, const char **nodes); #define get_node_json(root, nodes) (NULL) #endif +bool is_field_numeric(parsertype p, void *e, const char *path); const char *get_field_string(parsertype p, void *e, const char *path); void get_field_string_with_size(parsertype p, void *e, const char *path, char *d, size_t n); From patchwork Mon Oct 9 15:28:36 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Stefano Babic X-Patchwork-Id: 1845312 X-Patchwork-Delegate: sbabic@denx.de Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@legolas.ozlabs.org Authentication-Results: legolas.ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=googlegroups.com header.i=@googlegroups.com header.a=rsa-sha256 header.s=20230601 header.b=EqWK20HX; dkim-atps=neutral Authentication-Results: legolas.ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=googlegroups.com (client-ip=2a00:1450:4864:20::13d; helo=mail-lf1-x13d.google.com; envelope-from=swupdate+bncbaabbknyscuqmgqe4yk7ntq@googlegroups.com; receiver=patchwork.ozlabs.org) Received: from mail-lf1-x13d.google.com (mail-lf1-x13d.google.com [IPv6:2a00:1450:4864:20::13d]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (secp384r1) server-digest SHA384) (No client certificate requested) by legolas.ozlabs.org (Postfix) with ESMTPS id 4S42xV2vCqz1yq1 for ; Tue, 10 Oct 2023 02:28:46 +1100 (AEDT) Received: by mail-lf1-x13d.google.com with SMTP id 2adb3069b0e04-5043307ec0bsf4059330e87.2 for ; Mon, 09 Oct 2023 08:28:45 -0700 (PDT) ARC-Seal: i=2; a=rsa-sha256; t=1696865322; cv=pass; d=google.com; s=arc-20160816; b=uldHFZrexNMwH5jzEtnjSW9Q+2rxat9zwPimCr3mx4nNsJ/KY2sf/Z6HBQ8Ut61ELZ 5Bzi/V9eUZ9maInSYKFIP5wv8cpSa9vFRkEFKTfKEVP4O2mWOF2x91kX4+NIdpitKRuB KEwWgc8wUn1pcmYsQpOGsvGQxYzroLDH8ZVLkuRVAmZ0NpOLsp91nA1Fsq7H4iJ5v+BO ykY5AaOSgmpsXNtII4cgJ+y7v7aqlsJYR35sWTK3KbXwfleZ6Bq7nbcCpHy+xsx+Meu1 No9MdZZDByETjIz/eKy0CMZJP9hb0Mv/GFofXWb99sW+FFSptXwkwL+ywqSXDZq22jIx vBnA== ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-unsubscribe:list-subscribe:list-archive:list-help:list-post :list-id:mailing-list:precedence:ui-outboundreport :content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:sender:dkim-signature; bh=LyLODBYUHxitEKRDyzkGNHsHFILBv1W1EtP25VH8eeI=; fh=xyVQkp0/GQNgAb1PNWWO8gt7zijvopO38DEdoUKgFOk=; b=FH9rTPfyge9p1f2BGh2p5OFcoP8e4eW1Oq5VZstEPf15bnhBsRZwmfgpohvDc8ziI1 37YpmeuzLsOzMs3svuPLhRFpk9eSYcAgdrgJcFcHG/W/qXbzRDp4nj+d36CpXOGAg42J kaS+4LB1JOf9my3mnn69cvpFEFMFhvjbUVYpG/uOEYPa1KhLvhaL/IM+v2iI6SDBKCpW mI0Hxi7KiM6yh5gqiakty5XvJ+51ne1B6xvAcZDtm9HpdDLl84Rrg58fXWJMSYAoT5ju j42PcfVTZwVhv5xSW/ynpUM6RSg6K3T4J/tLXbFjFV4rcBE/UhR8pM64H1eWIIH+hYhl hLhw== ARC-Authentication-Results: i=2; gmr-mx.google.com; spf=pass (google.com: domain of stefano.babic@swupdate.org designates 212.227.17.24 as permitted sender) smtp.mailfrom=stefano.babic@swupdate.org DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=googlegroups.com; s=20230601; t=1696865322; x=1697470122; darn=patchwork.ozlabs.org; h=list-unsubscribe:list-subscribe:list-archive:list-help:list-post :list-id:mailing-list:precedence:x-original-authentication-results :x-original-sender:ui-outboundreport:content-transfer-encoding :mime-version:references:in-reply-to:message-id:date:subject:cc:to :from:sender:from:to:cc:subject:date:message-id:reply-to; bh=LyLODBYUHxitEKRDyzkGNHsHFILBv1W1EtP25VH8eeI=; b=EqWK20HXtA4JpQ5GH6XejpzRTR7uYm3/bZJFECKPyR/wH+lqWzvsYTX2NkqzthqOzg vD7kerzfhQ/WnVCW4wvgT1Zcxf++ZNMKYomrvW8vJopX9FCRhtzrMZ5rD9fxdphEWN8X LUIMzfYxWhicR7nD0oX6EXzd0pC5iDDGBeDR2iNw9TqP4OvW7LXYzomvSVyFIopYZuRt QDeGduauZPzu30r2k8dvlhcxImpyYzwqYTLfv/5CwE7t20FPI6HtRhl4L83mGXtHutzU tp7CmZp6EeHnsFOJ3roUq1pfe8RFhkv27I2gdY9ESyxMh1qJlU6+0b75exSLvs/rzZog 4bEQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1696865322; x=1697470122; h=list-unsubscribe:list-subscribe:list-archive:list-help:list-post :x-spam-checked-in-group:list-id:mailing-list:precedence :x-original-authentication-results:x-original-sender :ui-outboundreport:content-transfer-encoding:mime-version:references :in-reply-to:message-id:date:subject:cc:to:from:x-beenthere :x-gm-message-state:sender:from:to:cc:subject:date:message-id :reply-to; bh=LyLODBYUHxitEKRDyzkGNHsHFILBv1W1EtP25VH8eeI=; b=kyPcAGNt7rSaJ1i/dhgSQ/fz1QyupFadwrHj9U/iHilwoxG7V0wn5LTFwSnCnai89H mXletyNkzQVmr/VaHxBovvGs6dX4PrvnRJ7SpMdBxdmvQPPle6aU90J4ViIYldFZLva4 qlJHw3zaD8+VbLMlDAKl6bQmmr7ajAedR3COZuau06+nzHH3eh15MFkFcIWZFJkMwe6N fuoH026in7Yy6osHrv4krY06sy0NOzeUae4hGZFWLV8t6oUpwQ8kW8g8Q0KTVxhLaA95 rk478ntupGgeNe8er8VAR9eh5ygX948ofhuoorsBJ3/16EX2NF052ItpfRZlzm4ih5ZR Hw7w== Sender: swupdate@googlegroups.com X-Gm-Message-State: AOJu0YyT/NstmAu4D/706GMCgZhyCoo7Fsrxmkmv6m+mrF9mu1aE4V1t 7CpY0i6iVJhRJCh7x4o1I6Q= X-Google-Smtp-Source: AGHT+IFIGQ451igVB5QipbGuu1UviWxrr4HuPhDKSiKPYKCoL7idyVogu/1Ebj7dElL6Y6ENrN7gXw== X-Received: by 2002:a05:6512:238f:b0:500:a002:292a with SMTP id c15-20020a056512238f00b00500a002292amr18593980lfv.29.1696865321736; Mon, 09 Oct 2023 08:28:41 -0700 (PDT) X-BeenThere: swupdate@googlegroups.com Received: by 2002:a05:6512:3c95:b0:506:85c4:49d3 with SMTP id h21-20020a0565123c9500b0050685c449d3ls1508433lfv.1.-pod-prod-09-eu; Mon, 09 Oct 2023 08:28:40 -0700 (PDT) X-Received: by 2002:ac2:5e69:0:b0:505:6fcd:dc32 with SMTP id a9-20020ac25e69000000b005056fcddc32mr11436767lfr.28.1696865320095; Mon, 09 Oct 2023 08:28:40 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1696865320; cv=none; d=google.com; s=arc-20160816; b=RenJlrRSjYlb2TLtT+6dHJwr94y8eGIEC9ZbLS+7qLMWDoznC0V8H11h1CEUWpxYaa qb94kbm8+jE4hsTQeTUq6Ce9E5iThXpCcEo3bpJgWG+XtM2Wrq3/kO1EKzVrYvTaXaiu rnNcy/xz1C6S3Ls7cWH3eRTj2Fb2FxnICcNTH1V7boUQmBAFPAdZmZAuv5fN4oOlZTVA /9mNVRLeRO0JbFDpWowjC6LmCaP23Klcm87cCbf5MklSFZvlmNmSyn6D3br43msCHLb8 nSAuhQ5FDz1P4jtbEk0ImUduM4uSbppcjWbAV2N8jirJRyGXMmAUsg/ZHxpg7sYe54lA j0LQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=ui-outboundreport:content-transfer-encoding:mime-version:references :in-reply-to:message-id:date:subject:cc:to:from; bh=sV3smAynKpjYnMWZQwra/RzFXLQkjeV7oXXbBPK9Hzg=; fh=xyVQkp0/GQNgAb1PNWWO8gt7zijvopO38DEdoUKgFOk=; b=bYDGBguJXvPfUQlsP58CV1eEQGZr4+E8fi7VBlFYQ94ojqrf0uZ/9ByMQvCTeBjZC9 RgNbPEsB8tUYu0GXyoQjato/u8QjYqtisPU4HyHmbJc3mo5V1BPf+qurZoILLjbbl/vW mc3y8b2QuSJzjlGV2E1gZTS6yt/1MdZtuD5g+TzPSFUuvD22/xM5gdsEJB3XyZCR0lNi Jzu7kn+BNjxqulzvNAP2d6UxnCgTwtxFvsqtE6ABYOZZMCurCjZiskrAZm29p/1krYFJ L0iO/iOZ7Qi4Cs6dUgWb2Nf+YVMZBMC133tt3pIs/zVWdqxoVDMZUyVGRWo9FrQ3POfu 4z0Q== ARC-Authentication-Results: i=1; gmr-mx.google.com; spf=pass (google.com: domain of stefano.babic@swupdate.org designates 212.227.17.24 as permitted sender) smtp.mailfrom=stefano.babic@swupdate.org Received: from mout.kundenserver.de (mout.kundenserver.de. [212.227.17.24]) by gmr-mx.google.com with ESMTPS id m7-20020a056512114700b005008765a16fsi367764lfg.13.2023.10.09.08.28.39 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 09 Oct 2023 08:28:40 -0700 (PDT) Received-SPF: pass (google.com: domain of stefano.babic@swupdate.org designates 212.227.17.24 as permitted sender) client-ip=212.227.17.24; Received: from paperino.fritz.box ([88.217.136.221]) by mrelayeu.kundenserver.de (mreue109 [213.165.67.113]) with ESMTPSA (Nemesis) id 1N0G5h-1rkz0z2gPn-00xJST; Mon, 09 Oct 2023 17:28:38 +0200 From: Stefano Babic To: swupdate@googlegroups.com Cc: Stefano Babic , =?utf-8?q?Einar_J=C3=B3n?= Subject: [swupdate] [PATCH 2/2] BUG: JSON parser can't handle a string "offset" Date: Mon, 9 Oct 2023 17:28:36 +0200 Message-Id: <20231009152836.416267-2-stefano.babic@swupdate.org> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20231009152836.416267-1-stefano.babic@swupdate.org> References: <20231009152836.416267-1-stefano.babic@swupdate.org> MIME-Version: 1.0 X-Provags-ID: V03:K1:9D8QzBrQnAO0K0oKYCPiyotcgr1X4s8jruZBSDgdNP1FefBMtuH XuuHtjJkI1Z8/sUcde4ptMe59djeqJlH1G5qM574FkROfvcZmXPn3diCqr2P1nSWe/9f1XX UqT61uvJ6ugjG/ZvSqpFx01WdbIUemfwabHMS4gIfwSkoiewsBv4sMSe7RPwq12P4PoUDVW wN6x+PPnD8ZKkS1WiTDug== X-Spam-Flag: NO UI-OutboundReport: notjunk:1;M01:P0:YmmgKNxOMqA=;hVKP5gU5bAGYkq+/0Jfofnhe9MW U6IUaW/wrXl4Nsx0tEntpVTy7GGEFyNCR9TSuU5srV/2TGc+jpYH34R6RRZWhVlkJV30yRnDD 15o4AhjVSqdCEQdxC0rIIbz5MN8HkXLdnWt3DVFgRlC2gKPYlP5umk/BFTmX01dHN5Gi/nts5 b6jWn7dor5gMeHhdtrXAzat3vtg/29sylf8GiQL5nZoXOAhakiXxiZ0k09Qf3S6B786NdrR+l GX2bYWAVJ4PS6Jzpupgm0P9obaVsdFsXnkcHNiaVi6V89joB4kn0svNvZM3r1sQXGx0/8Oc1O 8VZYDTnml4uxU2NIQ0XCqmgsJuxjmgGyCOzC0RZo5pZ4aQ2saBrgoCfQf439q1P1LBj3y8gDV IyrwjMS6A8vA4aBFhNZm/k1ePY6Fy9J9xdcibcypSX0zbJ/bs070PTwyWyRDhJBCYasuNIV6i mmWHaaUvrtzeRXDNZLiJzmMdv1IiUir8YziIhqREeBcORU1UmdgClXXT0txhIGQuSuNgMwyf/ Mo5+99pFYS0qB40VzsBKypHGKic+TG6tt562o3Sdj/FBHqz/k7jZIUtIKIa5WPi7FU/mQEjgw wK8BcO9QE0BWk7VLvifEJpOgBDy1hth0QHb5So1IKES6JDQfn6qbPYV6Suywm4Ipkw8KqxvST lY/gKg4ILOhZiyQ/hBr4Qzg+qcLQfZciYkF4TbGNDkObUiHhiLwJBhEeqEEufvCjiZgyf/l3v IdWk4oFBJrgpVq5MzKiTp46b95Vstkq1lyTFogFhw+wk/5NOIGyBvBfPNnMlKnub3yvoXFM3F fY4D2QYFR8N2IUzLb7btdKp9Rq+5xKK7dJ/An0GQtnrzuD/sxDrYkEvhOLZTWZRi7WXKcQaxo 3fbfUKu2Xa4/kTV33uXUUVrYuFLjZ5eoXzpw= X-Original-Sender: stefano.babic@swupdate.org X-Original-Authentication-Results: gmr-mx.google.com; spf=pass (google.com: domain of stefano.babic@swupdate.org designates 212.227.17.24 as permitted sender) smtp.mailfrom=stefano.babic@swupdate.org Precedence: list Mailing-list: list swupdate@googlegroups.com; contact swupdate+owners@googlegroups.com List-ID: X-Spam-Checked-In-Group: swupdate@googlegroups.com X-Google-Group-Id: 605343134186 List-Post: , List-Help: , List-Archive: , List-Unsubscribe: , get_field(p, elem, "offset", &offset) in case of JSON does not return 0 if field is a string, causing a wrong offset to be evaluated. This bug does not happen if libconfig is the parser. Call is_field_numeric() in advance to check if offset is set as number or string. Signed-off-by: Stefano Babic Reported-by: Einar Jón --- include/parselib.h | 2 ++ parser/parser.c | 8 ++++---- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/include/parselib.h b/include/parselib.h index 387ddc67..a027d53a 100644 --- a/include/parselib.h +++ b/include/parselib.h @@ -54,6 +54,7 @@ void *get_node_libconfig(config_t *cfg, const char **nodes); #define get_field_cfg(e, path, dest) #define find_root_libconfig(cfg, nodes, depth) (NULL) #define get_node_libconfig(cfg, nodes) (NULL) +#define is_field_numeric_cfg(e, path) (false) #endif #ifdef CONFIG_JSON @@ -85,6 +86,7 @@ void *get_node_json(json_object *root, const char **nodes); #define json_object_array_length(a) (0) #define find_root_json(root, nodes, depth) (NULL) #define get_node_json(root, nodes) (NULL) +#define is_field_numeric_json(e, path) (false) #endif bool is_field_numeric(parsertype p, void *e, const char *path); diff --git a/parser/parser.c b/parser/parser.c index 4c0a8f2f..52661384 100644 --- a/parser/parser.c +++ b/parser/parser.c @@ -398,8 +398,6 @@ static int parse_common_attributes(parsertype p, void *elem, struct img_type *im GET_FIELD_STRING(p, elem, "mtdname", image->mtdname); GET_FIELD_STRING(p, elem, "filesystem", image->filesystem); GET_FIELD_STRING(p, elem, "type", image->type); - get_field(p, elem, "offset", &offset); - GET_FIELD_STRING(p, elem, "offset", seek_str); GET_FIELD_STRING(p, elem, "data", image->type_data); get_hash_value(p, elem, image->sha256); @@ -407,9 +405,11 @@ static int parse_common_attributes(parsertype p, void *elem, struct img_type *im * offset can be set as number or string. As string, * multiplier suffixes are allowed */ - if (offset) + if (is_field_numeric(p, elem, "offset")) { + get_field(p, elem, "offset", &offset); image->seek = offset; - else { + } else { + GET_FIELD_STRING(p, elem, "offset", seek_str); /* convert the offset handling multiplicative suffixes */ image->seek = ustrtoull(seek_str, NULL, 0); if (errno){