diff -ruN ./0.2/Makefile ./0.3/Makefile --- ./0.2/Makefile Fri May 10 03:45:03 2002 +++ ./0.3/Makefile Fri May 10 17:41:33 2002 @@ -1,10 +1,11 @@ -OPT=-O3 -g +OPT=-O3 -g #-DDMALLOC +#LDOPT=-ldmalloc -DDMALLOC NAME=jikos_cheetah all: jikos_cheetah jikos_cheetah: connection.o main.o rmd160.o jikos_cheetah.o errors.o server.o - gcc ${OPT} connection.o main.o rmd160.o jikos_cheetah.o errors.o server.o -o ${NAME} + gcc ${OPT} ${LDOPT} connection.o main.o rmd160.o jikos_cheetah.o errors.o server.o -o ${NAME} connection.o: connection.h configuration.h errors.c rmd160.c connection.c gcc ${OPT} -c connection.c -o connection.o diff -ruN ./0.2/config.h ./0.3/config.h --- ./0.2/config.h Fri May 10 03:19:35 2002 +++ ./0.3/config.h Fri May 10 14:38:39 2002 @@ -1,2 +1,2 @@ #define TCP_PORT 8080 -#define VERSION "0.2" +#define VERSION "0.3" diff -ruN ./0.2/configuration.h ./0.3/configuration.h --- ./0.2/configuration.h Fri May 10 03:26:13 2002 +++ ./0.3/configuration.h Fri May 10 16:21:54 2002 @@ -4,3 +4,8 @@ #include "config.h" #endif +#ifdef DMALLOC +#include "dmalloc.h" +#endif + + diff -ruN ./0.2/connection.c ./0.3/connection.c --- ./0.2/connection.c Fri May 10 04:30:34 2002 +++ ./0.3/connection.c Fri May 10 17:34:21 2002 @@ -7,11 +7,9 @@ goto next_iteration; \ } while (0) -#define ABS(x) ((x)>0 ? (x):(-x)) - extern item_struct *items[MAX_SERVER_ID]; -char *get_expiry_date(char *buffer) +int get_expiry_date(char *buffer) { time_t curtime; struct tm *loctime; @@ -20,11 +18,12 @@ curtime += SESSION_TIMEOUT; loctime = localtime(&curtime); strftime(buffer,256,"%a, %d %b %Y %T %z",loctime); + return 0; } char *decode_hexa_octets(char *s1) { -/* int i,a,q; + int i,a,q; char hexa[3],*s2; fprintf(stderr,"S1: %s\n",s1); @@ -44,8 +43,7 @@ i += 3; } } - return(s2);*/ - return(s1); + return(s2); } @@ -56,8 +54,8 @@ connection_ptr new_connection; size = sizeof(connection); - new_connection = (connection_ptr) malloc(size); - memset (new_connection, 0, size); + new_connection = (connection_ptr) malloc((size_t) size); + memset (new_connection, 0, (size_t) size); connection_init (new_connection); @@ -72,6 +70,9 @@ connection->reply_filename = NULL; connection->reply_fd = NULL; connection->set_cookie = NULL; + connection->ip_addr = NULL; + connection->S = NULL; + connection->request_text_size = 0; connection->do_set_cookie = 0; @@ -86,7 +87,7 @@ if (!connection) return; if (connection->request_text) free (connection->request_text); - if (connection->reply_fd) fclose (connection->reply_fd); + if (connection->reply_fd) (void ) fclose (connection->reply_fd); if (connection->S) free (connection->S); connection_init (connection); @@ -137,6 +138,7 @@ i_name += time; snprintf(name,RMDsize-2,"%d", i_name); if (name[0] == '\0') name[0]--; + hashcode[0] = '\0'; RMD(name, &hashcode[0]); i = 0; strcpy(ret,""); @@ -208,12 +210,12 @@ BAIL_OUT; tmp_server_id = strtol(c_server_id, NULL, 10); connection->server_id = (int)tmp_server_id; - len = strlen(line); + len = (int) strlen(line); q++; while (q < len){ if(line[q] == 'S' && isdigit(line[q+1]) && line[q+2] == '=' && q= 0); if (connection->request_text) { - connection->request_text = (char *)realloc (connection->request_text, connection->request_text_size + len); + connection->request_text = (char *)realloc (connection->request_text, connection->request_text_size + len + 1); if (connection->request_text == NULL) return 1; - memcpy ((connection->request_text + connection->request_text_size), text, len); + memcpy ((connection->request_text + connection->request_text_size), text, + (size_t) len); } else { connection->request_text = (char *)malloc (len +1); if (connection->request_text == NULL) return 1; - memcpy (connection->request_text, text, len); + memcpy (connection->request_text, text, (size_t) len); } connection->request_text_size += len; diff -ruN ./0.2/connection.h ./0.3/connection.h --- ./0.2/connection.h Fri May 10 03:26:30 2002 +++ ./0.3/connection.h Fri May 10 17:10:19 2002 @@ -8,6 +8,7 @@ #include #include #include +#include #include "macros.h" #include "configuration.h" @@ -15,7 +16,8 @@ #include "rmd160.h" #define MAX_REQUEST_PROCESSING_TIME 30 -#define MAX_SERVER_ID 16386 +/*#define MAX_SERVER_ID 16386*/ +#define MAX_SERVER_ID 16 #define MAX_SERVER_ID_LENGTH 5 #define MAX_STRING_ARG_LENGTH 256 #define SESSION_TIMEOUT 30*60 diff -ruN ./0.2/jikos_cheetah.c ./0.3/jikos_cheetah.c --- ./0.2/jikos_cheetah.c Fri May 10 03:43:40 2002 +++ ./0.3/jikos_cheetah.c Fri May 10 17:31:59 2002 @@ -21,6 +21,13 @@ return FD_ISSET (socket, &readfds); } +void sig(int num){ +#ifdef DMALLOC + dmalloc_shutdown(); +#endif + exit(1); +} + jikos_cheetah_ptr jikos_cheetah_new (void) { jikos_cheetah_ptr new_jikos_cheetah; @@ -32,6 +39,8 @@ 0, FD_SETSIZE * sizeof(void *)); signal(SIGPIPE, SIG_IGN); + signal(SIGSEGV, sig); + signal(SIGINT, sig); new_jikos_cheetah->server_socket = server_new(); return new_jikos_cheetah; } diff -ruN ./0.2/logfile ./0.3/logfile --- ./0.2/logfile Thu Jan 1 01:00:00 1970 +++ ./0.3/logfile Fri May 10 16:44:31 2002 @@ -0,0 +1,8 @@ +1021041871: 49172: Dmalloc version '4.8.1' from 'http://dmalloc.com/' +1021041871: 49172: flags = 0x4f47503, logfile 'logfile' +1021041871: 49172: interval = 100, addr = 0, seen # = 0 +1021041871: 49172: starting time = 1021041844 +1021041871: 49172: free: failed OVER picket-fence magic-number check: pointer '0x8471108' from 'connection.c:391' +1021041871: 49172: Dump of proper fence-top bytes: 'i\336\312\372' +1021041871: 49172: Dump of '0x8471108'+31: '\000\336\312\372\305\305\305\305\305\305\305\305\305\305\305\305\305\305\305\305\305\305\305\305' +1021041871: 49172: ERROR: fence_read: failed OVER picket-fence magic-number check (err 27) diff -ruN ./0.2/main.c ./0.3/main.c --- ./0.2/main.c Fri May 10 04:14:40 2002 +++ ./0.3/main.c Fri May 10 17:35:18 2002 @@ -9,6 +9,11 @@ /* FIXME: instead of for(), calling malloc() for enough big data is enough */ for (i = 0; iid = 0; + items[i]->first_request = 0; + items[i]->last_request = 0; + items[i]->request_count = 0; + items[i]->first_visit_flag = 0; items[i]->identifier = (char *)strdup("\0"); items[i]->ip_addr = (char *)strdup("\0"); } diff -ruN ./0.2/rmd160.h ./0.3/rmd160.h --- ./0.2/rmd160.h Fri May 10 03:18:55 2002 +++ ./0.3/rmd160.h Fri May 10 16:21:26 2002 @@ -1,4 +1,6 @@ +#include "configuration.h" + #ifndef RMD160H /* make sure this file is read only once */ #define RMD160H @@ -9,8 +11,8 @@ /* typedef 8 and 32 bit types, resp. */ /* adapt these, if necessary, for your operating system and compiler */ -typedef int byte; -typedef long long dword; +typedef char byte; +typedef int dword; /********************************************************************/ diff -ruN ./0.2/run.sh ./0.3/run.sh --- ./0.2/run.sh Thu Jan 1 01:00:00 1970 +++ ./0.3/run.sh Fri May 10 17:41:48 2002 @@ -0,0 +1,7 @@ +#!/bin/bash +echo DMAL: $DMALLOC_OPTIONS +export EF_PROTECT_FREE=1 + +ulimit -c unlimited +./jikos_cheetah +