For the life of me i cant work out why I am getting an invalid read size of 1 for this code snippet, I'm pretty sure its got something to do with me abusing the char *url pointer...
char *extractURL(char request[])
{
char *space = malloc(sizeof(char *));
space = strchr(request, ' ')+1;
char *hostend = malloc(sizeof(char *));
hostend = strchr(request, '\r');
int length = hostend - space;
if (length > 0)
{
printf("Mallocing %d bytes for url\n.", length+1);
char *url = (char *)malloc((length+1)*sizeof(char));
url = '\0';
strncat(url, space, length);
return url;
}
//else we have hit an error so return NULL
return NULL;
}
The valgrind error I am getting is :
==4156== Invalid read of size 1
==4156== at 0x4007518: strncat (mc_replace_strmem.c:206)
==4156== by 0x8048D25: extractURL ()
==4156== by 0x8048E59: processRequest ()
==4156== by 0x8049881: main ()
==4156== Address 0x0 is not stack'd, malloc'd or (recently) free'd
Can someone 'point' me in the right direction?
malloccalls, which by the way are themselves completely bogus, why would you reservesizeofthe size of acharpointer? Your thirdmallocalso shows signs of potential confusion: (1) don't cast the return ofmalloc, this only hides bugs (2)sizeof(char)is1by definition, the number you pass tomallocis the number ofcharyou want to be allocated. - Jens Gustedt