Segfault with C sockets on Linux
Hi!
I seem to be getting a segmentation fault and cant figure it out. Also, the count returns a negative value which is quite odd... it probably crashed after just one iteration of the loop.
-Arti
Code:
#include <stdio.h>
#include <stdlib.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#define BUFF_SIZE 1024
int main(int argc, char** argv) {
struct sockaddr_in addr1, addr2, addr3;
int socket1;
char msg1[] = "GET /~1204a007/index.html HTTP/1.0\n\n";
char *inmsg1 = 0;
char i;
int j;
int count=0;
FILE* f1;
inmsg1 = (char*) malloc(sizeof(char) * BUFF_SIZE+1);
if (inmsg1 == NULL) {
printf("Low memory error\n");
return 1;
}
// inmsg1[BUFF_SIZE] = '\0';
addr1.sin_addr.s_addr = inet_addr("192.168.36.211");
addr1.sin_port = htons(80);
addr1.sin_family = AF_INET;
memset(&(addr1.sin_zero), 0, 8);
socket1 = socket(AF_INET, SOCK_STREAM, 0);
connect(socket1, (struct sockaddr*) &addr1, sizeof(struct sockaddr_in));
send(socket1, &msg1, strlen(msg1), 0);
f1 = fopen("versace.txt", "w");
while (1) {
memset(&inmsg1, 0, sizeof(char) * BUFF_SIZE);
j=recv(socket1, &inmsg1, sizeof(char) * BUFF_SIZE, 0);
if (j==0 || j==-1) break;
count++;
// for (i=0; i<j; i++) {
// fprintf(f1, "%c",&inmsg1[i]);
// }
fprintf(f1, "%s", &inmsg1);
}
printf("\n");
printf("Count: %d\n", &count);
fclose(f1);
close(socket1);
return 0;
}