Error: GCC_ANALYZER_WARNING (CWE-415): [#def1] ndctl-85/cxl/lib/libcxl.c:3754:17: warning[-Wanalyzer-double-free]: double-‘free’ of ‘*cmd.query_cmd’ ndctl-85/cxl/lib/libcxl.c:5070:28: enter_function: entry to ‘cxl_cmd_new_set_alert_config’ ndctl-85/cxl/lib/libcxl.c:5072:16: call_function: calling ‘cxl_cmd_new_generic’ from ‘cxl_cmd_new_set_alert_config’ # 3752| return; # 3753| if (--cmd->refcount == 0) { # 3754|-> free(cmd->query_cmd); # 3755| free(cmd->send_cmd); # 3756| free(cmd->input_payload); Error: GCC_ANALYZER_WARNING (CWE-476): [#def2] ndctl-85/cxl/lib/libcxl.c:4756:9: warning[-Wanalyzer-null-dereference]: dereference of NULL ‘0’ ndctl-85/cxl/lib/libcxl.c:4747:28: enter_function: entry to ‘cxl_cmd_new_set_partition’ ndctl-85/cxl/lib/libcxl.c:4753:15: call_function: calling ‘cxl_cmd_new_generic’ from ‘cxl_cmd_new_set_partition’ ndctl-85/cxl/lib/libcxl.c:4753:15: return_function: returning to ‘cxl_cmd_new_set_partition’ from ‘cxl_cmd_new_generic’ ndctl-85/cxl/lib/libcxl.c:4756:9: danger: dereference of NULL ‘cxl_cmd_new_generic(memdev, 9)’ # 4754| CXL_MEM_COMMAND_ID_SET_PARTITION_INFO); # 4755| # 4756|-> setpart = cmd->input_payload; # 4757| setpart->volatile_size = cpu_to_le64(volatile_size) # 4758| / CXL_CAPACITY_MULTIPLIER; Error: GCC_ANALYZER_WARNING (CWE-775): [#def3] ndctl-85/cxl/memdev.c:1005:24: warning[-Wanalyzer-file-leak]: leak of FILE ‘actx.f_in’ ndctl-85/cxl/memdev.c:1231:5: enter_function: entry to ‘cmd_wait_sanitize’ ndctl-85/cxl/memdev.c:1233:21: call_function: calling ‘memdev_action’ from ‘cmd_wait_sanitize’ # 1003| if (err == argc) { # 1004| usage_with_options(u, options); # 1005|-> return -EINVAL; # 1006| } # 1007| Error: GCC_ANALYZER_WARNING (CWE-775): [#def4] ndctl-85/cxl/memdev.c:1005:24: warning[-Wanalyzer-file-leak]: leak of FILE ‘actx.f_out’ ndctl-85/cxl/memdev.c:1231:5: enter_function: entry to ‘cmd_wait_sanitize’ ndctl-85/cxl/memdev.c:1233:21: call_function: calling ‘memdev_action’ from ‘cmd_wait_sanitize’ # 1003| if (err == argc) { # 1004| usage_with_options(u, options); # 1005|-> return -EINVAL; # 1006| } # 1007| Error: GCC_ANALYZER_WARNING (CWE-401): [#def5] ndctl-85/cxl/memdev.c:1005:24: warning[-Wanalyzer-malloc-leak]: leak of ‘actx.f_in’ ndctl-85/cxl/memdev.c:1231:5: enter_function: entry to ‘cmd_wait_sanitize’ ndctl-85/cxl/memdev.c:1233:21: call_function: calling ‘memdev_action’ from ‘cmd_wait_sanitize’ # 1003| if (err == argc) { # 1004| usage_with_options(u, options); # 1005|-> return -EINVAL; # 1006| } # 1007| Error: GCC_ANALYZER_WARNING (CWE-401): [#def6] ndctl-85/cxl/memdev.c:1005:24: warning[-Wanalyzer-malloc-leak]: leak of ‘actx.f_out’ ndctl-85/cxl/memdev.c:1231:5: enter_function: entry to ‘cmd_wait_sanitize’ ndctl-85/cxl/memdev.c:1233:21: call_function: calling ‘memdev_action’ from ‘cmd_wait_sanitize’ # 1003| if (err == argc) { # 1004| usage_with_options(u, options); # 1005|-> return -EINVAL; # 1006| } # 1007| Error: GCC_ANALYZER_WARNING (CWE-416): [#def7] ndctl-85/daxctl/acpi.c:48:9: warning[-Wanalyzer-use-after-free]: use after ‘free’ of ‘_e’ ndctl-85/daxctl/acpi.c:754:12: enter_function: entry to ‘do_split’ ndctl-85/daxctl/acpi.c:757:18: call_function: calling ‘split_srat’ from ‘do_split’ # 46| return; # 47| # 48|-> list_for_each_safe(&container->ents, ent, _e, list) { # 49| list_del_from(&container->ents, &ent->list); # 50| free(ent); Error: GCC_ANALYZER_WARNING (CWE-416): [#def8] ndctl-85/daxctl/acpi.c:63:9: warning[-Wanalyzer-use-after-free]: use after ‘free’ of ‘_e’ ndctl-85/daxctl/acpi.c:611:12: enter_function: entry to ‘split_nfit’ ndctl-85/daxctl/acpi.c:615:39: call_function: calling ‘read_nfit’ from ‘split_nfit’ # 61| return; # 62| # 63|-> list_for_each_safe(&container->ents, ent, _e, list) { # 64| list_del_from(&container->ents, &ent->list); # 65| free(ent); Error: GCC_ANALYZER_WARNING (CWE-401): [#def9] ndctl-85/daxctl/acpi.c:141:21: warning[-Wanalyzer-malloc-leak]: leak of ‘ent’ ndctl-85/daxctl/acpi.c:611:12: enter_function: entry to ‘split_nfit’ ndctl-85/daxctl/acpi.c:615:39: call_function: calling ‘read_nfit’ from ‘split_nfit’ # 139| return NULL; # 140| # 141|-> container = calloc(1, sizeof(*container)); # 142| if (!container) { # 143| error("failed to alloc %d bytes\n", nfit->h.length); Error: GCC_ANALYZER_WARNING (CWE-401): [#def10] ndctl-85/daxctl/acpi.c:159:40: warning[-Wanalyzer-malloc-leak]: leak of ‘ent’ ndctl-85/daxctl/acpi.c:611:12: enter_function: entry to ‘split_nfit’ ndctl-85/daxctl/acpi.c:615:39: call_function: calling ‘read_nfit’ from ‘split_nfit’ # 157| buf = nfit + 1; # 158| while (length) { # 159|-> struct nfit_ent *ent = calloc(1, sizeof(*ent)); # 160| # 161| if (!ent) { Error: GCC_ANALYZER_WARNING (CWE-401): [#def11] ndctl-85/daxctl/acpi.c:200:21: warning[-Wanalyzer-malloc-leak]: leak of ‘ent’ ndctl-85/daxctl/acpi.c:754:12: enter_function: entry to ‘do_split’ ndctl-85/daxctl/acpi.c:757:18: call_function: calling ‘split_srat’ from ‘do_split’ # 198| return NULL; # 199| # 200|-> container = calloc(1, sizeof(*container)); # 201| if (!container) { # 202| error("failed to alloc %d bytes\n", srat->h.length); Error: GCC_ANALYZER_WARNING (CWE-401): [#def12] ndctl-85/daxctl/acpi.c:218:40: warning[-Wanalyzer-malloc-leak]: leak of ‘ent’ ndctl-85/daxctl/acpi.c:376:12: enter_function: entry to ‘split_srat’ ndctl-85/daxctl/acpi.c:378:39: call_function: calling ‘read_srat’ from ‘split_srat’ # 216| buf = srat + 1; # 217| while (length) { # 218|-> struct srat_ent *ent = calloc(1, sizeof(*ent)); # 219| # 220| if (!ent) { Error: GCC_ANALYZER_WARNING (CWE-775): [#def13] ndctl-85/ndctl/dimm.c:1328:24: warning[-Wanalyzer-file-leak]: leak of FILE ‘actx.f_out’ ndctl-85/ndctl/dimm.c:1629:5: enter_function: entry to ‘cmd_wait_overwrite’ ndctl-85/ndctl/dimm.c:1631:21: call_function: calling ‘dimm_action’ from ‘cmd_wait_overwrite’ # 1326| if (err == argc) { # 1327| usage_with_options(u, options); # 1328|-> return -EINVAL; # 1329| } # 1330| Error: GCC_ANALYZER_WARNING (CWE-401): [#def14] ndctl-85/ndctl/dimm.c:1328:24: warning[-Wanalyzer-malloc-leak]: leak of ‘actx.f_out’ ndctl-85/ndctl/dimm.c:1629:5: enter_function: entry to ‘cmd_wait_overwrite’ ndctl-85/ndctl/dimm.c:1631:21: call_function: calling ‘dimm_action’ from ‘cmd_wait_overwrite’ # 1326| if (err == argc) { # 1327| usage_with_options(u, options); # 1328|-> return -EINVAL; # 1329| } # 1330| Error: GCC_ANALYZER_WARNING (CWE-476): [#def15] ndctl-85/ndctl/lib/libndctl.c:5634:9: warning[-Wanalyzer-possible-null-dereference]: dereference of possibly-NULL ‘dax’ ndctl-85/ndctl/lib/libndctl.c:5627:33: acquire_memory: this call could return NULL ndctl-85/ndctl/lib/libndctl.c:5631:12: branch_false: following ‘false’ branch (when ‘dax’ is non-NULL)... ndctl-85/ndctl/lib/libndctl.c:5634:9: branch_false: ...to here ndctl-85/ndctl/lib/libndctl.c:5634:9: danger: ‘dax’ could be NULL: unchecked value from [(1)](sarif:/runs/0/results/0/codeFlows/0/threadFlows/0/locations/0) # 5632| return NULL; # 5633| # 5634|-> pfn->id = id; # 5635| pfn->region = region; # 5636| if (!__add_pfn(pfn, dax_base)) { Error: GCC_ANALYZER_WARNING (CWE-688): [#def16] ndctl-85/ndctl/load-keys.c:187:14: warning[-Wanalyzer-possible-null-argument]: use of possibly-NULL ‘keypath’ where non-null expected ndctl-85/ndctl/load-keys.c:232:5: enter_function: entry to ‘cmd_load_keys’ ndctl-85/ndctl/load-keys.c:250:12: branch_false: following ‘false’ branch... ndctl-85/ndctl/load-keys.c:253:14: branch_false: ...to here ndctl-85/ndctl/load-keys.c:253:12: branch_true: following ‘true’ branch... ndctl-85/ndctl/load-keys.c:254:34: branch_true: ...to here ndctl-85/ndctl/load-keys.c:254:34: acquire_memory: this call could return NULL ndctl-85/ndctl/load-keys.c:256:16: call_function: calling ‘load_keys’ from ‘cmd_load_keys’ # 185| int rc; # 186| # 187|-> rc = chdir(keypath); # 188| if (rc < 0) { # 189| fprintf(stderr, "Change current work dir to %s failed: %s\n", Error: COMPILER_WARNING: [#def17] [important] ndctl-85/util/parse-configs.c:7:10: error[fatal error]: iniparser.h: No such file or directory # 5| #include <errno.h> # 6| #include <fcntl.h> # 7|-> #include <iniparser.h> # 8| #include <sys/stat.h> # 9| #include <util/parse-configs.h> Error: GCC_ANALYZER_WARNING (CWE-688): [#def18] ndctl-85/util/parse-options.c:151:38: warning[-Wanalyzer-null-argument]: use of NULL ‘arg’ where non-null expected ndctl-85/util/parse-options.c:530:5: enter_function: entry to ‘parse_options’ ndctl-85/util/parse-options.c:533:16: call_function: calling ‘parse_options_subcommand_prefix’ from ‘parse_options’ # 149| if (get_arg(p, opt, flags, &arg)) # 150| return -1; # 151|-> *(int *)opt->value = strtol(arg, (char **)&s, 10); # 152| if (*s) # 153| return opterror(opt, "expects a numerical value", flags); Error: GCC_ANALYZER_WARNING (CWE-688): [#def19] ndctl-85/util/parse-options.c:167:47: warning[-Wanalyzer-null-argument]: use of NULL ‘arg’ where non-null expected ndctl-85/util/parse-options.c:530:5: enter_function: entry to ‘parse_options’ ndctl-85/util/parse-options.c:533:16: call_function: calling ‘parse_options_subcommand_prefix’ from ‘parse_options’ # 165| if (get_arg(p, opt, flags, &arg)) # 166| return -1; # 167|-> *(unsigned int *)opt->value = strtol(arg, (char **)&s, 10); # 168| if (*s) # 169| return opterror(opt, "expects a numerical value", flags); Error: GCC_ANALYZER_WARNING (CWE-688): [#def20] ndctl-85/util/parse-options.c:183:39: warning[-Wanalyzer-null-argument]: use of NULL ‘arg’ where non-null expected ndctl-85/util/parse-options.c:530:5: enter_function: entry to ‘parse_options’ ndctl-85/util/parse-options.c:533:16: call_function: calling ‘parse_options_subcommand_prefix’ from ‘parse_options’ # 181| if (get_arg(p, opt, flags, &arg)) # 182| return -1; # 183|-> *(long *)opt->value = strtol(arg, (char **)&s, 10); # 184| if (*s) # 185| return opterror(opt, "expects a numerical value", flags); Error: GCC_ANALYZER_WARNING (CWE-688): [#def21] ndctl-85/util/parse-options.c:199:43: warning[-Wanalyzer-null-argument]: use of NULL ‘arg’ where non-null expected ndctl-85/util/parse-options.c:530:5: enter_function: entry to ‘parse_options’ ndctl-85/util/parse-options.c:533:16: call_function: calling ‘parse_options_subcommand_prefix’ from ‘parse_options’ # 197| if (get_arg(p, opt, flags, &arg)) # 198| return -1; # 199|-> *(uint64_t *)opt->value = strtoull(arg, (char **)&s, 10); # 200| if (*s) # 201| return opterror(opt, "expects a numerical value", flags);
| analyzer-version-clippy | 1.97.1 |
| analyzer-version-cppcheck | 2.21.1 |
| analyzer-version-gcc | 16.1.1 |
| analyzer-version-gcc-analyzer | 16.1.1 |
| analyzer-version-shellcheck | 0.11.0 |
| analyzer-version-unicontrol | 0.0.2 |
| enabled-plugins | clippy, cppcheck, gcc, shellcheck, unicontrol |
| exit-code | 0 |
| host | ip-172-16-1-188.us-west-2.compute.internal |
| known-false-positives | /usr/share/csmock/known-false-positives.js |
| known-false-positives-rpm | known-false-positives-0.0.0.20260524.213755.g3c6d0be.main-1.el9.noarch |
| mock-config | fedora-rawhide-x86_64 |
| project-name | ndctl-85-2.fc45 |
| store-results-to | /tmp/tmpyzx8l5tl/ndctl-85-2.fc45.tar.xz |
| time-created | 2026-08-03 18:46:36 |
| time-finished | 2026-08-03 18:48:07 |
| tool | csmock |
| tool-args | '/usr/bin/csmock' '-r' 'fedora-rawhide-x86_64' '-t' 'gcc,clippy,unicontrol,shellcheck,cppcheck' '-o' '/tmp/tmpyzx8l5tl/ndctl-85-2.fc45.tar.xz' '--gcc-analyze' '--unicontrol-notests' '--unicontrol-bidi-only' '--install' 'pam' '--gcc-analyzer-bin=/usr/bin/gcc' '/tmp/tmpyzx8l5tl/ndctl-85-2.fc45.src.rpm' |
| tool-version | csmock-3.8.7.20260803.142340.gb75b18e-1.el9 |