2026-05-04 10:06 ftp://ftp.de.debian.org/debian/pool/main/p/proftpd-mod-vroot/proftpd-mod-vroot_0.9.12.orig.tar.gz 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.8.0-111-generic-x86_64-with-glibc2.39 python: 3.12.3 client-version: 1.3.70 compiler: g++ (Ubuntu 14.2.0-4ubuntu2~24.04.1) 14.2.0 cppcheck: head 2.20.0 head-info: e5c4a73 (2026-05-01 11:10:43 +0200) count: 87 87 elapsed-time: 0.5 0.4 head-timing-info: old-timing-info: head results: proftpd-mod_vroot-0.9.12/alias.c:41:39: debug: Function::addArguments found argument 'key_data' with varid 0. [varid0] proftpd-mod_vroot-0.9.12/alias.c:46:7: debug: valueFlowConditionExpressions bailout: Skipping function due to incomplete variable cb [valueFlowBailoutIncompleteVar] proftpd-mod_vroot-0.9.12/alias.c:59:12: debug: valueFlowConditionExpressions bailout: Skipping function due to incomplete variable FALSE [valueFlowBailoutIncompleteVar] proftpd-mod_vroot-0.9.12/alias.c:74:5: debug: valueFlowConditionExpressions bailout: Skipping function due to incomplete variable errno [valueFlowBailoutIncompleteVar] proftpd-mod_vroot-0.9.12/alias.c:87:5: debug: valueFlowConditionExpressions bailout: Skipping function due to incomplete variable errno [valueFlowBailoutIncompleteVar] proftpd-mod_vroot-0.9.12/alias.c:98:5: debug: valueFlowConditionExpressions bailout: Skipping function due to incomplete variable errno [valueFlowBailoutIncompleteVar] proftpd-mod_vroot-0.9.12/alias.c:41:39: style:inconclusive: Function 'vroot_alias_do' argument 1 names different: declaration '' definition 'key_data'. [funcArgNamesDifferentUnnamed] proftpd-mod_vroot-0.9.12/alias.c:70:41: style:inconclusive: Function 'vroot_alias_get' argument 1 names different: declaration 'dst_path' definition 'path'. [funcArgNamesDifferent] proftpd-mod_vroot-0.9.12/alias.h:38:41: note: Function 'vroot_alias_get' argument 1 names different: declaration 'dst_path' definition 'path'. proftpd-mod_vroot-0.9.12/alias.c:70:41: note: Function 'vroot_alias_get' argument 1 names different: declaration 'dst_path' definition 'path'. proftpd-mod_vroot-0.9.12/fsio.c:36:14: debug: valueFlowConditionExpressions bailout: Skipping function due to incomplete variable PR_TUNABLE_PATH_MAX [valueFlowBailoutIncompleteVar] proftpd-mod_vroot-0.9.12/fsio.c:71:14: debug: valueFlowConditionExpressions bailout: Skipping function due to incomplete variable PR_TUNABLE_PATH_MAX [valueFlowBailoutIncompleteVar] proftpd-mod_vroot-0.9.12/fsio.c:137:15: debug: valueFlowConditionExpressions bailout: Skipping function due to incomplete variable PR_TUNABLE_PATH_MAX [valueFlowBailoutIncompleteVar] proftpd-mod_vroot-0.9.12/fsio.c:161:14: debug: valueFlowConditionExpressions bailout: Skipping function due to incomplete variable PR_TUNABLE_PATH_MAX [valueFlowBailoutIncompleteVar] proftpd-mod_vroot-0.9.12/fsio.c:193:14: debug: valueFlowConditionExpressions bailout: Skipping function due to incomplete variable PR_TUNABLE_PATH_MAX [valueFlowBailoutIncompleteVar] proftpd-mod_vroot-0.9.12/fsio.c:215:14: debug: valueFlowConditionExpressions bailout: Skipping function due to incomplete variable PR_TUNABLE_PATH_MAX [valueFlowBailoutIncompleteVar] proftpd-mod_vroot-0.9.12/fsio.c:241:15: debug: valueFlowConditionExpressions bailout: Skipping function due to incomplete variable PR_TUNABLE_PATH_MAX [valueFlowBailoutIncompleteVar] proftpd-mod_vroot-0.9.12/fsio.c:265:15: debug: valueFlowConditionExpressions bailout: Skipping function due to incomplete variable PR_TUNABLE_PATH_MAX [valueFlowBailoutIncompleteVar] proftpd-mod_vroot-0.9.12/fsio.c:291:14: debug: valueFlowConditionExpressions bailout: Skipping function due to incomplete variable PR_TUNABLE_PATH_MAX [valueFlowBailoutIncompleteVar] proftpd-mod_vroot-0.9.12/fsio.c:343:14: debug: valueFlowConditionExpressions bailout: Skipping function due to incomplete variable PR_TUNABLE_PATH_MAX [valueFlowBailoutIncompleteVar] proftpd-mod_vroot-0.9.12/fsio.c:363:14: debug: valueFlowConditionExpressions bailout: Skipping function due to incomplete variable PR_TUNABLE_PATH_MAX [valueFlowBailoutIncompleteVar] proftpd-mod_vroot-0.9.12/fsio.c:383:14: debug: valueFlowConditionExpressions bailout: Skipping function due to incomplete variable PR_TUNABLE_PATH_MAX [valueFlowBailoutIncompleteVar] proftpd-mod_vroot-0.9.12/fsio.c:423:3: debug: valueFlowConditionExpressions bailout: Skipping function due to incomplete variable errno [valueFlowBailoutIncompleteVar] proftpd-mod_vroot-0.9.12/fsio.c:431:13: debug: valueFlowConditionExpressions bailout: Skipping function due to incomplete variable PR_TUNABLE_PATH_MAX [valueFlowBailoutIncompleteVar] proftpd-mod_vroot-0.9.12/fsio.c:548:14: debug: valueFlowConditionExpressions bailout: Skipping function due to incomplete variable PR_TUNABLE_PATH_MAX [valueFlowBailoutIncompleteVar] proftpd-mod_vroot-0.9.12/fsio.c:612:14: debug: valueFlowConditionExpressions bailout: Skipping function due to incomplete variable PR_TUNABLE_PATH_MAX [valueFlowBailoutIncompleteVar] proftpd-mod_vroot-0.9.12/fsio.c:649:14: debug: valueFlowConditionExpressions bailout: Skipping function due to incomplete variable PR_TUNABLE_PATH_MAX [valueFlowBailoutIncompleteVar] proftpd-mod_vroot-0.9.12/fsio.c:768:14: debug: valueFlowConditionExpressions bailout: Skipping function due to incomplete variable PR_TUNABLE_PATH_MAX [valueFlowBailoutIncompleteVar] proftpd-mod_vroot-0.9.12/fsio.c:995:14: debug: valueFlowConditionExpressions bailout: Skipping function due to incomplete variable PR_TUNABLE_PATH_MAX [valueFlowBailoutIncompleteVar] proftpd-mod_vroot-0.9.12/fsio.c:1015:14: debug: valueFlowConditionExpressions bailout: Skipping function due to incomplete variable PR_TUNABLE_PATH_MAX [valueFlowBailoutIncompleteVar] proftpd-mod_vroot-0.9.12/fsio.c:1053:5: debug: valueFlowConditionExpressions bailout: Skipping function due to incomplete variable errno [valueFlowBailoutIncompleteVar] proftpd-mod_vroot-0.9.12/fsio.c:622:12: style: Obsolescent function 'utimes' called. It is recommended to use 'utimensat' instead. [prohibitedutimesCalled] proftpd-mod_vroot-0.9.12/fsio.c:638:9: style: Obsolescent function 'utimes' called. It is recommended to use 'utimensat' instead. [prohibitedutimesCalled] proftpd-mod_vroot-0.9.12/fsio.c:34:46: style:inconclusive: Function 'vroot_fsio_stat' argument 2 names different: declaration 'path' definition 'stat_path'. [funcArgNamesDifferent] proftpd-mod_vroot-0.9.12/fsio.h:30:46: note: Function 'vroot_fsio_stat' argument 2 names different: declaration 'path' definition 'stat_path'. proftpd-mod_vroot-0.9.12/fsio.c:34:46: note: Function 'vroot_fsio_stat' argument 2 names different: declaration 'path' definition 'stat_path'. proftpd-mod_vroot-0.9.12/fsio.c:69:47: style:inconclusive: Function 'vroot_fsio_lstat' argument 2 names different: declaration 'path' definition 'lstat_path'. [funcArgNamesDifferent] proftpd-mod_vroot-0.9.12/fsio.h:31:47: note: Function 'vroot_fsio_lstat' argument 2 names different: declaration 'path' definition 'lstat_path'. proftpd-mod_vroot-0.9.12/fsio.c:69:47: note: Function 'vroot_fsio_lstat' argument 2 names different: declaration 'path' definition 'lstat_path'. proftpd-mod_vroot-0.9.12/fsio.c:240:46: style:inconclusive: Function 'vroot_fsio_link' argument 2 names different: declaration 'dst_path' definition 'path1'. [funcArgNamesDifferent] proftpd-mod_vroot-0.9.12/fsio.h:36:46: note: Function 'vroot_fsio_link' argument 2 names different: declaration 'dst_path' definition 'path1'. proftpd-mod_vroot-0.9.12/fsio.c:240:46: note: Function 'vroot_fsio_link' argument 2 names different: declaration 'dst_path' definition 'path1'. proftpd-mod_vroot-0.9.12/fsio.c:240:65: style:inconclusive: Function 'vroot_fsio_link' argument 3 names different: declaration 'src_path' definition 'path2'. [funcArgNamesDifferent] proftpd-mod_vroot-0.9.12/fsio.h:36:68: note: Function 'vroot_fsio_link' argument 3 names different: declaration 'src_path' definition 'path2'. proftpd-mod_vroot-0.9.12/fsio.c:240:65: note: Function 'vroot_fsio_link' argument 3 names different: declaration 'src_path' definition 'path2'. proftpd-mod_vroot-0.9.12/fsio.c:264:49: style:inconclusive: Function 'vroot_fsio_symlink' argument 2 names different: declaration 'dst_path' definition 'path1'. [funcArgNamesDifferent] proftpd-mod_vroot-0.9.12/fsio.h:37:49: note: Function 'vroot_fsio_symlink' argument 2 names different: declaration 'dst_path' definition 'path1'. proftpd-mod_vroot-0.9.12/fsio.c:264:49: note: Function 'vroot_fsio_symlink' argument 2 names different: declaration 'dst_path' definition 'path1'. proftpd-mod_vroot-0.9.12/fsio.c:264:68: style:inconclusive: Function 'vroot_fsio_symlink' argument 3 names different: declaration 'src_path' definition 'path2'. [funcArgNamesDifferent] proftpd-mod_vroot-0.9.12/fsio.h:37:71: note: Function 'vroot_fsio_symlink' argument 3 names different: declaration 'src_path' definition 'path2'. proftpd-mod_vroot-0.9.12/fsio.c:264:68: note: Function 'vroot_fsio_symlink' argument 3 names different: declaration 'src_path' definition 'path2'. proftpd-mod_vroot-0.9.12/fsio.c:288:50: style:inconclusive: Function 'vroot_fsio_readlink' argument 2 names different: declaration 'path' definition 'readlink_path'. [funcArgNamesDifferent] proftpd-mod_vroot-0.9.12/fsio.h:38:50: note: Function 'vroot_fsio_readlink' argument 2 names different: declaration 'path' definition 'readlink_path'. proftpd-mod_vroot-0.9.12/fsio.c:288:50: note: Function 'vroot_fsio_readlink' argument 2 names different: declaration 'path' definition 'readlink_path'. proftpd-mod_vroot-0.9.12/fsio.c:609:48: style:inconclusive: Function 'vroot_fsio_utimes' argument 2 names different: declaration 'path' definition 'utimes_path'. [funcArgNamesDifferent] proftpd-mod_vroot-0.9.12/fsio.h:45:48: note: Function 'vroot_fsio_utimes' argument 2 names different: declaration 'path' definition 'utimes_path'. proftpd-mod_vroot-0.9.12/fsio.c:609:48: note: Function 'vroot_fsio_utimes' argument 2 names different: declaration 'path' definition 'utimes_path'. proftpd-mod_vroot-0.9.12/fsio.c:766:51: style:inconclusive: Function 'vroot_fsio_opendir' argument 2 names different: declaration 'path' definition 'orig_path'. [funcArgNamesDifferent] proftpd-mod_vroot-0.9.12/fsio.h:47:51: note: Function 'vroot_fsio_opendir' argument 2 names different: declaration 'path' definition 'orig_path'. proftpd-mod_vroot-0.9.12/fsio.c:766:51: note: Function 'vroot_fsio_opendir' argument 2 names different: declaration 'path' definition 'orig_path'. proftpd-mod_vroot-0.9.12/fsio.c:36:41: style: Variable 'path' can be declared as pointer to const [constVariablePointer] proftpd-mod_vroot-0.9.12/fsio.c:291:41: style: Variable 'path' can be declared as pointer to const [constVariablePointer] proftpd-mod_vroot-0.9.12/fsio.c:402:32: style: Parameter 'fs' can be declared as pointer to const [constParameterPointer] proftpd-mod_vroot-0.9.12/fsio.c:610:21: style: Parameter 'tvs' can be declared as pointer to const [constParameterPointer] proftpd-mod_vroot-0.9.12/fsio.c:612:41: style: Variable 'path' can be declared as pointer to const [constVariablePointer] proftpd-mod_vroot-0.9.12/fsio.c:649:41: style: Variable 'real_path' can be declared as pointer to const [constVariablePointer] proftpd-mod_vroot-0.9.12/fsio.c:689:56: style: Parameter 'user_data' can be declared as pointer to const. However it seems that 'vroot_alias_dirscan' is a callback function, if 'user_data' is declared with const you might also need to cast function pointer(s). [constParameterCallback] proftpd-mod_vroot-0.9.12/fsio.c:881:28: note: You might need to cast the function pointer here proftpd-mod_vroot-0.9.12/fsio.c:689:56: note: Parameter 'user_data' can be declared as pointer to const proftpd-mod_vroot-0.9.12/fsio.c:691:9: style: Variable 'ptr' can be declared as pointer to const [constVariablePointer] proftpd-mod_vroot-0.9.12/fsio.c:98:12: style: Variable 'pathlen' is assigned a value that is never used. [unreadVariable] proftpd-mod_vroot-0.9.12/fsio.c:801:12: style: Variable 'pathlen' is assigned a value that is never used. [unreadVariable] proftpd-mod_vroot-0.9.12/mod_vroot.c:56:36: debug: valueFlowConditionExpressions bailout: Skipping function due to incomplete variable pool [valueFlowBailoutIncompleteVar] proftpd-mod_vroot-0.9.12/mod_vroot.c:121:19: debug: valueFlowConditionExpressions bailout: Skipping function due to incomplete variable CONF_ROOT [valueFlowBailoutIncompleteVar] proftpd-mod_vroot-0.9.12/mod_vroot.c:144:19: debug: valueFlowConditionExpressions bailout: Skipping function due to incomplete variable CONF_ROOT [valueFlowBailoutIncompleteVar] proftpd-mod_vroot-0.9.12/mod_vroot.c:161:19: debug: valueFlowConditionExpressions bailout: Skipping function due to incomplete variable CONF_ROOT [valueFlowBailoutIncompleteVar] proftpd-mod_vroot-0.9.12/mod_vroot.c:181:19: debug: valueFlowConditionExpressions bailout: Skipping function due to incomplete variable CONF_ROOT [valueFlowBailoutIncompleteVar] proftpd-mod_vroot-0.9.12/mod_vroot.c:208:19: debug: valueFlowConditionExpressions bailout: Skipping function due to incomplete variable CONF_ROOT [valueFlowBailoutIncompleteVar] proftpd-mod_vroot-0.9.12/mod_vroot.c:253:26: debug: valueFlowConditionExpressions bailout: Skipping function due to incomplete variable TRUE [valueFlowBailoutIncompleteVar] proftpd-mod_vroot-0.9.12/mod_vroot.c:284:23: debug: valueFlowConditionExpressions bailout: Skipping function due to incomplete variable FALSE [valueFlowBailoutIncompleteVar] proftpd-mod_vroot-0.9.12/mod_vroot.c:316:23: debug: valueFlowConditionExpressions bailout: Skipping function due to incomplete variable FALSE [valueFlowBailoutIncompleteVar] proftpd-mod_vroot-0.9.12/mod_vroot.c:342:23: debug: valueFlowConditionExpressions bailout: Skipping function due to incomplete variable FALSE [valueFlowBailoutIncompleteVar] proftpd-mod_vroot-0.9.12/mod_vroot.c:368:23: debug: valueFlowConditionExpressions bailout: Skipping function due to incomplete variable FALSE [valueFlowBailoutIncompleteVar] proftpd-mod_vroot-0.9.12/mod_vroot.c:381:23: debug: valueFlowConditionExpressions bailout: Skipping function due to incomplete variable FALSE [valueFlowBailoutIncompleteVar] proftpd-mod_vroot-0.9.12/mod_vroot.c:413:23: debug: valueFlowConditionExpressions bailout: Skipping function due to incomplete variable FALSE [valueFlowBailoutIncompleteVar] proftpd-mod_vroot-0.9.12/mod_vroot.c:439:23: debug: valueFlowConditionExpressions bailout: Skipping function due to incomplete variable FALSE [valueFlowBailoutIncompleteVar] proftpd-mod_vroot-0.9.12/mod_vroot.c:465:23: debug: valueFlowConditionExpressions bailout: Skipping function due to incomplete variable FALSE [valueFlowBailoutIncompleteVar] proftpd-mod_vroot-0.9.12/mod_vroot.c:476:23: debug: valueFlowConditionExpressions bailout: Skipping function due to incomplete variable FALSE [valueFlowBailoutIncompleteVar] proftpd-mod_vroot-0.9.12/mod_vroot.c:489:23: debug: valueFlowConditionExpressions bailout: Skipping function due to incomplete variable FALSE [valueFlowBailoutIncompleteVar] proftpd-mod_vroot-0.9.12/mod_vroot.c:502:23: debug: valueFlowConditionExpressions bailout: Skipping function due to incomplete variable FALSE [valueFlowBailoutIncompleteVar] proftpd-mod_vroot-0.9.12/mod_vroot.c:547:42: debug: valueFlowConditionExpressions bailout: Skipping function due to incomplete variable conf [valueFlowBailoutIncompleteVar] proftpd-mod_vroot-0.9.12/mod_vroot.c:616:62: debug: valueFlowConditionExpressions bailout: Skipping function due to incomplete variable FALSE [valueFlowBailoutIncompleteVar] proftpd-mod_vroot-0.9.12/mod_vroot.c:545:8: style: Variable 'use_vroot' can be declared as pointer to const [constVariablePointer] proftpd-mod_vroot-0.9.12/mod_vroot.c:605:57: style: Parameter 'user_data' can be declared as pointer to const. However it seems that 'vroot_exit_ev' is a callback function, if 'user_data' is declared with const you might also need to cast function pointer(s). [constParameterCallback] proftpd-mod_vroot-0.9.12/mod_vroot.c:656:49: note: You might need to cast the function pointer here proftpd-mod_vroot-0.9.12/mod_vroot.c:605:57: note: Parameter 'user_data' can be declared as pointer to const proftpd-mod_vroot-0.9.12/mod_vroot.c:622:11: style: Unused variable: res [unusedVariable] proftpd-mod_vroot-0.9.12/path.c:52:12: debug: valueFlowConditionExpressions bailout: Skipping function due to incomplete variable FALSE [valueFlowBailoutIncompleteVar] proftpd-mod_vroot-0.9.12/path.c:60:5: debug: valueFlowConditionExpressions bailout: Skipping function due to incomplete variable errno [valueFlowBailoutIncompleteVar] proftpd-mod_vroot-0.9.12/path.c:74:5: debug: valueFlowConditionExpressions bailout: Skipping function due to incomplete variable errno [valueFlowBailoutIncompleteVar] proftpd-mod_vroot-0.9.12/path.c:221:5: debug: valueFlowConditionExpressions bailout: Skipping function due to incomplete variable errno [valueFlowBailoutIncompleteVar] proftpd-mod_vroot-0.9.12/path.c:252:12: debug: valueFlowConditionExpressions bailout: Skipping function due to incomplete variable PR_TUNABLE_PATH_MAX [valueFlowBailoutIncompleteVar] proftpd-mod_vroot-0.9.12/path.c:195:11: style: Condition 'ptr==path' is always false [knownConditionTrueFalse] proftpd-mod_vroot-0.9.12/path.c:262:13: style: Condition 'vpath!=NULL' is always true [knownConditionTrueFalse] proftpd-mod_vroot-0.9.12/path.c:316:17: style: Condition 'bufp[0]=='.'' is always true [knownConditionTrueFalse] proftpd-mod_vroot-0.9.12/path.c:297:15: note: Assuming that condition 'bufp[0]=='.'' is not redundant proftpd-mod_vroot-0.9.12/path.c:316:17: note: Condition 'bufp[0]=='.'' is always true proftpd-mod_vroot-0.9.12/path.c:317:17: style: Condition 'bufp[1]=='.'' is always true [knownConditionTrueFalse] proftpd-mod_vroot-0.9.12/path.c:298:15: note: Assuming that condition 'bufp[1]=='.'' is not redundant proftpd-mod_vroot-0.9.12/path.c:317:17: note: Condition 'bufp[1]=='.'' is always true proftpd-mod_vroot-0.9.12/path.c:250:29: warning: Function 'vroot_path_lookup' argument order different: declaration 'p, path, pathlen, dir, flags, alias_path' definition 'p, vpath, vpathsz, path, flags, alias_path' [funcArgOrderDifferent] proftpd-mod_vroot-0.9.12/path.h:36:29: note: Function 'vroot_path_lookup' argument order different: declaration 'p, path, pathlen, dir, flags, alias_path' definition 'p, vpath, vpathsz, path, flags, alias_path' proftpd-mod_vroot-0.9.12/path.c:250:29: note: Function 'vroot_path_lookup' argument order different: declaration 'p, path, pathlen, dir, flags, alias_path' definition 'p, vpath, vpathsz, path, flags, alias_path' proftpd-mod_vroot-0.9.12/path.c:134:13: style: Variable 'next_elem' can be declared as pointer to const [constVariablePointer] proftpd-mod_vroot-0.9.12/path.c:330:11: style: Variable 'ptr' can be declared as pointer to const [constVariablePointer] proftpd-mod_vroot-0.9.12/path.c:243:17: style: Variable 'real_pathlen' is assigned a value that is never used. [unreadVariable] proftpd-mod_vroot-0.9.12/t/api/tests.h:35:3: error: #error "Missing Check installation; necessary for ProFTPD testsuite" [preprocessorErrorDirective] diff: head proftpd-mod_vroot-0.9.12/alias.c:41:39: style:inconclusive: Function 'vroot_alias_do' argument 1 names different: declaration '' definition 'key_data'. [funcArgNamesDifferentUnnamed] 2.20.0 proftpd-mod_vroot-0.9.12/alias.c:41:39: warning: Function 'vroot_alias_do' argument order different: declaration ', user_data, , , ' definition 'key_data, key_datasz, value_data, value_datasz, user_data' [funcArgOrderDifferent] proftpd-mod_vroot-0.9.12/alias.h:32:20: note: Function 'vroot_alias_do' argument order different: declaration ', user_data, , , ' definition 'key_data, key_datasz, value_data, value_datasz, user_data' proftpd-mod_vroot-0.9.12/alias.c:41:39: note: Function 'vroot_alias_do' argument order different: declaration ', user_data, , , ' definition 'key_data, key_datasz, value_data, value_datasz, user_data' DONE