]> sigrok.org Git - libsigrok.git/commitdiff
manson-hcs-3xxx: fix potential NULL dereference
authorGerhard Sittig <redacted>
Fri, 9 Feb 2018 18:14:31 +0000 (19:14 +0100)
committerUwe Hermann <redacted>
Fri, 9 Feb 2018 20:37:39 +0000 (21:37 +0100)
Check pointers' validity before dereferencing them.

This was reported by clang's scan-build.

src/hardware/manson-hcs-3xxx/api.c

index 92240cea30dc78251f86c6b7dd7516f8c3a609c4..765d9abc78682a905cde53a680cab51ae7fd0414 100644 (file)
@@ -281,10 +281,14 @@ static int config_list(uint32_t key, GVariant **data,
        case SR_CONF_DEVICE_OPTIONS:
                return STD_CONFIG_LIST(key, data, sdi, cg, scanopts, drvopts, devopts);
        case SR_CONF_VOLTAGE_TARGET:
        case SR_CONF_DEVICE_OPTIONS:
                return STD_CONFIG_LIST(key, data, sdi, cg, scanopts, drvopts, devopts);
        case SR_CONF_VOLTAGE_TARGET:
+               if (!devc || !devc->model)
+                       return SR_ERR_ARG;
                a = devc->model->voltage;
                *data = std_gvar_min_max_step(a[0], devc->voltage_max_device, a[2]);
                break;
        case SR_CONF_CURRENT_LIMIT:
                a = devc->model->voltage;
                *data = std_gvar_min_max_step(a[0], devc->voltage_max_device, a[2]);
                break;
        case SR_CONF_CURRENT_LIMIT:
+               if (!devc || !devc->model)
+                       return SR_ERR_ARG;
                a = devc->model->current;
                *data = std_gvar_min_max_step(a[0], devc->current_max_device, a[2]);
                break;
                a = devc->model->current;
                *data = std_gvar_min_max_step(a[0], devc->current_max_device, a[2]);
                break;