--- corkscrew.c.orig 2001-08-23 20:27:32.000000000 +0200 +++ corkscrew.c 2010-08-21 10:26:23.000000000 +0200 @@ -201,9 +201,8 @@ fprintf(stderr, "Error opening %s: %s\n", argv[5], strerror(errno)); exit(-1); } else { - char line[4096]; - fscanf(fp, "%s", line); - up = malloc(sizeof(line)); + char line[1024]; + fscanf(fp, "%1023s", line); up = line; fclose(fp); } @@ -249,11 +248,12 @@ /* there's probably a better way to do this */ if (setup == 0) { if (FD_ISSET(csock, &rfd)) { - len = read(csock, buffer, sizeof(buffer)); + len = read(csock, buffer, sizeof(buffer) -1); if (len<=0) break; else { - sscanf(buffer,"%s%d%[^\n]",version,&code,descr); + buffer[len] = '\0'; + sscanf(buffer,"%256s%3d%[^\n]",version,&code,descr); if ((strncmp(version,"HTTP/",5) == 0) && (code >= 200) && (code < 300)) setup = 1; else {