Whamcloud - gitweb
LU-18807 utils: SIGSEGV in jt_obd_setattr 03/58403/3
authorFrank Sehr <fsehr@whamcloud.com>
Thu, 13 Mar 2025 19:36:43 +0000 (12:36 -0700)
committerOleg Drokin <green@whamcloud.com>
Wed, 26 Mar 2025 04:04:06 +0000 (04:04 +0000)
Wrong argument comparison causes crash. Also unchecked
yaml_scalar_event_initialize() causes a double free problem.
This should be done for all variable based event initialization.

Test-Parameters: trivial
Signed-off-by: Frank Sehr <fsehr@whamcloud.com>
Change-Id: Id90aec86d0779316dd7ca3d1d926a3db5503d2c1
Reviewed-on: https://review.whamcloud.com/c/fs/lustre-release/+/58403
Reviewed-by: Andreas Dilger <adilger@whamcloud.com>
Reviewed-by: Cyril Bordage <cbordage@whamcloud.com>
Reviewed-by: Manish Regmi <mregmi@ddn.com>
Reviewed-by: Oleg Drokin <green@whamcloud.com>
Reviewed-by: Serguei Smirnov <ssmirnov@whamcloud.com>
Tested-by: jenkins <devops@whamcloud.com>
Tested-by: Maloo <maloo@whamcloud.com>
lustre/utils/lustre_cfg.c
lustre/utils/obd.c

index 9c72493..972b741 100644 (file)
@@ -713,11 +713,14 @@ static int yaml_get_device_index(char *source)
        if (rc == 0)
                goto error;
 
-       yaml_scalar_event_initialize(&event, NULL,
+       rc = yaml_scalar_event_initialize(&event, NULL,
                                     (yaml_char_t *)YAML_STR_TAG,
                                     (yaml_char_t *)source,
                                     strlen(source), 1, 0,
                                     YAML_PLAIN_SCALAR_STYLE);
+       if (rc == 0)
+               goto error;
+
        rc = yaml_emitter_emit(&request, &event);
        if (rc == 0)
                goto error;
index f97ca3b..f131f81 100644 (file)
@@ -1551,7 +1551,7 @@ int jt_obd_setattr(int argc, char **argv)
 
        memset(&data, 0, sizeof(data));
        data.ioc_dev = cur_device;
-       if (argc != 2)
+       if (argc != 3)
                return CMD_HELP;
 
        objid = strtoull(argv[1], &end, 0);