Hi
When I check my c code with valgrind --track-origins=yes I get this error.
Code:
==4649== Conditional jump or move depends on uninitialised value(s)
==4649== at 0x4C37928: strcspn (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
==4649== by 0x4EDAB94: strtok_r (strtok_r.c:64)
==4649== by 0x108D36: readDirectory (ps.c:132)
==4649== by 0x108A9F: main (ps.c:37)
==4649== Uninitialised value was created by a stack allocation
==4649== at 0x108ACF: readDirectory (ps.c:52)
==4649==
==4649== Conditional jump or move depends on uninitialised value(s)
==4649== at 0x4EDAB9B: strtok_r (strtok_r.c:65)
==4649== by 0x108D36: readDirectory (ps.c:132)
==4649== by 0x108A9F: main (ps.c:37)
==4649== Uninitialised value was created by a stack allocation
==4649== at 0x108ACF: readDirectory (ps.c:52)
==4649==
==4649== Conditional jump or move depends on uninitialised value(s)
==4649== at 0x4C32D08: strlen (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
==4649== by 0x4E994D2: vfprintf (vfprintf.c:1643)
==4649== by 0x4EA0F25: printf (printf.c:33)
==4649== by 0x108DDF: printOutput (ps.c:148)
==4649== by 0x108D5F: readDirectory (ps.c:134)
==4649== by 0x108A9F: main (ps.c:37)
==4649== Uninitialised value was created by a stack allocation
==4649== at 0x108ACF: readDirectory (ps.c:52)
This is a snippet from my Code.
Code:
void readDirectory(char pid[]){
char path[50];
char buffer[128];
char name[128];
static char *nameOutput;
char *saveName = name;
char vmrss[128];
static char *vmrssOutput;
char *saveVmrss = vmrss;
while(fgets(buffer, sizeof(buffer), fptr)){
if(strstr(buffer, "Name:")){
strcpy(name, buffer);
nameOutput = strtok_r(name, ":", &saveName);
nameOutput = strtok_r(NULL, ":", &saveName);
for(unsigned int i = strcspn (nameOutput, "\n"); i < strlen(nameOutput); i++){
nameOutput[i] = 0;
}
} else if(strstr(buffer, "Uid:") && strstr(buffer, sUserID)){
isUse = true;
}else if(strstr(buffer, "VmRSS:")){
strncpy(vmrss, buffer, strlen(buffer) - 3);
vmrssOutput = strtok_r(vmrss, ":", &saveVmrss);
vmrssOutput = strtok_r(NULL, ":", &saveVmrss);
printOutput(isUse, pid, nameOutput, vmrssOutput);
}
I think the problem is, that i didn't initialized the variable char *saveVmrss = vmrss;
How can I solve this?