2025-07-10 21:35 ftp://ftp.de.debian.org/debian/pool/main/p/pianobar/pianobar_2024.12.21.orig.tar.bz2 cppcheck-options: --library=posix --library=gnu --library=bsd --library=libcurl --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-63-generic-x86_64-with-glibc2.39 python: 3.12.3 client-version: 1.3.67 compiler: g++ (Ubuntu 13.3.0-6ubuntu2~24.04) 13.3.0 cppcheck: head 2.17.0 head-info: 8f3d36a (2025-07-08 11:07:56 +0200) count: 78 78 elapsed-time: 0.9 0.9 head-timing-info: old-timing-info: head results: pianobar-2024.12.21/src/debug.h:56:13: debug: valueFlowConditionExpressions bailout: Skipping function due to incomplete variable stderr [valueFlowBailoutIncompleteVar] pianobar-2024.12.21/src/libpiano/crypt.c:54:3: warning: If memory allocation fails, then there is a possible null pointer dereference: output [nullPointerOutOfMemory] pianobar-2024.12.21/src/libpiano/crypt.c:48:18: note: Assuming allocation function fails pianobar-2024.12.21/src/libpiano/crypt.c:48:18: note: Assignment 'output=calloc(outputLen+1,sizeof(*output))', assigned value is 0 pianobar-2024.12.21/src/libpiano/crypt.c:54:3: note: Null pointer dereference pianobar-2024.12.21/src/libpiano/crypt.c:81:10: warning: If memory allocation fails, then there is a possible null pointer dereference: paddedInput [nullPointerOutOfMemory] pianobar-2024.12.21/src/libpiano/crypt.c:80:23: note: Assuming allocation function fails pianobar-2024.12.21/src/libpiano/crypt.c:80:23: note: Assignment 'paddedInput=calloc(paddedInputLen+1,sizeof(*paddedInput))', assigned value is 0 pianobar-2024.12.21/src/libpiano/crypt.c:81:10: note: Null pointer dereference pianobar-2024.12.21/src/libpiano/list.c:60:75: style: Parameter 'e' can be declared as pointer to const [constParameterPointer] pianobar-2024.12.21/src/libpiano/piano.c:48:32: debug: valueFlowConditionExpressions bailout: Skipping function due to incomplete variable GPG_ERR_NO_ERROR [valueFlowBailoutIncompleteVar] pianobar-2024.12.21/src/libpiano/request.c:218:25: debug: valueFlowConditionExpressions bailout: Skipping function due to incomplete variable PIANO_MUSICTYPE_INVALID [valueFlowBailoutIncompleteVar] pianobar-2024.12.21/src/libpiano/request.c:103:6: warning: %i in format string (no. 2) requires 'int' but the argument type is 'unsigned int'. [invalidPrintfArgType_sint] pianobar-2024.12.21/src/libpiano/request.c:517:3: warning: %i in format string (no. 3) requires 'int' but the argument type is 'unsigned int'. [invalidPrintfArgType_sint] pianobar-2024.12.21/src/libpiano/request.c:502:4: style: Consecutive return, break, continue, goto or throw statements are unnecessary. [duplicateBreak] pianobar-2024.12.21/src/libpiano/response.c:625:40: debug: valueFlowConditionExpressions bailout: Skipping function due to incomplete variable json_type_array [valueFlowBailoutIncompleteVar] pianobar-2024.12.21/src/libpiano/response.c:482:9: error: Memory leak: tmpGenreCategory.name [memleak] pianobar-2024.12.21/src/libpiano/response.c:626:24: style: Local variable 'i' shadows outer variable [shadowVariable] pianobar-2024.12.21/src/libpiano/response.c:620:17: note: Shadowed declaration pianobar-2024.12.21/src/libpiano/response.c:626:24: note: Shadow variable pianobar-2024.12.21/src/libpiano/response.c:120:30: style: Variable 'reqData' can be declared as pointer to const [constVariablePointer] pianobar-2024.12.21/src/libpiano/response.c:699:38: style: Variable 'reqData' can be declared as pointer to const [constVariablePointer] pianobar-2024.12.21/src/main.c:73:29: debug: valueFlowConditionExpressions bailout: Skipping function due to incomplete variable PIANO_REQUEST_LOGIN [valueFlowBailoutIncompleteVar] pianobar-2024.12.21/src/main.c:120:60: debug: valueFlowConditionExpressions bailout: Skipping function due to incomplete variable errno [valueFlowBailoutIncompleteVar] pianobar-2024.12.21/src/main.c:221:28: debug: valueFlowConditionExpressions bailout: Skipping function due to incomplete variable PIANO_REQUEST_GET_PLAYLIST [valueFlowBailoutIncompleteVar] pianobar-2024.12.21/src/main.c:269:5: debug: valueFlowConditionExpressions bailout: Skipping function due to incomplete variable PIANO_RET_OK [valueFlowBailoutIncompleteVar] pianobar-2024.12.21/src/main.c:286:51: debug: valueFlowConditionExpressions bailout: Skipping function due to incomplete variable PIANO_RET_OK [valueFlowBailoutIncompleteVar] pianobar-2024.12.21/src/main.c:441:19: debug: valueFlowConditionExpressions bailout: Skipping function due to incomplete variable SIG_IGN [valueFlowBailoutIncompleteVar] pianobar-2024.12.21/src/main.c:282:61: style: Parameter 'playerThread' can be declared as pointer to const [constParameterPointer] pianobar-2024.12.21/src/player.c:80:20: debug: valueFlowConditionExpressions bailout: Skipping function due to incomplete variable AV_LOG_FATAL [valueFlowBailoutIncompleteVar] pianobar-2024.12.21/src/player.c:217:29: debug: valueFlowConditionExpressions bailout: Skipping function due to incomplete variable discard [valueFlowBailoutIncompleteVar] pianobar-2024.12.21/src/player.c:347:22: debug: valueFlowConditionExpressions bailout: Skipping function due to incomplete variable AO_FMT_NATIVE [valueFlowBailoutIncompleteVar] pianobar-2024.12.21/src/player.c:424:15: debug: valueFlowConditionExpressions bailout: Skipping function due to incomplete variable AVERROR_EOF [valueFlowBailoutIncompleteVar] pianobar-2024.12.21/src/player.c:543:21: debug: valueFlowConditionExpressions bailout: Skipping function due to incomplete variable AVERROR_INVALIDDATA [valueFlowBailoutIncompleteVar] pianobar-2024.12.21/src/player.c:578:14: debug: valueFlowConditionExpressions bailout: Skipping function due to incomplete variable AVERROR_EOF [valueFlowBailoutIncompleteVar] pianobar-2024.12.21/src/player.c:276:28: style: Variable 'cp' can be declared as pointer to const [constVariablePointer] pianobar-2024.12.21/src/player.c:199:28: style: int result is assigned to long variable. If the variable is long to avoid loss of information, then you have loss of information. [truncLongCastAssignment] pianobar-2024.12.21/src/settings.c:162:27: debug: valueFlowConditionExpressions bailout: Skipping function due to incomplete variable PIANO_AQ_HIGH [valueFlowBailoutIncompleteVar] pianobar-2024.12.21/src/settings.c:58:29: portability: Non reentrant function 'getpwuid' called. For threadsafe applications it is recommended to use the reentrant replacement function 'getpwuid_r'. [prohibitedgetpwuidCalled] pianobar-2024.12.21/src/settings.c:78:13: warning: If memory allocation fails, then there is a possible null pointer dereference: concat [nullPointerOutOfMemory] pianobar-2024.12.21/src/settings.c:77:32: note: Assuming allocation function fails pianobar-2024.12.21/src/settings.c:77:32: note: Assignment 'concat=malloc(len*sizeof(*concat))', assigned value is 0 pianobar-2024.12.21/src/settings.c:78:13: note: Null pointer dereference pianobar-2024.12.21/src/settings.c:155:29: warning:inconclusive: If memory allocation fails, then there is a possible null pointer dereference: defaultxdg [nullPointerOutOfMemory] pianobar-2024.12.21/src/settings.c:153:35: note: Assuming allocation function fails pianobar-2024.12.21/src/settings.c:153:35: note: Assignment 'defaultxdg=malloc(strlen(userhome)+strlen("/.config")+1)', assigned value is 0 pianobar-2024.12.21/src/settings.c:155:29: note: Null pointer dereference pianobar-2024.12.21/src/settings.c:50:8: style: Variable 'home' can be declared as pointer to const [constVariablePointer] pianobar-2024.12.21/src/settings.c:58:24: style: Variable 'pw' can be declared as pointer to const [constVariablePointer] pianobar-2024.12.21/src/settings.c:71:8: style: Variable 'xdgConfigDir' can be declared as pointer to const [constVariablePointer] pianobar-2024.12.21/src/settings.c:227:17: style: Variable 'ret' can be declared as pointer to const [constVariablePointer] pianobar-2024.12.21/src/settings.c:449:9: style: Variable 'tmpProxy' can be declared as pointer to const [constVariablePointer] pianobar-2024.12.21/src/settings.c:465:40: style: Parameter 'station' can be declared as pointer to const [constParameterPointer] pianobar-2024.12.21/src/settings.c:465:64: style: Parameter 'settings' can be declared as pointer to const [constParameterPointer] pianobar-2024.12.21/src/terminal.c:49:22: debug: valueFlowConditionExpressions bailout: Skipping function due to incomplete variable ECHO [valueFlowBailoutIncompleteVar] pianobar-2024.12.21/src/terminal.c:56:27: debug: valueFlowConditionExpressions bailout: Skipping function due to incomplete variable TCSANOW [valueFlowBailoutIncompleteVar] pianobar-2024.12.21/src/ui.c:109:22: debug: valueFlowConditionExpressions bailout: Skipping function due to incomplete variable stdout [valueFlowBailoutIncompleteVar] pianobar-2024.12.21/src/ui.c:222:2: debug: valueFlowConditionExpressions bailout: Skipping function due to incomplete variable CURLOPT_URL [valueFlowBailoutIncompleteVar] pianobar-2024.12.21/src/ui.c:299:28: debug: valueFlowConditionExpressions bailout: Skipping function due to incomplete variable PIANO_RET_OK [valueFlowBailoutIncompleteVar] pianobar-2024.12.21/src/ui.c:622:29: debug: valueFlowConditionExpressions bailout: Skipping function due to incomplete variable PIANO_REQUEST_SEARCH [valueFlowBailoutIncompleteVar] pianobar-2024.12.21/src/ui.c:910:81: debug: valueFlowConditionExpressions bailout: Skipping function due to incomplete variable errno [valueFlowBailoutIncompleteVar] pianobar-2024.12.21/src/ui.c:806:22: style: Redundant condition: filter!=NULL. 'A || (!A && B)' is equivalent to 'A || B' [redundantCondition] pianobar-2024.12.21/src/ui.c:971:5: warning: %i in format string (no. 1) requires 'int' but the argument type is 'unsigned int'. [invalidPrintfArgType_sint] pianobar-2024.12.21/src/ui.c:985:4: portability: %zd in format string (no. 1) requires 'ssize_t' but the argument type is 'size_t {aka unsigned long}'. [invalidPrintfArgType_sint] pianobar-2024.12.21/src/ui.c:989:5: portability: %zd in format string (no. 1) requires 'ssize_t' but the argument type is 'size_t {aka unsigned long}'. [invalidPrintfArgType_sint] pianobar-2024.12.21/src/ui.c:446:3: warning: If memory allocation fails, then there is a possible null pointer dereference: stationArray [nullPointerOutOfMemory] pianobar-2024.12.21/src/ui.c:440:24: note: Assuming allocation function fails pianobar-2024.12.21/src/ui.c:440:24: note: Assignment 'stationArray=calloc(stationCount,sizeof(*stationArray))', assigned value is 0 pianobar-2024.12.21/src/ui.c:446:3: note: Null pointer dereference pianobar-2024.12.21/src/ui.c:450:9: warning: If memory allocation fails, then there is a possible null pointer dereference: stationArray [nullPointerOutOfMemory] pianobar-2024.12.21/src/ui.c:440:24: note: Assuming allocation function fails pianobar-2024.12.21/src/ui.c:440:24: note: Assignment 'stationArray=calloc(stationCount,sizeof(*stationArray))', assigned value is 0 pianobar-2024.12.21/src/ui.c:450:9: note: Null pointer dereference pianobar-2024.12.21/src/ui.c:945:12: warning: If resource allocation fails, then there is a possible null pointer dereference: pipeWriteFd [nullPointerOutOfResources] pianobar-2024.12.21/src/ui.c:933:24: note: Assuming allocation function fails pianobar-2024.12.21/src/ui.c:933:24: note: Assignment 'pipeWriteFd=fdopen(pipeFd[1],"w")', assigned value is 0 pianobar-2024.12.21/src/ui.c:945:12: note: Null pointer dereference pianobar-2024.12.21/src/ui.c:999:11: warning: If resource allocation fails, then there is a possible null pointer dereference: pipeWriteFd [nullPointerOutOfResources] pianobar-2024.12.21/src/ui.c:933:24: note: Assuming allocation function fails pianobar-2024.12.21/src/ui.c:933:24: note: Assignment 'pipeWriteFd=fdopen(pipeFd[1],"w")', assigned value is 0 pianobar-2024.12.21/src/ui.c:999:11: note: Null pointer dereference pianobar-2024.12.21/src/ui.c:136:34: style: Parameter 'ptr' can be declared as pointer to const. However it seems that 'httpFetchCb' is a callback function, if 'ptr' is declared with const you might also need to cast function pointer(s). [constParameterCallback] pianobar-2024.12.21/src/ui.c:225:2: note: You might need to cast the function pointer here pianobar-2024.12.21/src/ui.c:136:34: note: Parameter 'ptr' can be declared as pointer to const pianobar-2024.12.21/src/ui.c:609:17: style: Variable 'tmpArtist' can be declared as pointer to const [constVariablePointer] pianobar-2024.12.21/src/ui.c:610:15: style: Variable 'tmpSong' can be declared as pointer to const [constVariablePointer] pianobar-2024.12.21/src/ui.c:747:19: style: Parameter 'station' can be declared as pointer to const [constParameterPointer] pianobar-2024.12.21/src/ui.c:928:19: style: Variable 'songStation' can be declared as pointer to const [constVariablePointer] pianobar-2024.12.21/src/ui_act.c:79:29: debug: valueFlowConditionExpressions bailout: Skipping function due to incomplete variable PIANO_REQUEST_TRANSFORM_STATION [valueFlowBailoutIncompleteVar] pianobar-2024.12.21/src/ui_act.c:119:3: debug: valueFlowConditionExpressions bailout: Skipping function due to incomplete variable PIANO_REQUEST_ADD_SEED [valueFlowBailoutIncompleteVar] pianobar-2024.12.21/src/ui_act.c:149:19: debug: valueFlowConditionExpressions bailout: Skipping function due to incomplete variable PIANO_RATE_BAN [valueFlowBailoutIncompleteVar] pianobar-2024.12.21/src/ui_act.c:166:17: debug: valueFlowConditionExpressions bailout: Skipping function due to incomplete variable PIANO_MUSICTYPE_INVALID [valueFlowBailoutIncompleteVar] pianobar-2024.12.21/src/ui_act.c:186:17: debug: valueFlowConditionExpressions bailout: Skipping function due to incomplete variable PIANO_MUSICTYPE_INVALID [valueFlowBailoutIncompleteVar] pianobar-2024.12.21/src/ui_act.c:216:17: debug: valueFlowConditionExpressions bailout: Skipping function due to incomplete variable PIANO_MUSICTYPE_INVALID [valueFlowBailoutIncompleteVar] pianobar-2024.12.21/src/ui_act.c:248:7: debug: valueFlowConditionExpressions bailout: Skipping function due to incomplete variable PIANO_REQUEST_DELETE_STATION [valueFlowBailoutIncompleteVar] pianobar-2024.12.21/src/ui_act.c:273:6: debug: valueFlowConditionExpressions bailout: Skipping function due to incomplete variable PIANO_REQUEST_EXPLAIN [valueFlowBailoutIncompleteVar] pianobar-2024.12.21/src/ui_act.c:340:17: debug: valueFlowConditionExpressions bailout: Skipping function due to incomplete variable PIANO_MUSICTYPE_INVALID [valueFlowBailoutIncompleteVar] pianobar-2024.12.21/src/ui_act.c:416:19: debug: valueFlowConditionExpressions bailout: Skipping function due to incomplete variable PIANO_RATE_LOVE [valueFlowBailoutIncompleteVar] pianobar-2024.12.21/src/ui_act.c:476:3: debug: valueFlowConditionExpressions bailout: Skipping function due to incomplete variable PIANO_REQUEST_RENAME_STATION [valueFlowBailoutIncompleteVar] pianobar-2024.12.21/src/ui_act.c:501:6: debug: valueFlowConditionExpressions bailout: Skipping function due to incomplete variable PIANO_REQUEST_ADD_TIRED_SONG [valueFlowBailoutIncompleteVar] pianobar-2024.12.21/src/ui_act.c:641:3: debug: valueFlowConditionExpressions bailout: Skipping function due to incomplete variable PIANO_REQUEST_BOOKMARK_SONG [valueFlowBailoutIncompleteVar] pianobar-2024.12.21/src/ui_act.c:688:14: debug: valueFlowConditionExpressions bailout: Skipping function due to incomplete variable PIANO_REQUEST_GET_SETTINGS [valueFlowBailoutIncompleteVar] pianobar-2024.12.21/src/ui_act.c:784:20: debug: valueFlowConditionExpressions bailout: Skipping function due to incomplete variable PIANO_REQUEST_GET_STATION_INFO [valueFlowBailoutIncompleteVar] pianobar-2024.12.21/src/ui_act.c:511:22: style: Variable 'nextSong' can be declared as pointer to const [constVariablePointer] pianobar-2024.12.21/src/ui_readline.c:127:30: debug: valueFlowConditionExpressions bailout: Skipping function due to incomplete variable stdout [valueFlowBailoutIncompleteVar] pianobar-2024.12.21/src/ui_readline.c:35:42: style: Parameter 'ptr' can be declared as pointer to const [constParameterPointer] diff: DONE