--- minilogd.c.orig 2009-03-15 20:49:00.000000000 -0300 +++ minilogd.c 2009-03-15 23:46:09.000000000 -0300 @@ -110,7 +110,9 @@ cleanup(-1); } if ( (x>0) && pfds.revents & (POLLIN | POLLPRI)) { - message = calloc(BUF_LINE_SIZE,sizeof(char)); + if (message == NULL) { + message = calloc(BUF_LINE_SIZE,sizeof(char)); + } recvsock = accept(sock,(struct sockaddr *) &addr, &addrlen); alarm(2); signal(SIGALRM, alarm_handler); @@ -126,6 +128,7 @@ buffer = malloc(sizeof(char *)); message[strlen(message)]='\n'; buffer[buflines]=message; + message = NULL; buflines++; } } @@ -148,6 +151,9 @@ printf("st_mtime: %d %d\n", s1.st_mtime, s2.st_mtime);*/ } } + if (message != NULL) { + free(message); + } cleanup(0); }