Error: GCC_ANALYZER_WARNING (CWE-401): [#def1] libcap-2.77/libcap/cap_alloc.c:77:5: warning[-Wanalyzer-malloc-leak]: leak of ‘raw_data’ libcap-2.77/libcap/cap_alloc.c:146:7: enter_function: entry to ‘cap_dup’ libcap-2.77/libcap/cap_alloc.c:150:8: branch_false: following ‘false’ branch... libcap-2.77/libcap/cap_alloc.c:156:14: call_function: calling ‘cap_init’ from ‘cap_dup’ # 75| result = &raw_data->u.set; # 76| result->head.version = _LIBCAP_CAPABILITY_VERSION; # 77|-> capget(&result->head, NULL); /* load the kernel-capability version */ # 78| # 79| switch (result->head.version) { Error: CPPCHECK_WARNING (CWE-401): [#def2] libcap-2.77/libcap/cap_alloc.c:179: error[memleak]: Memory leak: base # 177| base->magic = CAP_IAB_MAGIC; # 178| base->size = sizeof(struct _cap_alloc_s); # 179|-> return &base->u.iab; # 180| } # 181| Error: GCC_ANALYZER_WARNING (CWE-401): [#def3] libcap-2.77/libcap/cap_alloc.c:179:12: warning[-Wanalyzer-malloc-leak]: leak of ‘base’ libcap-2.77/libcap/cap_alloc.c:172:33: acquire_memory: allocated here libcap-2.77/libcap/cap_alloc.c:173:8: branch_false: following ‘false’ branch (when ‘base’ is non-NULL)... libcap-2.77/libcap/cap_alloc.c:177:5: branch_false: ...to here libcap-2.77/libcap/cap_alloc.c:179:12: danger: ‘base’ leaks here; was allocated at [(1)](sarif:/runs/0/results/1/codeFlows/0/threadFlows/0/locations/0) # 177| base->magic = CAP_IAB_MAGIC; # 178| base->size = sizeof(struct _cap_alloc_s); # 179|-> return &base->u.iab; # 180| } # 181| Error: GCC_ANALYZER_WARNING (CWE-401): [#def4] libcap-2.77/libcap/cap_alloc.c:229:26: warning[-Wanalyzer-malloc-leak]: leak of ‘data’ libcap-2.77/libcap/cap_alloc.c:221:33: acquire_memory: allocated here libcap-2.77/libcap/cap_alloc.c:222:8: branch_false: following ‘false’ branch (when ‘data’ is non-NULL)... libcap-2.77/libcap/cap_alloc.c:226:5: branch_false: ...to here libcap-2.77/libcap/cap_alloc.c:229:26: danger: ‘data’ leaks here; was allocated at [(1)](sarif:/runs/0/results/2/codeFlows/0/threadFlows/0/locations/0) # 227| data->size = sizeof(struct _cap_alloc_s); # 228| # 229|-> struct cap_launch_s *attr = &data->u.launcher; # 230| attr->arg0 = arg0; # 231| attr->argv = argv; Error: GCC_ANALYZER_WARNING (CWE-401): [#def5] libcap-2.77/libcap/cap_alloc.c:253:26: warning[-Wanalyzer-malloc-leak]: leak of ‘data’ libcap-2.77/libcap/cap_alloc.c:245:33: acquire_memory: allocated here libcap-2.77/libcap/cap_alloc.c:246:8: branch_false: following ‘false’ branch (when ‘data’ is non-NULL)... libcap-2.77/libcap/cap_alloc.c:250:5: branch_false: ...to here libcap-2.77/libcap/cap_alloc.c:253:26: danger: ‘data’ leaks here; was allocated at [(1)](sarif:/runs/0/results/3/codeFlows/0/threadFlows/0/locations/0) # 251| data->size = sizeof(struct _cap_alloc_s); # 252| # 253|-> struct cap_launch_s *attr = &data->u.launcher; # 254| attr->custom_setup_fn = callback_fn; # 255| return attr; Error: GCC_ANALYZER_WARNING (CWE-775): [#def6] libcap-2.77/libcap/cap_proc.c:98:16: warning[-Wanalyzer-fd-leak]: leak of file descriptor ‘ps[1]’ libcap-2.77/libcap/cap_proc.c:1047:7: enter_function: entry to ‘cap_launch’ libcap-2.77/libcap/cap_proc.c:1052:8: branch_false: following ‘false’ branch... libcap-2.77/libcap/cap_proc.c:1065:8: branch_false: following ‘false’ branch... libcap-2.77/libcap/cap_proc.c:1069:13: branch_false: ...to here libcap-2.77/libcap/cap_proc.c:1072:8: branch_true: following ‘true’ branch (when ‘child == 0’)... libcap-2.77/libcap/cap_proc.c:1073:9: branch_true: ...to here libcap-2.77/libcap/cap_proc.c:1075:9: call_function: calling ‘_cap_launch’ from ‘cap_launch’ # 96| { # 97| if (_libcap_overrode_syscalls) { # 98|-> return sc->three(SYS_capset, (long int) header, (long int) data, 0); # 99| } # 100| return capset(header, data); Error: GCC_ANALYZER_WARNING (CWE-775): [#def7] libcap-2.77/libcap/cap_proc.c:100:12: warning[-Wanalyzer-fd-leak]: leak of file descriptor ‘ps[1]’ libcap-2.77/libcap/cap_proc.c:1047:7: enter_function: entry to ‘cap_launch’ libcap-2.77/libcap/cap_proc.c:1052:8: branch_false: following ‘false’ branch... libcap-2.77/libcap/cap_proc.c:1065:8: branch_false: following ‘false’ branch... libcap-2.77/libcap/cap_proc.c:1069:13: branch_false: ...to here libcap-2.77/libcap/cap_proc.c:1072:8: branch_true: following ‘true’ branch (when ‘child == 0’)... libcap-2.77/libcap/cap_proc.c:1073:9: branch_true: ...to here libcap-2.77/libcap/cap_proc.c:1075:9: call_function: calling ‘_cap_launch’ from ‘cap_launch’ # 98| return sc->three(SYS_capset, (long int) header, (long int) data, 0); # 99| } # 100|-> return capset(header, data); # 101| } # 102| Error: GCC_ANALYZER_WARNING (CWE-775): [#def8] libcap-2.77/libcap/cap_proc.c:108:18: warning[-Wanalyzer-fd-leak]: leak of file descriptor ‘ps[1]’ libcap-2.77/libcap/cap_proc.c:1047:7: enter_function: entry to ‘cap_launch’ libcap-2.77/libcap/cap_proc.c:1052:8: branch_false: following ‘false’ branch... libcap-2.77/libcap/cap_proc.c:1065:8: branch_false: following ‘false’ branch... libcap-2.77/libcap/cap_proc.c:1069:13: branch_false: ...to here libcap-2.77/libcap/cap_proc.c:1072:8: branch_true: following ‘true’ branch (when ‘child == 0’)... libcap-2.77/libcap/cap_proc.c:1073:9: branch_true: ...to here libcap-2.77/libcap/cap_proc.c:1075:9: call_function: calling ‘_cap_launch’ from ‘cap_launch’ # 106| if (_libcap_overrode_syscalls) { # 107| int result; # 108|-> result = sc->three(SYS_prctl, pr_cmd, arg1, arg2); # 109| if (result >= 0) { # 110| return result; Error: GCC_ANALYZER_WARNING (CWE-775): [#def9] libcap-2.77/libcap/cap_proc.c:142:14: warning[-Wanalyzer-fd-leak]: leak of file descriptor ‘ps[1]’ libcap-2.77/libcap/cap_proc.c:1047:7: enter_function: entry to ‘cap_launch’ libcap-2.77/libcap/cap_proc.c:1052:8: branch_false: following ‘false’ branch... libcap-2.77/libcap/cap_proc.c:1065:8: branch_false: following ‘false’ branch... libcap-2.77/libcap/cap_proc.c:1069:13: branch_false: ...to here libcap-2.77/libcap/cap_proc.c:1072:8: branch_true: following ‘true’ branch (when ‘child == 0’)... libcap-2.77/libcap/cap_proc.c:1073:9: branch_true: ...to here libcap-2.77/libcap/cap_proc.c:1075:9: call_function: calling ‘_cap_launch’ from ‘cap_launch’ # 140| # 141| /* allocate a new capability set */ # 142|-> result = cap_init(); # 143| if (result) { # 144| _cap_debug("getting current process' capabilities"); Error: GCC_ANALYZER_WARNING (CWE-775): [#def10] libcap-2.77/libcap/cap_proc.c:147:13: warning[-Wanalyzer-fd-leak]: leak of file descriptor ‘ps[1]’ libcap-2.77/libcap/cap_proc.c:1047:7: enter_function: entry to ‘cap_launch’ libcap-2.77/libcap/cap_proc.c:1052:8: branch_false: following ‘false’ branch... libcap-2.77/libcap/cap_proc.c:1065:8: branch_false: following ‘false’ branch... libcap-2.77/libcap/cap_proc.c:1069:13: branch_false: ...to here libcap-2.77/libcap/cap_proc.c:1072:8: branch_true: following ‘true’ branch (when ‘child == 0’)... libcap-2.77/libcap/cap_proc.c:1073:9: branch_true: ...to here libcap-2.77/libcap/cap_proc.c:1075:9: call_function: calling ‘_cap_launch’ from ‘cap_launch’ # 145| # 146| /* fill the capability sets via a system call */ # 147|-> if (capget(&result->head, &result->u[0].set)) { # 148| cap_free(result); # 149| result = NULL; Error: GCC_ANALYZER_WARNING (CWE-775): [#def11] libcap-2.77/libcap/cap_proc.c:148:13: warning[-Wanalyzer-fd-leak]: leak of file descriptor ‘ps[1]’ libcap-2.77/libcap/cap_proc.c:1047:7: enter_function: entry to ‘cap_launch’ libcap-2.77/libcap/cap_proc.c:1052:8: branch_false: following ‘false’ branch... libcap-2.77/libcap/cap_proc.c:1065:8: branch_false: following ‘false’ branch... libcap-2.77/libcap/cap_proc.c:1069:13: branch_false: ...to here libcap-2.77/libcap/cap_proc.c:1072:8: branch_true: following ‘true’ branch (when ‘child == 0’)... libcap-2.77/libcap/cap_proc.c:1073:9: branch_true: ...to here libcap-2.77/libcap/cap_proc.c:1075:9: call_function: calling ‘_cap_launch’ from ‘cap_launch’ # 146| /* fill the capability sets via a system call */ # 147| if (capget(&result->head, &result->u[0].set)) { # 148|-> cap_free(result); # 149| result = NULL; # 150| } Error: GCC_ANALYZER_WARNING (CWE-775): [#def12] libcap-2.77/libcap/cap_proc.c:560:12: warning[-Wanalyzer-fd-leak]: leak of file descriptor ‘ps[1]’ libcap-2.77/libcap/cap_proc.c:1047:7: enter_function: entry to ‘cap_launch’ libcap-2.77/libcap/cap_proc.c:1052:8: branch_false: following ‘false’ branch... libcap-2.77/libcap/cap_proc.c:1065:8: branch_false: following ‘false’ branch... libcap-2.77/libcap/cap_proc.c:1069:13: branch_false: ...to here libcap-2.77/libcap/cap_proc.c:1072:8: branch_true: following ‘true’ branch (when ‘child == 0’)... libcap-2.77/libcap/cap_proc.c:1073:9: branch_true: ...to here libcap-2.77/libcap/cap_proc.c:1075:9: call_function: calling ‘_cap_launch’ from ‘cap_launch’ # 558| } # 559| # 560|-> (void) cap_set_flag(working, CAP_EFFECTIVE, # 561| 1, raise_cap_setuid, CAP_SET); # 562| /* Error: GCC_ANALYZER_WARNING (CWE-775): [#def13] libcap-2.77/libcap/cap_proc.c:980:34: warning[-Wanalyzer-fd-leak]: leak of file descriptor ‘ps[1]’ libcap-2.77/libcap/cap_proc.c:1047:7: enter_function: entry to ‘cap_launch’ libcap-2.77/libcap/cap_proc.c:1052:8: branch_false: following ‘false’ branch... libcap-2.77/libcap/cap_proc.c:1065:8: branch_false: following ‘false’ branch... libcap-2.77/libcap/cap_proc.c:1069:13: branch_false: ...to here libcap-2.77/libcap/cap_proc.c:1072:8: branch_true: following ‘true’ branch (when ‘child == 0’)... libcap-2.77/libcap/cap_proc.c:1073:9: branch_true: ...to here libcap-2.77/libcap/cap_proc.c:1075:9: call_function: calling ‘_cap_launch’ from ‘cap_launch’ # 978| int my_errno; # 979| # 980|-> if (attr->custom_setup_fn && attr->custom_setup_fn(detail)) { # 981| goto defer; # 982| } Error: GCC_ANALYZER_WARNING (CWE-775): [#def14] libcap-2.77/libcap/cap_proc.c:1073:9: warning[-Wanalyzer-fd-leak]: leak of file descriptor ‘ps[0]’ libcap-2.77/libcap/cap_proc.c:1052:8: branch_false: following ‘false’ branch... libcap-2.77/libcap/cap_proc.c:1065:8: branch_false: following ‘false’ branch... libcap-2.77/libcap/cap_proc.c:1069:13: branch_false: ...to here libcap-2.77/libcap/cap_proc.c:1072:8: branch_true: following ‘true’ branch (when ‘child == 0’)... libcap-2.77/libcap/cap_proc.c:1073:9: branch_true: ...to here libcap-2.77/libcap/cap_proc.c:1073:9: throw: if ‘close’ throws an exception... libcap-2.77/libcap/cap_proc.c:1073:9: danger: ‘ps[0]’ leaks here # 1071| # 1072| if (!child) { # 1073|-> close(ps[0]); # 1074| prctl(PR_SET_NAME, "cap-launcher", 0, 0, 0); # 1075| _cap_launch(ps[1], attr, detail); Error: GCC_ANALYZER_WARNING (CWE-775): [#def15] libcap-2.77/libcap/cap_proc.c:1073:9: warning[-Wanalyzer-fd-leak]: leak of file descriptor ‘ps[1]’ libcap-2.77/libcap/cap_proc.c:1052:8: branch_false: following ‘false’ branch... libcap-2.77/libcap/cap_proc.c:1065:8: branch_false: following ‘false’ branch... libcap-2.77/libcap/cap_proc.c:1069:13: branch_false: ...to here libcap-2.77/libcap/cap_proc.c:1072:8: branch_true: following ‘true’ branch (when ‘child == 0’)... libcap-2.77/libcap/cap_proc.c:1073:9: branch_true: ...to here libcap-2.77/libcap/cap_proc.c:1073:9: throw: if ‘close’ throws an exception... libcap-2.77/libcap/cap_proc.c:1073:9: danger: ‘ps[1]’ leaks here # 1071| # 1072| if (!child) { # 1073|-> close(ps[0]); # 1074| prctl(PR_SET_NAME, "cap-launcher", 0, 0, 0); # 1075| _cap_launch(ps[1], attr, detail); Error: GCC_ANALYZER_WARNING (CWE-775): [#def16] libcap-2.77/libcap/cap_proc.c:1081:5: warning[-Wanalyzer-fd-leak]: leak of file descriptor ‘ps[0]’ libcap-2.77/libcap/cap_proc.c:1052:8: branch_false: following ‘false’ branch... libcap-2.77/libcap/cap_proc.c:1065:8: branch_false: following ‘false’ branch... libcap-2.77/libcap/cap_proc.c:1069:13: branch_false: ...to here libcap-2.77/libcap/cap_proc.c:1072:8: branch_false: following ‘false’ branch (when ‘child != 0’)... libcap-2.77/libcap/cap_proc.c:1080:5: branch_false: ...to here libcap-2.77/libcap/cap_proc.c:1081:5: throw: if ‘close’ throws an exception... libcap-2.77/libcap/cap_proc.c:1081:5: danger: ‘ps[0]’ leaks here # 1079| /* child has its own copy, and parent no longer needs it locked. */ # 1080| _cap_mu_unlock(&attr->mutex); # 1081|-> close(ps[1]); # 1082| if (child < 0) { # 1083| goto defer; Error: GCC_ANALYZER_WARNING (CWE-775): [#def17] libcap-2.77/libcap/cap_proc.c:1081:5: warning[-Wanalyzer-fd-leak]: leak of file descriptor ‘ps[1]’ libcap-2.77/libcap/cap_proc.c:1052:8: branch_false: following ‘false’ branch... libcap-2.77/libcap/cap_proc.c:1065:8: branch_false: following ‘false’ branch... libcap-2.77/libcap/cap_proc.c:1069:13: branch_false: ...to here libcap-2.77/libcap/cap_proc.c:1072:8: branch_false: following ‘false’ branch (when ‘child != 0’)... libcap-2.77/libcap/cap_proc.c:1080:5: branch_false: ...to here libcap-2.77/libcap/cap_proc.c:1081:5: throw: if ‘close’ throws an exception... libcap-2.77/libcap/cap_proc.c:1081:5: danger: ‘ps[1]’ leaks here # 1079| /* child has its own copy, and parent no longer needs it locked. */ # 1080| _cap_mu_unlock(&attr->mutex); # 1081|-> close(ps[1]); # 1082| if (child < 0) { # 1083| goto defer; Error: GCC_ANALYZER_WARNING (CWE-775): [#def18] libcap-2.77/libcap/cap_proc.c:1099:9: warning[-Wanalyzer-fd-leak]: leak of file descriptor ‘ps[0]’ libcap-2.77/libcap/cap_proc.c:1052:8: branch_false: following ‘false’ branch... libcap-2.77/libcap/cap_proc.c:1065:8: branch_false: following ‘false’ branch... libcap-2.77/libcap/cap_proc.c:1069:13: branch_false: ...to here libcap-2.77/libcap/cap_proc.c:1072:8: branch_false: following ‘false’ branch (when ‘child != 0’)... libcap-2.77/libcap/cap_proc.c:1080:5: branch_false: ...to here libcap-2.77/libcap/cap_proc.c:1082:8: branch_false: following ‘false’ branch (when ‘child >= 0’)... libcap-2.77/libcap/cap_proc.c:1082:8: branch_false: ...to here libcap-2.77/libcap/cap_proc.c:1093:12: branch_false: following ‘false’ branch (when ‘n != 0’)... libcap-2.77/libcap/cap_proc.c:1096:12: branch_false: ...to here libcap-2.77/libcap/cap_proc.c:1099:9: throw: if ‘waitpid’ throws an exception... libcap-2.77/libcap/cap_proc.c:1099:9: danger: ‘ps[0]’ leaks here # 1097| continue; # 1098| } # 1099|-> waitpid(child, &ignored, 0); # 1100| child = -1; # 1101| my_errno = ECHILD; Error: GCC_ANALYZER_WARNING (CWE-775): [#def19] libcap-2.77/libcap/cap_proc.c:1106:5: warning[-Wanalyzer-fd-leak]: leak of file descriptor ‘ps[0]’ libcap-2.77/libcap/cap_proc.c:1052:8: branch_false: following ‘false’ branch... libcap-2.77/libcap/cap_proc.c:1065:8: branch_false: following ‘false’ branch... libcap-2.77/libcap/cap_proc.c:1069:13: branch_false: ...to here libcap-2.77/libcap/cap_proc.c:1072:8: branch_false: following ‘false’ branch (when ‘child != 0’)... libcap-2.77/libcap/cap_proc.c:1080:5: branch_false: ...to here libcap-2.77/libcap/cap_proc.c:1106:5: throw: if ‘close’ throws an exception... libcap-2.77/libcap/cap_proc.c:1106:5: danger: ‘ps[0]’ leaks here # 1104| # 1105| defer: # 1106|-> close(ps[0]); # 1107| errno = my_errno; # 1108| return child; Error: GCC_ANALYZER_WARNING (CWE-775): [#def20] libcap-2.77/libcap/cap_text.c:735:5: warning[-Wanalyzer-file-leak]: leak of FILE ‘fopen(path, "r")’ libcap-2.77/libcap/cap_text.c:731:8: branch_false: following ‘false’ branch... libcap-2.77/libcap/cap_text.c:734:12: branch_false: ...to here libcap-2.77/libcap/cap_text.c:734:12: acquire_resource: opened here libcap-2.77/libcap/cap_text.c:736:8: branch_false: following ‘false’ branch... libcap-2.77/libcap/cap_text.c:740:11: branch_false: ...to here libcap-2.77/libcap/cap_text.c:740:11: throw: if ‘cap_iab_init’ throws an exception... libcap-2.77/libcap/cap_text.c:735:5: danger: ‘fopen(path, "r")’ leaks here; was opened at [(3)](sarif:/runs/0/results/0/codeFlows/0/threadFlows/0/locations/2) # 733| } # 734| file = fopen(path, "r"); # 735|-> free(path); # 736| if (file == NULL) { # 737| return NULL; Error: GCC_ANALYZER_WARNING (CWE-401): [#def21] libcap-2.77/libcap/cap_text.c:735:5: warning[-Wanalyzer-malloc-leak]: leak of ‘fopen(path, "r")’ libcap-2.77/libcap/cap_text.c:731:8: branch_false: following ‘false’ branch... libcap-2.77/libcap/cap_text.c:734:12: branch_false: ...to here libcap-2.77/libcap/cap_text.c:734:12: acquire_memory: allocated here libcap-2.77/libcap/cap_text.c:736:8: branch_false: following ‘false’ branch... libcap-2.77/libcap/cap_text.c:740:11: branch_false: ...to here libcap-2.77/libcap/cap_text.c:740:11: throw: if ‘cap_iab_init’ throws an exception... libcap-2.77/libcap/cap_text.c:735:5: danger: ‘fopen(path, "r")’ leaks here; was allocated at [(3)](sarif:/runs/0/results/1/codeFlows/0/threadFlows/0/locations/2) # 733| } # 734| file = fopen(path, "r"); # 735|-> free(path); # 736| if (file == NULL) { # 737| return NULL; Error: GCC_ANALYZER_WARNING (CWE-401): [#def22] libcap-2.77/libcap/execable.c:42:1: warning[-Wanalyzer-malloc-leak]: leak of ‘argv’ libcap-2.77/libcap/execable.c:42:1: enter_function: entry to ‘__so_start’ libcap-2.77/libcap/execable.c:42:1: call_function: calling ‘__execable_parse_args’ from ‘__so_start’ libcap-2.77/libcap/execable.c:42:1: return_function: returning to ‘__so_start’ from ‘__execable_parse_args’ libcap-2.77/libcap/execable.c:42:1: throw: if ‘_libcap_initialize’ throws an exception... libcap-2.77/libcap/execable.c:42:1: danger: ‘argv’ leaks here; was allocated at [(13)](sarif:/runs/0/results/7/codeFlows/0/threadFlows/0/locations/12) # 40| } # 41| # 42|-> SO_MAIN(int argc, char **argv) # 43| { # 44| int i; Error: GCC_ANALYZER_WARNING (CWE-775): [#def23] libcap-2.77/libcap/execable.h:65:29: warning[-Wanalyzer-file-leak]: leak of FILE ‘fopen("/proc/self/cmdline", "rb")’ libcap-2.77/libcap/execable.h:60:15: acquire_resource: opened here libcap-2.77/libcap/execable.h:61:8: branch_true: following ‘true’ branch... libcap-2.77/libcap/execable.h:61:8: branch_true: ...to here libcap-2.77/libcap/execable.h:66:16: branch_true: following ‘true’ branch (when ‘new_mem’ is NULL)... libcap-2.77/libcap/execable.h:67:17: branch_true: ...to here libcap-2.77/libcap/execable.h:67:17: throw: if ‘perror’ throws an exception... libcap-2.77/libcap/execable.h:65:29: danger: ‘fopen("/proc/self/cmdline", "rb")’ leaks here; was opened at [(1)](sarif:/runs/0/results/0/codeFlows/0/threadFlows/0/locations/0) # 63| size_t size = 32, offset; # 64| for (offset=0; ; size *= 2) { # 65|-> char *new_mem = realloc(mem, size+1); # 66| if (new_mem == NULL) { # 67| perror("unable to parse arguments"); Error: GCC_ANALYZER_WARNING (CWE-401): [#def24] libcap-2.77/libcap/execable.h:65:29: warning[-Wanalyzer-malloc-leak]: leak of ‘fopen("/proc/self/cmdline", "rb")’ libcap-2.77/libcap/execable.h:60:15: acquire_memory: allocated here libcap-2.77/libcap/execable.h:61:8: branch_true: following ‘true’ branch... libcap-2.77/libcap/execable.h:61:8: branch_true: ...to here libcap-2.77/libcap/execable.h:66:16: branch_true: following ‘true’ branch (when ‘new_mem’ is NULL)... libcap-2.77/libcap/execable.h:67:17: branch_true: ...to here libcap-2.77/libcap/execable.h:67:17: throw: if ‘perror’ throws an exception... libcap-2.77/libcap/execable.h:65:29: danger: ‘fopen("/proc/self/cmdline", "rb")’ leaks here; was allocated at [(1)](sarif:/runs/0/results/1/codeFlows/0/threadFlows/0/locations/0) # 63| size_t size = 32, offset; # 64| for (offset=0; ; size *= 2) { # 65|-> char *new_mem = realloc(mem, size+1); # 66| if (new_mem == NULL) { # 67| perror("unable to parse arguments"); Error: GCC_ANALYZER_WARNING (CWE-401): [#def25] libcap-2.77/libcap/execable.h:67:17: warning[-Wanalyzer-malloc-leak]: leak of ‘mem’ libcap-2.77/libcap/execable.c:42:1: enter_function: entry to ‘__so_start’ libcap-2.77/libcap/execable.c:42:1: call_function: calling ‘__execable_parse_args’ from ‘__so_start’ # 65| char *new_mem = realloc(mem, size+1); # 66| if (new_mem == NULL) { # 67|-> perror("unable to parse arguments"); # 68| fclose(f); # 69| if (mem != NULL) { Error: GCC_ANALYZER_WARNING (CWE-617): [#def26] libcap-2.77/libcap/execable.h:72:17: warning[-Wanalyzer-tainted-assertion]: use of attacked-controlled value in condition for assertion libcap-2.77/libcap/execable.c:42:1: enter_function: entry to ‘__so_start’ libcap-2.77/libcap/execable.c:42:1: call_function: calling ‘__execable_parse_args’ from ‘__so_start’ # 70| free(mem); # 71| } # 72|-> exit(1); # 73| } # 74| mem = new_mem; Error: GCC_ANALYZER_WARNING (CWE-401): [#def27] libcap-2.77/libcap/execable.h:88:13: warning[-Wanalyzer-malloc-leak]: leak of ‘mem’ libcap-2.77/libcap/execable.c:42:1: enter_function: entry to ‘__so_start’ libcap-2.77/libcap/execable.c:42:1: call_function: calling ‘__execable_parse_args’ from ‘__so_start’ # 86| argv = calloc(argc+1, sizeof(char *)); # 87| if (argv == NULL) { # 88|-> perror("failed to allocate memory for argv"); # 89| free(mem); # 90| exit(1); Error: GCC_ANALYZER_WARNING (CWE-401): [#def28] libcap-2.77/libcap/execable.h:99:1: warning[-Wanalyzer-malloc-leak]: leak of ‘mem’ libcap-2.77/libcap/execable.c:42:1: enter_function: entry to ‘__so_start’ libcap-2.77/libcap/execable.c:42:1: call_function: calling ‘__execable_parse_args’ from ‘__so_start’ # 97| *argc_p = argc; # 98| *argv_p = argv; # 99|-> } # 100| # 101| /* Error: GCC_ANALYZER_WARNING (CWE-401): [#def29] libcap-2.77/libcap/execable.h:99:1: warning[-Wanalyzer-malloc-leak]: leak of ‘new_mem’ libcap-2.77/libcap/execable.c:42:1: enter_function: entry to ‘__so_start’ libcap-2.77/libcap/execable.c:42:1: call_function: calling ‘__execable_parse_args’ from ‘__so_start’ # 97| *argc_p = argc; # 98| *argv_p = argv; # 99|-> } # 100| # 101| /* Error: GCC_ANALYZER_WARNING (CWE-401): [#def30] libcap-2.77/pam_cap/pam_cap.c:78:33: warning[-Wanalyzer-malloc-leak]: leak of ‘<unknown>’ /usr/include/security/pam_modules.h:34:5: enter_function: entry to ‘pam_sm_authenticate’ libcap-2.77/pam_cap/pam_cap.c:413:8: branch_false: following ‘false’ branch... libcap-2.77/pam_cap/pam_cap.c:419:9: branch_false: ...to here libcap-2.77/pam_cap/pam_cap.c:419:8: branch_false: following ‘false’ branch... libcap-2.77/pam_cap/pam_cap.c:425:8: branch_false: ...to here libcap-2.77/pam_cap/pam_cap.c:425:8: branch_false: following ‘false’ branch... libcap-2.77/pam_cap/pam_cap.c:432:44: branch_false: ...to here libcap-2.77/pam_cap/pam_cap.c:431:17: call_function: calling ‘read_capabilities_for_user’ from ‘pam_sm_authenticate’ # 76| int g_n = 0, i; # 77| for (i = 0; i < ngrps; i++) { # 78|-> const struct group *g = getgrgid(grps[i]); # 79| if (g == NULL) { # 80| continue; Error: GCC_ANALYZER_WARNING (CWE-401): [#def31] libcap-2.77/pam_cap/pam_cap.c:78:33: warning[-Wanalyzer-malloc-leak]: leak of ‘groups’ libcap-2.77/pam_cap/pam_cap.c:264:12: enter_function: entry to ‘set_capabilities’ libcap-2.77/pam_cap/pam_cap.c:272:8: branch_false: following ‘false’ branch... libcap-2.77/pam_cap/pam_cap.c:279:44: branch_false: ...to here libcap-2.77/pam_cap/pam_cap.c:278:17: call_function: calling ‘read_capabilities_for_user’ from ‘set_capabilities’ # 76| int g_n = 0, i; # 77| for (i = 0; i < ngrps; i++) { # 78|-> const struct group *g = getgrgid(grps[i]); # 79| if (g == NULL) { # 80| continue; Error: GCC_ANALYZER_WARNING (CWE-401): [#def32] libcap-2.77/pam_cap/pam_cap.c:306:9: warning[-Wanalyzer-malloc-leak]: leak of ‘conf_caps’ /usr/include/security/pam_modules.h:36:5: enter_function: entry to ‘pam_sm_setcred’ libcap-2.77/pam_cap/pam_cap.c:469:8: branch_false: following ‘false’ branch... libcap-2.77/pam_cap/pam_cap.c:474:5: branch_false: ...to here libcap-2.77/pam_cap/pam_cap.c:477:8: branch_false: following ‘false’ branch... libcap-2.77/pam_cap/pam_cap.c:483:14: call_function: calling ‘set_capabilities’ from ‘pam_sm_setcred’ # 304| /* clearing CAP_INHERITABLE will also clear the ambient caps, # 305| * but for legacy reasons we do not alter the bounding set. */ # 306|-> cap_clear_flag(cap_s, CAP_INHERITABLE); # 307| if (!cap_set_proc(cap_s)) { # 308| ok = 1; Error: GCC_ANALYZER_WARNING (CWE-401): [#def33] libcap-2.77/pam_cap/pam_cap.c:307:14: warning[-Wanalyzer-malloc-leak]: leak of ‘conf_caps’ /usr/include/security/pam_modules.h:36:5: enter_function: entry to ‘pam_sm_setcred’ libcap-2.77/pam_cap/pam_cap.c:469:8: branch_false: following ‘false’ branch... libcap-2.77/pam_cap/pam_cap.c:474:5: branch_false: ...to here libcap-2.77/pam_cap/pam_cap.c:477:8: branch_false: following ‘false’ branch... libcap-2.77/pam_cap/pam_cap.c:483:14: call_function: calling ‘set_capabilities’ from ‘pam_sm_setcred’ # 305| * but for legacy reasons we do not alter the bounding set. */ # 306| cap_clear_flag(cap_s, CAP_INHERITABLE); # 307|-> if (!cap_set_proc(cap_s)) { # 308| ok = 1; # 309| } Error: GCC_ANALYZER_WARNING (CWE-401): [#def34] libcap-2.77/pam_cap/pam_cap.c:313:11: warning[-Wanalyzer-malloc-leak]: leak of ‘conf_caps’ /usr/include/security/pam_modules.h:36:5: enter_function: entry to ‘pam_sm_setcred’ libcap-2.77/pam_cap/pam_cap.c:469:8: branch_false: following ‘false’ branch... libcap-2.77/pam_cap/pam_cap.c:474:5: branch_false: ...to here libcap-2.77/pam_cap/pam_cap.c:477:8: branch_false: following ‘false’ branch... libcap-2.77/pam_cap/pam_cap.c:483:14: call_function: calling ‘set_capabilities’ from ‘pam_sm_setcred’ # 311| } # 312| # 313|-> iab = cap_iab_from_text(conf_caps); # 314| if (iab == NULL) { # 315| D(("unable to parse the IAB [%s] value", conf_caps)); Error: GCC_ANALYZER_WARNING (CWE-401): [#def35] libcap-2.77/pam_cap/pam_cap.c:321:19: warning[-Wanalyzer-malloc-leak]: leak of ‘conf_caps’ /usr/include/security/pam_modules.h:36:5: enter_function: entry to ‘pam_sm_setcred’ libcap-2.77/pam_cap/pam_cap.c:469:8: branch_false: following ‘false’ branch... libcap-2.77/pam_cap/pam_cap.c:474:5: branch_false: ...to here libcap-2.77/pam_cap/pam_cap.c:477:8: branch_false: following ‘false’ branch... libcap-2.77/pam_cap/pam_cap.c:483:14: call_function: calling ‘set_capabilities’ from ‘pam_sm_setcred’ # 319| if (cs->defer) { # 320| D(("configured to delay applying IAB")); # 321|-> int ret = pam_set_data(cs->pamh, "pam_cap_iab", iab, iab_apply); # 322| if (ret != PAM_SUCCESS) { # 323| D(("unable to cache capabilities for delayed setting: %d", ret)); Error: GCC_ANALYZER_WARNING (CWE-401): [#def36] libcap-2.77/pam_cap/pam_cap.c:325:13: warning[-Wanalyzer-malloc-leak]: leak of ‘conf_caps’ /usr/include/security/pam_modules.h:36:5: enter_function: entry to ‘pam_sm_setcred’ libcap-2.77/pam_cap/pam_cap.c:469:8: branch_false: following ‘false’ branch... libcap-2.77/pam_cap/pam_cap.c:474:5: branch_false: ...to here libcap-2.77/pam_cap/pam_cap.c:477:8: branch_false: following ‘false’ branch... libcap-2.77/pam_cap/pam_cap.c:483:14: call_function: calling ‘set_capabilities’ from ‘pam_sm_setcred’ # 323| D(("unable to cache capabilities for delayed setting: %d", ret)); # 324| /* since ok=0, the module will return PAM_IGNORE */ # 325|-> cap_free(iab); # 326| } # 327| iab = NULL; Error: GCC_ANALYZER_WARNING (CWE-401): [#def37] libcap-2.77/pam_cap/pam_cap.c:328:17: warning[-Wanalyzer-malloc-leak]: leak of ‘conf_caps’ /usr/include/security/pam_modules.h:36:5: enter_function: entry to ‘pam_sm_setcred’ libcap-2.77/pam_cap/pam_cap.c:469:8: branch_false: following ‘false’ branch... libcap-2.77/pam_cap/pam_cap.c:474:5: branch_false: ...to here libcap-2.77/pam_cap/pam_cap.c:477:8: branch_false: following ‘false’ branch... libcap-2.77/pam_cap/pam_cap.c:483:14: call_function: calling ‘set_capabilities’ from ‘pam_sm_setcred’ # 326| } # 327| iab = NULL; # 328|-> } else if (!cap_iab_set_proc(iab)) { # 329| D(("able to set the IAB [%s] value", conf_caps)); # 330| ok = 1; Error: GCC_ANALYZER_WARNING (CWE-401): [#def38] libcap-2.77/pam_cap/pam_cap.c:332:5: warning[-Wanalyzer-malloc-leak]: leak of ‘conf_caps’ /usr/include/security/pam_modules.h:36:5: enter_function: entry to ‘pam_sm_setcred’ libcap-2.77/pam_cap/pam_cap.c:469:8: branch_false: following ‘false’ branch... libcap-2.77/pam_cap/pam_cap.c:474:5: branch_false: ...to here libcap-2.77/pam_cap/pam_cap.c:477:8: branch_false: following ‘false’ branch... libcap-2.77/pam_cap/pam_cap.c:483:14: call_function: calling ‘set_capabilities’ from ‘pam_sm_setcred’ # 330| ok = 1; # 331| } # 332|-> cap_free(iab); # 333| # 334| if (cs->keepcaps) { Error: GCC_ANALYZER_WARNING (CWE-404): [#def39] libcap-2.77/pam_cap/pam_cap.c:366:5: warning[-Wanalyzer-va-list-leak]: missing call to ‘va_end’ libcap-2.77/pam_cap/pam_cap.c:365:5: acquire_resource: ‘va_start’ called here libcap-2.77/pam_cap/pam_cap.c:366:5: throw: if ‘openlog’ throws an exception... libcap-2.77/pam_cap/pam_cap.c:366:5: danger: missing call to ‘va_end’ to match ‘va_start’ at [(1)](sarif:/runs/0/results/9/codeFlows/0/threadFlows/0/locations/0) # 364| # 365| va_start(args, format); # 366|-> openlog("pam_cap", LOG_CONS|LOG_PID, LOG_AUTH); # 367| vsyslog(err, format, args); # 368| va_end(args); Error: GCC_ANALYZER_WARNING (CWE-404): [#def40] libcap-2.77/pam_cap/pam_cap.c:367:5: warning[-Wanalyzer-va-list-leak]: missing call to ‘va_end’ libcap-2.77/pam_cap/pam_cap.c:365:5: acquire_resource: ‘va_start’ called here libcap-2.77/pam_cap/pam_cap.c:367:5: throw: if ‘vsyslog’ throws an exception... libcap-2.77/pam_cap/pam_cap.c:367:5: danger: missing call to ‘va_end’ to match ‘va_start’ at [(1)](sarif:/runs/0/results/10/codeFlows/0/threadFlows/0/locations/0) # 365| va_start(args, format); # 366| openlog("pam_cap", LOG_CONS|LOG_PID, LOG_AUTH); # 367|-> vsyslog(err, format, args); # 368| va_end(args); # 369| closelog(); Error: GCC_ANALYZER_WARNING (CWE-688): [#def41] libcap-2.77/psx/psx.c:108:5: warning[-Wanalyzer-possible-null-argument]: use of possibly-NULL ‘psx_tracker.pid_path’ where non-null expected libcap-2.77/psx/psx.c:159:45: enter_function: entry to ‘psx_lock’ libcap-2.77/psx/psx.c:163:9: call_function: calling ‘_psx_proc_start’ from ‘psx_lock’ # 106| psx_tracker.pid_path = calloc(1, 3*sizeof(pid) + sizeof(taskdir_fmt)); # 107| } # 108|-> sprintf(psx_tracker.pid_path, taskdir_fmt, pid); # 109| psx_tracker.state = _PSX_IDLE; # 110| psx_tracker.cmd.active = 0;
| analyzer-version-clippy | 1.92.0 |
| analyzer-version-cppcheck | 2.19.1 |
| analyzer-version-gcc | 16.0.0 |
| analyzer-version-gcc-analyzer | 16.0.0 |
| 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-115.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.20250521.132812.g8eff701.main-1.el9.noarch |
| mock-config | fedora-rawhide-x86_64 |
| project-name | libcap-2.77-1.fc44 |
| store-results-to | /tmp/tmp27s09c56/libcap-2.77-1.fc44.tar.xz |
| time-created | 2026-01-08 18:33:17 |
| time-finished | 2026-01-08 18:35:58 |
| tool | csmock |
| tool-args | '/usr/bin/csmock' '-r' 'fedora-rawhide-x86_64' '-t' 'gcc,cppcheck,clippy,shellcheck,unicontrol' '-o' '/tmp/tmp27s09c56/libcap-2.77-1.fc44.tar.xz' '--gcc-analyze' '--unicontrol-notests' '--unicontrol-bidi-only' '--install' 'pam' '--gcc-analyzer-bin=/usr/bin/gcc' '/tmp/tmp27s09c56/libcap-2.77-1.fc44.src.rpm' |
| tool-version | csmock-3.8.3.20251215.161544.g62de9a5-1.el9 |