2026-05-05 21:47 ftp://ftp.de.debian.org/debian/pool/main/x/xdg-user-dirs/xdg-user-dirs_0.20.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.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: 6278f6b (2026-05-05 15:01:04 +0200) count: 60 61 elapsed-time: 0.7 0.5 head-timing-info: old-timing-info: head results: xdg-user-dirs-0.20/src/xdg-user-dir-lookup.c:54:9: style: Variable 'home_dir' can be declared as pointer to const [constVariablePointer] xdg-user-dirs-0.20/src/xdg-user-dir-lookup.c:54:20: style: Variable 'config_home' can be declared as pointer to const [constVariablePointer] xdg-user-dirs-0.20/src/xdg-user-dir-lookup.c:196:15: style: Variable 'home_dir' can be declared as pointer to const [constVariablePointer] xdg-user-dirs-0.20/src/xdg-user-dirs-update.c:142:35: debug: valueFlowConditionExpressions bailout: Skipping function due to incomplete variable MB_CUR_MAX [valueFlowBailoutIncompleteVar] xdg-user-dirs-0.20/src/xdg-user-dirs-update.c:218:12: debug: valueFlowConditionExpressions bailout: Skipping function due to incomplete variable errno [valueFlowBailoutIncompleteVar] xdg-user-dirs-0.20/src/xdg-user-dirs-update.c:302:35: debug: valueFlowConditionExpressions bailout: Skipping function due to incomplete variable errno [valueFlowBailoutIncompleteVar] xdg-user-dirs-0.20/src/xdg-user-dirs-update.c:456:48: debug: valueFlowConditionExpressions bailout: Skipping function due to incomplete variable XDGCONFDIR [valueFlowBailoutIncompleteVar] xdg-user-dirs-0.20/src/xdg-user-dirs-update.c:563:54: debug: valueFlowConditionExpressions bailout: Skipping function due to incomplete variable CODESET [valueFlowBailoutIncompleteVar] xdg-user-dirs-0.20/src/xdg-user-dirs-update.c:604:16: debug: valueFlowConditionExpressions bailout: Skipping function due to incomplete variable stderr [valueFlowBailoutIncompleteVar] xdg-user-dirs-0.20/src/xdg-user-dirs-update.c:770:16: debug: valueFlowConditionExpressions bailout: Skipping function due to incomplete variable stderr [valueFlowBailoutIncompleteVar] xdg-user-dirs-0.20/src/xdg-user-dirs-update.c:810:38: debug: valueFlowConditionExpressions bailout: Skipping function due to incomplete variable errno [valueFlowBailoutIncompleteVar] xdg-user-dirs-0.20/src/xdg-user-dirs-update.c:973:24: debug: valueFlowConditionExpressions bailout: Skipping function due to incomplete variable stderr [valueFlowBailoutIncompleteVar] xdg-user-dirs-0.20/src/xdg-user-dirs-update.c:1059:14: debug: valueFlowConditionExpressions bailout: Skipping function due to incomplete variable LC_ALL [valueFlowBailoutIncompleteVar] xdg-user-dirs-0.20/src/xdg-user-dirs-update.c:342:12: portability: Non reentrant function 'getpwuid' called. For threadsafe applications it is recommended to use the reentrant replacement function 'getpwuid_r'. [prohibitedgetpwuidCalled] xdg-user-dirs-0.20/src/xdg-user-dirs-update.c:418:7: error: Common realloc mistake: 'paths' nulled but not freed upon failure [memleakOnRealloc] xdg-user-dirs-0.20/src/xdg-user-dirs-update.c:444:11: error: Common realloc mistake: 'paths' nulled but not freed upon failure [memleakOnRealloc] xdg-user-dirs-0.20/src/xdg-user-dirs-update.c:463:11: error: Common realloc mistake: 'paths' nulled but not freed upon failure [memleakOnRealloc] xdg-user-dirs-0.20/src/xdg-user-dirs-update.c:909:7: error: Common realloc mistake: 'res' nulled but not freed upon failure [memleakOnRealloc] xdg-user-dirs-0.20/src/xdg-user-dirs-update.c:90:11: warning: If memory allocation fails, then there is a possible null pointer dereference: res [nullPointerOutOfMemory] xdg-user-dirs-0.20/src/xdg-user-dirs-update.c:89:16: note: Assuming allocation function fails xdg-user-dirs-0.20/src/xdg-user-dirs-update.c:89:16: note: Assignment 'res=malloc(end-start+1)', assigned value is 0 xdg-user-dirs-0.20/src/xdg-user-dirs-update.c:90:11: note: Null pointer dereference xdg-user-dirs-0.20/src/xdg-user-dirs-update.c:91:3: warning: If memory allocation fails, then there is a possible null pointer dereference: res [nullPointerOutOfMemory] xdg-user-dirs-0.20/src/xdg-user-dirs-update.c:89:16: note: Assuming allocation function fails xdg-user-dirs-0.20/src/xdg-user-dirs-update.c:89:16: note: Assignment 'res=malloc(end-start+1)', assigned value is 0 xdg-user-dirs-0.20/src/xdg-user-dirs-update.c:91:3: note: Null pointer dereference xdg-user-dirs-0.20/src/xdg-user-dirs-update.c:201:11: warning: If memory allocation fails, then there is a possible null pointer dereference: p [nullPointerOutOfMemory] xdg-user-dirs-0.20/src/xdg-user-dirs-update.c:197:17: note: Assuming allocation function fails xdg-user-dirs-0.20/src/xdg-user-dirs-update.c:197:17: note: Assignment 'path=strdup(path)', assigned value is 0 xdg-user-dirs-0.20/src/xdg-user-dirs-update.c:200:7: note: Assignment 'p=path', assigned value is 0 xdg-user-dirs-0.20/src/xdg-user-dirs-update.c:201:11: note: Null pointer dereference xdg-user-dirs-0.20/src/xdg-user-dirs-update.c:204:15: warning: If memory allocation fails, then there is a possible null pointer dereference: p [nullPointerOutOfMemory] xdg-user-dirs-0.20/src/xdg-user-dirs-update.c:197:17: note: Assuming allocation function fails xdg-user-dirs-0.20/src/xdg-user-dirs-update.c:197:17: note: Assignment 'path=strdup(path)', assigned value is 0 xdg-user-dirs-0.20/src/xdg-user-dirs-update.c:200:7: note: Assignment 'p=path', assigned value is 0 xdg-user-dirs-0.20/src/xdg-user-dirs-update.c:204:15: note: Null pointer dereference xdg-user-dirs-0.20/src/xdg-user-dirs-update.c:207:15: warning: If memory allocation fails, then there is a possible null pointer dereference: p [nullPointerOutOfMemory] xdg-user-dirs-0.20/src/xdg-user-dirs-update.c:197:17: note: Assuming allocation function fails xdg-user-dirs-0.20/src/xdg-user-dirs-update.c:197:17: note: Assignment 'path=strdup(path)', assigned value is 0 xdg-user-dirs-0.20/src/xdg-user-dirs-update.c:200:7: note: Assignment 'p=path', assigned value is 0 xdg-user-dirs-0.20/src/xdg-user-dirs-update.c:207:15: note: Null pointer dereference xdg-user-dirs-0.20/src/xdg-user-dirs-update.c:211:12: warning: If memory allocation fails, then there is a possible null pointer dereference: p [nullPointerOutOfMemory] xdg-user-dirs-0.20/src/xdg-user-dirs-update.c:197:17: note: Assuming allocation function fails xdg-user-dirs-0.20/src/xdg-user-dirs-update.c:197:17: note: Assignment 'path=strdup(path)', assigned value is 0 xdg-user-dirs-0.20/src/xdg-user-dirs-update.c:200:7: note: Assignment 'p=path', assigned value is 0 xdg-user-dirs-0.20/src/xdg-user-dirs-update.c:211:12: note: Null pointer dereference xdg-user-dirs-0.20/src/xdg-user-dirs-update.c:246:9: warning: If memory allocation fails, then there is a possible null pointer dereference: d++ [nullPointerOutOfMemory] xdg-user-dirs-0.20/src/xdg-user-dirs-update.c:238:22: note: Assuming allocation function fails xdg-user-dirs-0.20/src/xdg-user-dirs-update.c:238:22: note: Assignment 'unescaped=malloc(strlen(escaped)+1)', assigned value is 0 xdg-user-dirs-0.20/src/xdg-user-dirs-update.c:240:7: note: Assignment 'd=unescaped', assigned value is 0 xdg-user-dirs-0.20/src/xdg-user-dirs-update.c:246:9: note: Null pointer dereference xdg-user-dirs-0.20/src/xdg-user-dirs-update.c:269:9: warning: If memory allocation fails, then there is a possible null pointer dereference: d++ [nullPointerOutOfMemory] xdg-user-dirs-0.20/src/xdg-user-dirs-update.c:258:20: note: Assuming allocation function fails xdg-user-dirs-0.20/src/xdg-user-dirs-update.c:258:20: note: Assignment 'escaped=malloc(strlen(unescaped)*2+1)', assigned value is 0 xdg-user-dirs-0.20/src/xdg-user-dirs-update.c:260:7: note: Assignment 'd=escaped', assigned value is 0 xdg-user-dirs-0.20/src/xdg-user-dirs-update.c:269:9: note: Null pointer dereference xdg-user-dirs-0.20/src/xdg-user-dirs-update.c:396:3: warning: If memory allocation fails, then there is a possible null pointer dereference: paths [nullPointerOutOfMemory] xdg-user-dirs-0.20/src/xdg-user-dirs-update.c:395:18: note: Assuming allocation function fails xdg-user-dirs-0.20/src/xdg-user-dirs-update.c:395:18: note: Assignment 'paths=malloc(sizeof(char*))', assigned value is 0 xdg-user-dirs-0.20/src/xdg-user-dirs-update.c:396:3: note: Null pointer dereference xdg-user-dirs-0.20/src/xdg-user-dirs-update.c:437:3: warning: If memory allocation fails, then there is a possible null pointer dereference: paths [nullPointerOutOfMemory] xdg-user-dirs-0.20/src/xdg-user-dirs-update.c:436:18: note: Assuming allocation function fails xdg-user-dirs-0.20/src/xdg-user-dirs-update.c:436:18: note: Assignment 'paths=malloc(sizeof(char*))', assigned value is 0 xdg-user-dirs-0.20/src/xdg-user-dirs-update.c:437:3: note: Null pointer dereference xdg-user-dirs-0.20/src/xdg-user-dirs-update.c:486:7: warning: If memory allocation fails, then there is a possible null pointer dereference: new_dirs [nullPointerOutOfMemory] xdg-user-dirs-0.20/src/xdg-user-dirs-update.c:485:25: note: Assuming allocation function fails xdg-user-dirs-0.20/src/xdg-user-dirs-update.c:485:25: note: Assignment 'new_dirs=malloc(sizeof(struct Directory)*2)', assigned value is 0 xdg-user-dirs-0.20/src/xdg-user-dirs-update.c:486:7: note: Null pointer dereference xdg-user-dirs-0.20/src/xdg-user-dirs-update.c:487:7: warning: If memory allocation fails, then there is a possible null pointer dereference: new_dirs [nullPointerOutOfMemory] xdg-user-dirs-0.20/src/xdg-user-dirs-update.c:485:25: note: Assuming allocation function fails xdg-user-dirs-0.20/src/xdg-user-dirs-update.c:485:25: note: Assignment 'new_dirs=malloc(sizeof(struct Directory)*2)', assigned value is 0 xdg-user-dirs-0.20/src/xdg-user-dirs-update.c:487:7: note: Null pointer dereference xdg-user-dirs-0.20/src/xdg-user-dirs-update.c:776:17: warning: If memory allocation fails, then there is a possible null pointer dereference: locale [nullPointerOutOfMemory] xdg-user-dirs-0.20/src/xdg-user-dirs-update.c:774:19: note: Assuming allocation function fails xdg-user-dirs-0.20/src/xdg-user-dirs-update.c:774:19: note: Assignment 'locale=strdup(setlocale(LC_MESSAGES,NULL))', assigned value is 0 xdg-user-dirs-0.20/src/xdg-user-dirs-update.c:776:17: note: Null pointer dereference xdg-user-dirs-0.20/src/xdg-user-dirs-update.c:805:17: warning: If memory allocation fails, then there is a possible null pointer dereference: user_config_file [nullPointerOutOfMemory] xdg-user-dirs-0.20/src/xdg-user-dirs-update.c:801:31: note: Assuming allocation function fails xdg-user-dirs-0.20/src/xdg-user-dirs-update.c:801:31: note: Assignment 'user_config_file=strdup(dummy_file)', assigned value is 0 xdg-user-dirs-0.20/src/xdg-user-dirs-update.c:805:17: note: Null pointer dereference xdg-user-dirs-0.20/src/xdg-user-dirs-update.c:806:20: warning: If memory allocation fails, then there is a possible null pointer dereference: dir [nullPointerOutOfMemory] xdg-user-dirs-0.20/src/xdg-user-dirs-update.c:805:16: note: Assuming allocation function fails xdg-user-dirs-0.20/src/xdg-user-dirs-update.c:805:16: note: Assignment 'dir=strdup(user_config_file)', assigned value is 0 xdg-user-dirs-0.20/src/xdg-user-dirs-update.c:806:20: note: Null pointer dereference xdg-user-dirs-0.20/src/xdg-user-dirs-update.c:823:11: warning: If memory allocation fails, then there is a possible null pointer dereference: tmp_file [nullPointerOutOfMemory] xdg-user-dirs-0.20/src/xdg-user-dirs-update.c:822:21: note: Assuming allocation function fails xdg-user-dirs-0.20/src/xdg-user-dirs-update.c:822:21: note: Assignment 'tmp_file=malloc(strlen(user_config_file)+6+1)', assigned value is 0 xdg-user-dirs-0.20/src/xdg-user-dirs-update.c:823:11: note: Null pointer dereference xdg-user-dirs-0.20/src/xdg-user-dirs-update.c:824:11: warning: If memory allocation fails, then there is a possible null pointer dereference: tmp_file [nullPointerOutOfMemory] xdg-user-dirs-0.20/src/xdg-user-dirs-update.c:822:21: note: Assuming allocation function fails xdg-user-dirs-0.20/src/xdg-user-dirs-update.c:822:21: note: Assignment 'tmp_file=malloc(strlen(user_config_file)+6+1)', assigned value is 0 xdg-user-dirs-0.20/src/xdg-user-dirs-update.c:824:11: note: Null pointer dereference xdg-user-dirs-0.20/src/xdg-user-dirs-update.c:909:35: warning:inconclusive: If memory allocation fails, then there is a possible null pointer dereference: res [nullPointerOutOfMemory] xdg-user-dirs-0.20/src/xdg-user-dirs-update.c:890:16: note: Assuming allocation function fails xdg-user-dirs-0.20/src/xdg-user-dirs-update.c:890:16: note: Assignment 'res=strdup("")', assigned value is 0 xdg-user-dirs-0.20/src/xdg-user-dirs-update.c:909:35: note: Null pointer dereference xdg-user-dirs-0.20/src/xdg-user-dirs-update.c:1010:15: warning: If memory allocation fails, then there is a possible null pointer dereference: relative_path_name [nullPointerOutOfMemory] xdg-user-dirs-0.20/src/xdg-user-dirs-update.c:1008:41: note: Assuming allocation function fails xdg-user-dirs-0.20/src/xdg-user-dirs-update.c:1008:41: note: Assignment 'relative_path_name=strdup(translated_name)', assigned value is 0 xdg-user-dirs-0.20/src/xdg-user-dirs-update.c:1010:15: note: Null pointer dereference xdg-user-dirs-0.20/src/xdg-user-dirs-update.c:246:9: error: If memory allocation fails: pointer addition with NULL pointer. [nullPointerArithmeticOutOfMemory] xdg-user-dirs-0.20/src/xdg-user-dirs-update.c:238:22: note: Assuming allocation function fails xdg-user-dirs-0.20/src/xdg-user-dirs-update.c:238:22: note: Assignment 'unescaped=malloc(strlen(escaped)+1)', assigned value is 0 xdg-user-dirs-0.20/src/xdg-user-dirs-update.c:240:7: note: Assignment 'd=unescaped', assigned value is 0 xdg-user-dirs-0.20/src/xdg-user-dirs-update.c:246:9: note: Null pointer addition xdg-user-dirs-0.20/src/xdg-user-dirs-update.c:269:9: error: If memory allocation fails: pointer addition with NULL pointer. [nullPointerArithmeticOutOfMemory] xdg-user-dirs-0.20/src/xdg-user-dirs-update.c:258:20: note: Assuming allocation function fails xdg-user-dirs-0.20/src/xdg-user-dirs-update.c:258:20: note: Assignment 'escaped=malloc(strlen(unescaped)*2+1)', assigned value is 0 xdg-user-dirs-0.20/src/xdg-user-dirs-update.c:260:7: note: Assignment 'd=escaped', assigned value is 0 xdg-user-dirs-0.20/src/xdg-user-dirs-update.c:269:9: note: Null pointer addition xdg-user-dirs-0.20/src/xdg-user-dirs-update.c:363:64: portability: Passing NULL after the last typed argument to a variadic function leads to undefined behaviour. [varFuncNullUB] xdg-user-dirs-0.20/src/xdg-user-dirs-update.c:367:52: portability: Passing NULL after the last typed argument to a variadic function leads to undefined behaviour. [varFuncNullUB] xdg-user-dirs-0.20/src/xdg-user-dirs-update.c:460:60: portability: Passing NULL after the last typed argument to a variadic function leads to undefined behaviour. [varFuncNullUB] xdg-user-dirs-0.20/src/xdg-user-dirs-update.c:970:77: portability: Passing NULL after the last typed argument to a variadic function leads to undefined behaviour. [varFuncNullUB] xdg-user-dirs-0.20/src/xdg-user-dirs-update.c:992:81: portability: Passing NULL after the last typed argument to a variadic function leads to undefined behaviour. [varFuncNullUB] xdg-user-dirs-0.20/src/xdg-user-dirs-update.c:1013:81: portability: Passing NULL after the last typed argument to a variadic function leads to undefined behaviour. [varFuncNullUB] xdg-user-dirs-0.20/src/xdg-user-dirs-update.c:1080:69: portability: Passing NULL after the last typed argument to a variadic function leads to undefined behaviour. [varFuncNullUB] xdg-user-dirs-0.20/src/xdg-user-dirs-update.c:233:23: style: Parameter 'escaped' can be declared as pointer to const [constParameterPointer] xdg-user-dirs-0.20/src/xdg-user-dirs-update.c:253:21: style: Parameter 'unescaped' can be declared as pointer to const [constParameterPointer] xdg-user-dirs-0.20/src/xdg-user-dirs-update.c:326:18: style: Variable 'pw' can be declared as pointer to const [constVariablePointer] xdg-user-dirs-0.20/src/xdg-user-dirs-update.c:431:9: style: Variable 'config_dirs' can be declared as pointer to const [constVariablePointer] xdg-user-dirs-0.20/src/xdg-user-dirs-update.c:478:44: style: Parameter 'dir' can be declared as pointer to const [constParameterPointer] xdg-user-dirs-0.20/src/xdg-user-dirs-update.c:514:20: style: Parameter 'path' can be declared as pointer to const [constParameterPointer] xdg-user-dirs-0.20/src/xdg-user-dirs-update.c:596:9: style: Variable 'key' can be declared as pointer to const [constVariablePointer] xdg-user-dirs-0.20/src/xdg-user-dirs-update.c:596:25: style: Variable 'value' can be declared as pointer to const [constVariablePointer] xdg-user-dirs-0.20/src/xdg-user-dirs-update.c:665:9: style: Variable 'key' can be declared as pointer to const [constVariablePointer] xdg-user-dirs-0.20/src/xdg-user-dirs-update.c:887:9: style: Variable 'translated' can be declared as pointer to const [constVariablePointer] xdg-user-dirs-0.20/src/xdg-user-dirs-update.c:921:37: style: Parameter 'dir' can be declared as pointer to const [constParameterPointer] xdg-user-dirs-0.20/src/xdg-user-dirs-update.c:1055:9: style: Variable 'set_dir' can be declared as pointer to const [constVariablePointer] xdg-user-dirs-0.20/src/xdg-user-dirs-update.c:1069:13: style: Variable 'data_dirs' can be declared as pointer to const [constVariablePointer] xdg-user-dirs-0.20/src/xdg-user-dirs-update.c:1148:20: style: Variable 'home' can be declared as pointer to const [constVariablePointer] diff: 2.20.0 xdg-user-dirs-0.20/src/xdg-user-dirs-update.c:826:21: warning: If memory allocation fails, then there is a possible null pointer dereference: tmp_file [nullPointerOutOfMemory] xdg-user-dirs-0.20/src/xdg-user-dirs-update.c:822:21: note: Assuming allocation function fails xdg-user-dirs-0.20/src/xdg-user-dirs-update.c:822:21: note: Assignment 'tmp_file=malloc(strlen(user_config_file)+6+1)', assigned value is 0 xdg-user-dirs-0.20/src/xdg-user-dirs-update.c:826:21: note: Null pointer dereference DONE