2026-05-03 09:43 ftp://ftp.de.debian.org/debian/pool/main/libx/libxcrypt/libxcrypt_4.5.1.orig.tar.xz cppcheck-options: --library=posix --library=gnu --library=bsd --inconclusive --enable=style,information --inline-suppr --template=daca2 --disable=missingInclude --suppress=unmatchedSuppression --check-library --debug-warnings --suppress=autoNoType --suppress=valueFlowBailout --suppress=bailoutUninitVar --suppress=symbolDatabaseWarning --suppress=normalCheckLevelConditionExpressions -D__GNUC__ --platform=unix64 -j1 platform: Linux-6.12.85+deb13-amd64-x86_64-with-glibc2.41 python: 3.13.5 client-version: 1.3.70 compiler: g++ (20250906) 15.2.0 cppcheck: head 2.20.0 head-info: e5c4a73 (2026-05-01 11:10:43 +0200) count: 73 64 elapsed-time: 1.3 1.1 head-timing-info: old-timing-info: head results: libxcrypt-4.5.1/lib/crypt-port.h:24:2: error: #error "Run configure before compiling; see INSTALL for instructions" [preprocessorErrorDirective] libxcrypt-4.5.1/lib/alg-yescrypt-platform.c:75:3: debug: valueFlowConditionExpressions bailout: Skipping function due to incomplete variable errno [valueFlowBailoutIncompleteVar] libxcrypt-4.5.1/test/badsalt.c:228:50: debug: Function::addArguments found argument 'original' with varid 0. [varid0] libxcrypt-4.5.1/test/badsalt.c:273:50: debug: Function::addArguments found argument 'original' with varid 0. [varid0] libxcrypt-4.5.1/test/badsalt.c:282:47: debug: Function::addArguments found argument 'original' with varid 0. [varid0] libxcrypt-4.5.1/test/badsalt.c:291:51: debug: Function::addArguments found argument 'original' with varid 0. [varid0] libxcrypt-4.5.1/test/badsalt.c:300:52: debug: Function::addArguments found argument 'original' with varid 0. [varid0] libxcrypt-4.5.1/test/badsalt.c:427:20: debug: valueFlowConditionExpressions bailout: Skipping function due to incomplete variable SIG_DFL [valueFlowBailoutIncompleteVar] libxcrypt-4.5.1/test/badsalt.c:468:44: debug: valueFlowConditionExpressions bailout: Skipping function due to incomplete variable stdout [valueFlowBailoutIncompleteVar] libxcrypt-4.5.1/test/badsalt.c:523:29: debug: valueFlowConditionExpressions bailout: Skipping function due to incomplete variable CRYPT_OUTPUT_SIZE [valueFlowBailoutIncompleteVar] libxcrypt-4.5.1/test/badsalt.c:674:15: debug: valueFlowConditionExpressions bailout: Skipping function due to incomplete variable stderr [valueFlowBailoutIncompleteVar] libxcrypt-4.5.1/test/badsalt.c:706:7: error: Memory leak: page [memleak] libxcrypt-4.5.1/test/badsalt.c:716:7: error: Memory leak: page [memleak] libxcrypt-4.5.1/test/badsalt.c:702:11: warning: If memory allocation fails, then there is a possible null pointer dereference: page [nullPointerOutOfMemory] libxcrypt-4.5.1/test/badsalt.c:694:21: note: Assuming allocation function fails libxcrypt-4.5.1/test/badsalt.c:694:21: note: Assignment 'page=mmap(0,pagesize*2,PROT_READ|PROT_WRITE,MAP_PRIVATE|MAP_ANON,-1,0)', assigned value is 0 libxcrypt-4.5.1/test/badsalt.c:702:11: note: Null pointer dereference libxcrypt-4.5.1/test/badsalt.c:703:22: error: If memory allocation fails: pointer addition with NULL pointer. [nullPointerArithmeticOutOfMemory] libxcrypt-4.5.1/test/badsalt.c:694:21: note: Assuming allocation function fails libxcrypt-4.5.1/test/badsalt.c:694:21: note: Assignment 'page=mmap(0,pagesize*2,PROT_READ|PROT_WRITE,MAP_PRIVATE|MAP_ANON,-1,0)', assigned value is 0 libxcrypt-4.5.1/test/badsalt.c:703:22: note: Null pointer addition libxcrypt-4.5.1/test/badsalt.c:228:50: style:inconclusive: Function 'vt_never' argument 1 names different: declaration '' definition 'original'. [funcArgNamesDifferentUnnamed] libxcrypt-4.5.1/test/badsalt.c:238:42: style:inconclusive: Function 'vt_varsuffix' argument 1 names different: declaration '' definition 'original'. [funcArgNamesDifferentUnnamed] libxcrypt-4.5.1/test/badsalt.c:239:26: style:inconclusive: Function 'vt_varsuffix' argument 2 names different: declaration '' definition 'truncated'. [funcArgNamesDifferentUnnamed] libxcrypt-4.5.1/test/badsalt.c:273:50: style:inconclusive: Function 'vt_sunmd5' argument 1 names different: declaration '' definition 'original'. [funcArgNamesDifferentUnnamed] libxcrypt-4.5.1/test/badsalt.c:282:47: style:inconclusive: Function 'vt_sm3' argument 1 names different: declaration '' definition 'original'. [funcArgNamesDifferentUnnamed] libxcrypt-4.5.1/test/badsalt.c:291:51: style:inconclusive: Function 'vt_sha2gnu' argument 1 names different: declaration '' definition 'original'. [funcArgNamesDifferentUnnamed] libxcrypt-4.5.1/test/badsalt.c:300:52: style:inconclusive: Function 'vt_yescrypt' argument 1 names different: declaration '' definition 'original'. [funcArgNamesDifferentUnnamed] libxcrypt-4.5.1/test/badsalt.c:448:13: style: Variable 'retval' can be declared as pointer to const [constVariablePointer] libxcrypt-4.5.1/test/badsetting.c:241:41: debug: valueFlowConditionExpressions bailout: Skipping function due to incomplete variable CRYPT_GENSALT_OUTPUT_SIZE [valueFlowBailoutIncompleteVar] libxcrypt-4.5.1/test/badsetting.c:263:13: debug: valueFlowConditionExpressions bailout: Skipping function due to incomplete variable CRYPT_GENSALT_OUTPUT_SIZE [valueFlowBailoutIncompleteVar] libxcrypt-4.5.1/test/badsetting.c:330:21: style:inconclusive: Redundant condition: The condition 'i <= '9'' is redundant since 'i <= '0'' is sufficient. [redundantCondition] libxcrypt-4.5.1/test/badsetting.c:331:21: style:inconclusive: Redundant condition: The condition 'i <= 'Z'' is redundant since 'i <= 'A'' is sufficient. [redundantCondition] libxcrypt-4.5.1/test/badsetting.c:332:21: style:inconclusive: Redundant condition: The condition 'i <= 'z'' is redundant since 'i <= 'a'' is sufficient. [redundantCondition] libxcrypt-4.5.1/test/checksalt.c:151:15: debug: valueFlowConditionExpressions bailout: Skipping function due to incomplete variable CRYPT_GENSALT_OUTPUT_SIZE [valueFlowBailoutIncompleteVar] libxcrypt-4.5.1/test/checksalt.c:157:14: style: Variable 'retval' is assigned a value that is never used. [unreadVariable] libxcrypt-4.5.1/test/compile-strong-alias.c:30:19: style:inconclusive: Function 'addition' argument 1 names different: declaration '' definition 'a'. [funcArgNamesDifferentUnnamed] libxcrypt-4.5.1/test/compile-strong-alias.c:30:26: style:inconclusive: Function 'addition' argument 2 names different: declaration '' definition 'b'. [funcArgNamesDifferentUnnamed] libxcrypt-4.5.1/test/crypt-badargs.c:133:13: debug: valueFlowConditionExpressions bailout: Skipping function due to incomplete variable errno [valueFlowBailoutIncompleteVar] libxcrypt-4.5.1/test/crypt-badargs.c:353:30: debug: valueFlowConditionExpressions bailout: Skipping function due to incomplete variable _SC_PAGESIZE [valueFlowBailoutIncompleteVar] libxcrypt-4.5.1/test/crypt-badargs.c:155:15: portability: Non reentrant function 'crypt' called. For threadsafe applications it is recommended to use the reentrant replacement function 'crypt_r'. [prohibitedcryptCalled] libxcrypt-4.5.1/test/crypt-badargs.c:373:7: error: Memory leak: page [memleak] libxcrypt-4.5.1/test/crypt-badargs.c:383:7: error: Memory leak: page [memleak] libxcrypt-4.5.1/test/crypt-badargs.c:369:11: warning: If memory allocation fails, then there is a possible null pointer dereference: page [nullPointerOutOfMemory] libxcrypt-4.5.1/test/crypt-badargs.c:361:21: note: Assuming allocation function fails libxcrypt-4.5.1/test/crypt-badargs.c:361:21: note: Assignment 'page=mmap(0,pagesize*2,PROT_READ|PROT_WRITE,MAP_PRIVATE|MAP_ANON,-1,0)', assigned value is 0 libxcrypt-4.5.1/test/crypt-badargs.c:369:11: note: Null pointer dereference libxcrypt-4.5.1/test/crypt-badargs.c:370:22: error: If memory allocation fails: pointer addition with NULL pointer. [nullPointerArithmeticOutOfMemory] libxcrypt-4.5.1/test/crypt-badargs.c:361:21: note: Assuming allocation function fails libxcrypt-4.5.1/test/crypt-badargs.c:361:21: note: Assignment 'page=mmap(0,pagesize*2,PROT_READ|PROT_WRITE,MAP_PRIVATE|MAP_ANON,-1,0)', assigned value is 0 libxcrypt-4.5.1/test/crypt-badargs.c:370:22: note: Null pointer addition libxcrypt-4.5.1/test/crypt-badargs.c:155:9: style: Variable 'got' can be declared as pointer to const [constVariablePointer] libxcrypt-4.5.1/test/crypt-badargs.c:165:9: style: Variable 'got' can be declared as pointer to const [constVariablePointer] libxcrypt-4.5.1/test/crypt-badargs.c:176:9: style: Variable 'got' can be declared as pointer to const [constVariablePointer] libxcrypt-4.5.1/test/crypt-badargs.c:191:9: style: Variable 'got' can be declared as pointer to const [constVariablePointer] libxcrypt-4.5.1/test/crypt-nested-call.c:92:16: portability: Non reentrant function 'crypt' called. For threadsafe applications it is recommended to use the reentrant replacement function 'crypt_r'. [prohibitedcryptCalled] libxcrypt-4.5.1/test/crypt-nested-call.c:93:16: portability: Non reentrant function 'crypt' called. For threadsafe applications it is recommended to use the reentrant replacement function 'crypt_r'. [prohibitedcryptCalled] libxcrypt-4.5.1/test/crypt-nested-call.c:104:16: portability: Non reentrant function 'crypt' called. For threadsafe applications it is recommended to use the reentrant replacement function 'crypt_r'. [prohibitedcryptCalled] libxcrypt-4.5.1/test/crypt-nested-call.c:104:23: warning: Either the condition '!retval' is redundant or there is possible null pointer dereference: retval. [nullPointerRedundantCheck] libxcrypt-4.5.1/test/crypt-nested-call.c:95:11: note: Assuming that condition '!retval' is not redundant libxcrypt-4.5.1/test/crypt-nested-call.c:104:23: note: Null pointer dereference libxcrypt-4.5.1/test/crypt-too-long-phrase.c:84:15: debug: valueFlowConditionExpressions bailout: Skipping function due to incomplete variable CRYPT_MAX_PASSPHRASE_SIZE [valueFlowBailoutIncompleteVar] libxcrypt-4.5.1/test/crypt-too-long-phrase.c:99:16: portability: Non reentrant function 'crypt' called. For threadsafe applications it is recommended to use the reentrant replacement function 'crypt_r'. [prohibitedcryptCalled] libxcrypt-4.5.1/test/crypt-too-long-phrase.c:83:9: style: Variable 'retval' can be declared as pointer to const [constVariablePointer] libxcrypt-4.5.1/test/des-obsolete.c:68:20: debug: valueFlowConditionExpressions bailout: Skipping function due to incomplete variable stdout [valueFlowBailoutIncompleteVar] libxcrypt-4.5.1/test/des-obsolete_r.c:68:20: debug: valueFlowConditionExpressions bailout: Skipping function due to incomplete variable stdout [valueFlowBailoutIncompleteVar] libxcrypt-4.5.1/test/gensalt-extradata.c:103:10: debug: valueFlowConditionExpressions bailout: Skipping function due to incomplete variable CRYPT_GENSALT_OUTPUT_SIZE [valueFlowBailoutIncompleteVar] libxcrypt-4.5.1/test/gensalt-extradata.c:153:16: debug: valueFlowConditionExpressions bailout: Skipping function due to incomplete variable CRYPT_GENSALT_OUTPUT_SIZE [valueFlowBailoutIncompleteVar] libxcrypt-4.5.1/test/gensalt-extradata.c:107:9: style: Variable 'rv' can be declared as pointer to const [constVariablePointer] libxcrypt-4.5.1/test/gensalt.c:471:15: debug: valueFlowConditionExpressions bailout: Skipping function due to incomplete variable CRYPT_GENSALT_OUTPUT_SIZE [valueFlowBailoutIncompleteVar] libxcrypt-4.5.1/test/getrandom-interface.c:35:62: debug: valueFlowConditionExpressions bailout: Skipping function due to incomplete variable errno [valueFlowBailoutIncompleteVar] libxcrypt-4.5.1/test/getrandom-interface.c:124:23: debug: valueFlowConditionExpressions bailout: Skipping function due to incomplete variable errno [valueFlowBailoutIncompleteVar] libxcrypt-4.5.1/test/getrandom-interface.c:171:30: debug: valueFlowConditionExpressions bailout: Skipping function due to incomplete variable _SC_PAGESIZE [valueFlowBailoutIncompleteVar] libxcrypt-4.5.1/test/getrandom-interface.c:191:7: error: Memory leak: page [memleak] libxcrypt-4.5.1/test/getrandom-interface.c:201:7: error: Memory leak: page [memleak] libxcrypt-4.5.1/test/getrandom-interface.c:187:11: warning: If memory allocation fails, then there is a possible null pointer dereference: page [nullPointerOutOfMemory] libxcrypt-4.5.1/test/getrandom-interface.c:179:21: note: Assuming allocation function fails libxcrypt-4.5.1/test/getrandom-interface.c:179:21: note: Assignment 'page=mmap(0,pagesize*2,PROT_READ|PROT_WRITE,MAP_PRIVATE|MAP_ANON,-1,0)', assigned value is 0 libxcrypt-4.5.1/test/getrandom-interface.c:187:11: note: Null pointer dereference libxcrypt-4.5.1/test/getrandom-interface.c:188:22: error: If memory allocation fails: pointer addition with NULL pointer. [nullPointerArithmeticOutOfMemory] libxcrypt-4.5.1/test/getrandom-interface.c:179:21: note: Assuming allocation function fails libxcrypt-4.5.1/test/getrandom-interface.c:179:21: note: Assignment 'page=mmap(0,pagesize*2,PROT_READ|PROT_WRITE,MAP_PRIVATE|MAP_ANON,-1,0)', assigned value is 0 libxcrypt-4.5.1/test/getrandom-interface.c:188:22: note: Null pointer addition libxcrypt-4.5.1/test/ka-tester.c:154:7: debug: valueFlowConditionExpressions bailout: Skipping function due to incomplete variable errno [valueFlowBailoutIncompleteVar] libxcrypt-4.5.1/test/ka-tester.c:177:22: debug: valueFlowConditionExpressions bailout: Skipping function due to incomplete variable CRYPT_MAX_PASSPHRASE_SIZE [valueFlowBailoutIncompleteVar] libxcrypt-4.5.1/test/ka-tester.c:207:7: debug: valueFlowConditionExpressions bailout: Skipping function due to incomplete variable errno [valueFlowBailoutIncompleteVar] libxcrypt-4.5.1/test/ka-tester.c:155:14: portability: Non reentrant function 'crypt' called. For threadsafe applications it is recommended to use the reentrant replacement function 'crypt_r'. [prohibitedcryptCalled] libxcrypt-4.5.1/test/ka-tester.c:148:9: style: Variable 'hash' can be declared as pointer to const [constVariablePointer] libxcrypt-4.5.1/test/ka-tester.c:166:9: style: Variable 'hash' can be declared as pointer to const [constVariablePointer] libxcrypt-4.5.1/test/ka-tester.c:199:9: style: Variable 'hash' can be declared as pointer to const [constVariablePointer] libxcrypt-4.5.1/test/ka-tester.c:170:9: style: union member 'Anonymous0::aligned' is never used. [unusedStructMember] libxcrypt-4.5.1/test/short-outbuf.c:98:26: debug: valueFlowConditionExpressions bailout: Skipping function due to incomplete variable crypt_data [valueFlowBailoutIncompleteVar] libxcrypt-4.5.1/test/short-outbuf.c:51:42: warning:inconclusive: If memory allocation fails, then there is a possible null pointer dereference: outbuf [nullPointerOutOfMemory] libxcrypt-4.5.1/test/short-outbuf.c:47:29: note: Assuming allocation function fails libxcrypt-4.5.1/test/short-outbuf.c:47:29: note: Assignment 'outbuf=malloc(sizeof(char)*s)', assigned value is 0 libxcrypt-4.5.1/test/short-outbuf.c:51:42: note: Null pointer dereference diff: head libxcrypt-4.5.1/test/badsalt.c:228:50: style:inconclusive: Function 'vt_never' argument 1 names different: declaration '' definition 'original'. [funcArgNamesDifferentUnnamed] head libxcrypt-4.5.1/test/badsalt.c:238:42: style:inconclusive: Function 'vt_varsuffix' argument 1 names different: declaration '' definition 'original'. [funcArgNamesDifferentUnnamed] head libxcrypt-4.5.1/test/badsalt.c:239:26: style:inconclusive: Function 'vt_varsuffix' argument 2 names different: declaration '' definition 'truncated'. [funcArgNamesDifferentUnnamed] head libxcrypt-4.5.1/test/badsalt.c:273:50: style:inconclusive: Function 'vt_sunmd5' argument 1 names different: declaration '' definition 'original'. [funcArgNamesDifferentUnnamed] head libxcrypt-4.5.1/test/badsalt.c:282:47: style:inconclusive: Function 'vt_sm3' argument 1 names different: declaration '' definition 'original'. [funcArgNamesDifferentUnnamed] head libxcrypt-4.5.1/test/badsalt.c:291:51: style:inconclusive: Function 'vt_sha2gnu' argument 1 names different: declaration '' definition 'original'. [funcArgNamesDifferentUnnamed] head libxcrypt-4.5.1/test/badsalt.c:300:52: style:inconclusive: Function 'vt_yescrypt' argument 1 names different: declaration '' definition 'original'. [funcArgNamesDifferentUnnamed] head libxcrypt-4.5.1/test/compile-strong-alias.c:30:19: style:inconclusive: Function 'addition' argument 1 names different: declaration '' definition 'a'. [funcArgNamesDifferentUnnamed] head libxcrypt-4.5.1/test/compile-strong-alias.c:30:26: style:inconclusive: Function 'addition' argument 2 names different: declaration '' definition 'b'. [funcArgNamesDifferentUnnamed] DONE