diff -urN thttpd-2.21-10/libhttpd.c thttpd-2.21-11/libhttpd.c --- thttpd-2.21-10/libhttpd.c Fri Nov 23 12:46:30 2001 +++ thttpd-2.21-11/libhttpd.c Fri Nov 30 12:30:15 2001 @@ -86,51 +86,6 @@ int numreq=0; #endif -/* - Global variables - static stuff doesn't really work as planned, so they all are here - */ -char* tempfilename; -int maxtempfilename = 0; -char* header; -int maxheader = 0; -char* authpath; -int maxauthpath = 0; -char* prevauthpath; -int maxprevauthpath = 0; -char* prevuser; -int maxprevuser = 0; -char* prevcryp; -int maxprevcryp = 0; -char* location; -char* header; -int maxlocation = 0; -char* temp; -int maxtemp = 0; -char* checked; -char* rest; -int maxchecked = 0, maxrest = 0; -int maxnames = 0; -char* names; -char** nameptrs; -char* name; -int maxname = 0; -char* rname; -int maxrname = 0; -char* encrname; -int maxencrname = 0; -char* buf; -int maxbuf = 0; -char* indexname; -int maxindexname = 0; - -#ifdef AUTH_FILE -char* dirname; -int maxdirname = 0; -#endif -char* refhost = (char*) 0; -int refhost_size = 0; - #ifdef ADVCOUNTER #include @@ -859,6 +814,9 @@ #ifdef REFERER_REDIR int referer_redirect(httpd_conn *hc) { + static char* header; + static int maxheader = 0; + static char rfr[128]; char *cp,*cp2; static char headstr[] = "Location: "; @@ -993,6 +951,8 @@ static void send_authenticate( httpd_conn* hc, char* realm ) { + static char* header; + static int maxheader = 0; static char headstr[] = "WWW-Authenticate: Basic realm=\""; httpd_realloc_str( @@ -1115,6 +1075,8 @@ static int auth_check2( httpd_conn* hc, char* dirname ) { + static char* authpath; + static int maxauthpath = 0; struct stat sb; char authinfo[500]; char* authpass; @@ -1122,7 +1084,14 @@ FILE* fp; char line[500]; char* cryp; + static char* prevauthpath; + static int maxprevauthpath = 0; static time_t prevmtime; + static char* prevuser; + static int maxprevuser = 0; + static char* prevcryp; + static int maxprevcryp = 0; + /* Construct auth filename. */ httpd_realloc_str( &authpath, &maxauthpath, strlen( dirname ) + 1 + sizeof(AUTH_FILE) ); @@ -1251,6 +1220,9 @@ static void send_dirredirect( httpd_conn* hc ) { + static char* location; + static char* header; + static int maxlocation = 0, maxheader = 0; static char headstr[] = "Location: "; httpd_realloc_str( &location, &maxlocation, strlen( hc->encodedurl ) + 1 ); @@ -1342,6 +1314,8 @@ static int tilde_map_1( httpd_conn* hc ) { + static char* temp; + static int maxtemp = 0; int len; static char* prefix = TILDE_MAP_1; @@ -1363,10 +1337,8 @@ static int tilde_map_2( httpd_conn* hc ) { -#ifndef VHOST_MYSQL static char* temp; static int maxtemp = 0; -#endif static char* postfix = TILDE_MAP_2; char* cp; struct passwd* pw; @@ -1424,6 +1396,8 @@ { httpd_sockaddr sa; int sz; + static char* tempfilename; + static int maxtempfilename = 0; char* cp1; int len; #ifdef VHOST_DIRLEVELS @@ -1580,7 +1554,10 @@ static char* expand_symlinks( char* path, char** restP, int no_symlink, int tildemapped ) { + static char* checked; + static char* rest; char link[5000]; + static int maxchecked = 0, maxrest = 0; int checkedlen, restlen, linklen, prevcheckedlen, prevrestlen, nlinks, i; char* r; char* cp1; @@ -2717,7 +2694,16 @@ DIR* dirp; struct dirent* de; int namlen; + static int maxnames = 0; int nnames; + static char* names; + static char** nameptrs; + static char* name; + static int maxname = 0; + static char* rname; + static int maxrname = 0; + static char* encrname; + static int maxencrname = 0; FILE* fp; int i, r; struct stat sb; @@ -2976,6 +2962,9 @@ { char* cp; int size; + static char *buf; + static int maxbuf = 0; + size = strlen( fmt ) + strlen( arg ); if ( size > maxbuf ) httpd_realloc_str( &buf, &maxbuf, size ); @@ -3538,6 +3527,8 @@ static int really_start_request( httpd_conn* hc, struct timeval* nowP ) { + static char* indexname; + static int maxindexname = 0; static const char* index_names[] = { INDEX_NAMES }; int i; #ifdef VHOST_MYSQL @@ -3546,6 +3537,10 @@ int expnlen, indxlen; char* cp; char* pi; +#ifdef AUTH_FILE + static char* dirname; + static int maxdirname = 0; +#endif /* AUTH_FILE */ expnlen = strlen( hc->expnfilename ); @@ -4016,6 +4011,8 @@ char* cp1; char* cp2; char* cp3; + static char* refhost = (char*) 0; + static int refhost_size = 0; char *lp; hs = hc->hs;