Hi,
l'm getting an error when running the code below.
the error seem to be in the Bold line ("while..").
Code:
userIPF = (char *)malloc(NAME_MAX_LENGTH * sizeof(char));
if (userIPF == NULL)
{
fprintf(stderr, "Error: Memory allocation error\n");
if (crypt_func != NULL)
free(crypt_func);
if (crypt_func_str != NULL)
free(crypt_func_str);
fclose(ipf);
return -1;
}
passwordIPF = (char *)malloc(PASSWORD_MAX_LENGTH * sizeof(char));
if (passwordIPF == NULL)
{
fprintf(stderr, "Error: Memory allocation error\n");
if (crypt_func != NULL)
free(crypt_func);
if (crypt_func_str != NULL)
free(crypt_func_str);
if (userIPF != NULL)
free(userIPF);
fclose(ipf);
return -1;
}
while (fscanf(ipf,"%s\t%s", userIPF, passwordIPF) == 2)
{
if ((strcmp(userIPF,user)==0) && (strcmp(passwordIPF, crypt_func_str)==0))
{
found = 1;
break;
}
if (userIPF != NULL)
free(userIPF);
if (passwordIPF != NULL)
free(passwordIPF);
userIPF = (char *)malloc(NAME_MAX_LENGTH * sizeof(char));
if (userIPF == NULL)
{
fprintf(stderr, "Error: Memory allocation error\n");
if (crypt_func != NULL)
free(crypt_func);
if (crypt_func_str != NULL)
free(crypt_func_str);
fclose(ipf);
return -1;
}
passwordIPF = (char *)malloc(PASSWORD_MAX_LENGTH * sizeof(char));
if (passwordIPF == NULL)
{
fprintf(stderr, "Error: Memory allocation error\n");
if (crypt_func != NULL)
free(crypt_func);
if (crypt_func_str != NULL)
free(crypt_func_str);
if (userIPF != NULL)
free(userIPF);
fclose(ipf);
return -1;
}
}
this is what Valgrind is giving me:
Code:
==28689== Invalid write of size 1
==28689== at 0x510831F: _IO_vfscanf (in /lib/libc-2.9.so)
==28689== by 0x51163E7: fscanf (in /lib/libc-2.9.so)
==28689== by 0x40110B: main (authenticate.c:117)
==28689== Address 0x5423464 is 0 bytes after a block of size 20 alloc'd
==28689== at 0x4C278AE: malloc (vg_replace_malloc.c:207)
==28689== by 0x400DCA: main (authenticate.c:81)
==28689==
==28689== Invalid write of size 1
==28689== at 0x510BB91: _IO_vfscanf (in /lib/libc-2.9.so)
==28689== by 0x51163E7: fscanf (in /lib/libc-2.9.so)
==28689== by 0x40110B: main (authenticate.c:117)
==28689== Address 0x5423470 is 12 bytes after a block of size 20 alloc'd
==28689== at 0x4C278AE: malloc (vg_replace_malloc.c:207)
==28689== by 0x400DCA: main (authenticate.c:81)
==28689==
==28689== Invalid read of size 1
==28689== at 0x4C2832A: strcmp (mc_replace_strmem.c:337)
==28689== by 0x400F98: main (authenticate.c:120)
==28689== Address 0x5423464 is 0 bytes after a block of size 20 alloc'd
==28689== at 0x4C278AE: malloc (vg_replace_malloc.c:207)
==28689== by 0x400DCA: main (authenticate.c:81)
i don't understand why there's an error. Can someone please help me?
thank you.
(and sorry for my english)