[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[PATCH for-4.21 1/6] tools/{lib,}xl: fix usage of error return from json_tokener_parse_verbose()


  • To: xen-devel@xxxxxxxxxxxxxxxxxxxx
  • From: Roger Pau Monne <roger.pau@xxxxxxxxxx>
  • Date: Wed, 15 Oct 2025 15:40:38 +0200
  • Arc-authentication-results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=citrix.com; dmarc=pass action=none header.from=citrix.com; dkim=pass header.d=citrix.com; arc=none
  • Arc-message-signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=9jAaEkbPMClbdXrDp068D9KRbyTHRkgW/ifsonbGhPQ=; b=bzm3zW3Hh65jYYCKm/FzFnReb3A74SjmC1gYba/XrsPIgUVL9N0ZGIp2KBuguatyFIaa6HJ2uQYKXn+35woXrx14hf/ijNUa9BH5dQa846sPTIVoxxcT/xOmNozd0ixPjliRovA0qsLiU3RLLG8ODYTczlSTvWp/zont7KhScYMhJeTLtrFP36x6KtasPZQIxpoU6QWjGBh1WvRezD5MYiVSbhfXvONgWafxzCYXsYqUufwznrV1nM9TWCOG6X950yjg+3j+BRVnWJS/OkerKcw4V5kyYEgOSh4oGZAgYwXmu2cC94vsnr3vJd5caoknyI8LPyVrAiuZzlqPAv2jVg==
  • Arc-seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=sfYde3y3riSFT1G65ZibNoaItQWojvQpN6IKAa9LjCMlNiCvwT+td5mgXrp9z1pybxDvUocMHJmy6wgoGlGjMenw0MMQ3PPvCM9UQNDzZGKFVvoY6Trd26Pku4HxwuPCtyVAYpp/YCF692UgMFBOkMisnbJ+Cwv+KQ0LYltDGweDXBck1Jzl2du4ejkyQhVbLtpQh04QHxz/ru6hzicKcqAhyu+Pum0psflFHl4ZzVGVn8hXcY4AYVxpiBkDpZoSCtNoeOs46iXTjQfDeJ9GFdO2bSnMKRuQSwlIG/9eMpxu+L1Qj5OaI55Yfznfz8MwwheNeXqr7GyGN98XKNcsBA==
  • Authentication-results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=citrix.com;
  • Cc: oleksii.kurochko@xxxxxxxxx, Roger Pau Monne <roger.pau@xxxxxxxxxx>, Anthony PERARD <anthony.perard@xxxxxxxxxx>, Juergen Gross <jgross@xxxxxxxx>
  • Delivery-date: Wed, 15 Oct 2025 13:48:06 +0000
  • List-id: Xen developer discussion <xen-devel.lists.xenproject.org>

It's possible for json_tokener_parse_verbose() to return NULL and leave the
error parameter unset.  Initialize the error token to success, and only
print it if the function has actually set it to a value different than
success.

Reported by XenServer internal Coverity instance.

Fixes: 7e95dab9eb63 ("libxl: Convert libxl__json_parse() to use json-c")
Fixes: f6c6f2679d49 ("libxl: Convert libxl__object_to_json() to json-c")
Signed-off-by: Roger Pau Monné <roger.pau@xxxxxxxxxx>
---
 tools/libs/light/libxl_json.c | 6 ++++--
 tools/xl/xl_info.c            | 5 +++--
 2 files changed, 7 insertions(+), 4 deletions(-)

diff --git a/tools/libs/light/libxl_json.c b/tools/libs/light/libxl_json.c
index c76ae9f64a9d..a9e06b06932d 100644
--- a/tools/libs/light/libxl_json.c
+++ b/tools/libs/light/libxl_json.c
@@ -1366,11 +1366,13 @@ libxl__json_object *libxl__json_parse(libxl__gc *gc, 
const char *s)
     libxl__json_object *o = NULL;
 #ifdef USE_LIBJSONC_PARSER
     json_object *jso;
-    enum json_tokener_error error;
+    enum json_tokener_error error = json_tokener_success;
 
     jso = json_tokener_parse_verbose(s, &error);
     if (!jso) {
-        LOG(ERROR, "json-c parse error: %s", json_tokener_error_desc(error));
+        LOG(ERROR, "json-c parse error: %s",
+            error != json_tokener_success ? json_tokener_error_desc(error)
+                                          : "unspecified error");
         goto out;
     }
 #endif
diff --git a/tools/xl/xl_info.c b/tools/xl/xl_info.c
index 80a3b25aac81..777ff2c64294 100644
--- a/tools/xl/xl_info.c
+++ b/tools/xl/xl_info.c
@@ -67,7 +67,7 @@ static int printf_info_one_json(json_object **jso_r, int 
domid,
 {
     json_object *jso = NULL;
     json_object *jso_config = NULL;
-    enum json_tokener_error error;
+    enum json_tokener_error error = json_tokener_success;
     char *s = NULL;
     int r = EXIT_FAILURE;
 
@@ -75,7 +75,8 @@ static int printf_info_one_json(json_object **jso_r, int 
domid,
     jso_config = json_tokener_parse_verbose(s, &error);
     if (!jso_config) {
         fprintf(stderr, "fail to parse JSON from 
libxl_domain_config_to_json(): %s\n",
-                json_tokener_error_desc(error));
+                error != json_tokener_success ? json_tokener_error_desc(error)
+                                              : "unspecified error");
         goto out;
     }
 
-- 
2.51.0




 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.