diff options
Diffstat (limited to 'util.c')
| -rw-r--r-- | util.c | 12 | 
1 files changed, 9 insertions, 3 deletions
| @@ -70,14 +70,18 @@ int request(char *host, char *request, char *savecookie, char **body) {  		buf = realloc(buf, sizeof(char *) * (l+BUFSIZ));  	/* strstr to find end of header */ -	if((headpos = strstr(buf, "\r\n\r\n")) == NULL) +	if((headpos = strstr(buf, "\r\n\r\n")) == NULL) { +		free(buf);  		return 0; +	}  	headpos += 4;  	headsize = headpos - buf;  	/* memcopy from there into a large enough buf */ -	if((*body = malloc(sizeof(char *) * (l - headsize))) == NULL) +	if((*body = malloc(sizeof(char *) * (l - headsize))) == NULL) { +		free(buf);  		return 0; +	}  	memcpy(*body, headpos, sizeof(char *) * (l - headsize));  	/* parse header as needed */ @@ -91,6 +95,8 @@ int request(char *host, char *request, char *savecookie, char **body) {  		if(sscanf(headline, "HTTP/%d.%d %d", &i, &i, &p) == 3 && p != 200) {  			if(p == 403)  				fprintf(stderr, "403 forbidden: your IP address may be temporarily blocked\n"); +			free(buf); +			free(*body);  			return 0;  		} @@ -169,7 +175,7 @@ int renameifjpg(char *path) {  			fclose(f);  			return 1;  		} -		strncpy(newpath, path, strlen(path)); +		strncpy(newpath, path, strlen(path)+1);  		c = strrchr(newpath, '.');  		strncpy(c+1, "jpg\0", 4); | 
