From: Vlad S. <ser...@us...> - 2005-03-08 20:16:07
|
Update of /cvsroot/naviserver/naviserver/nslog In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv14961/nslog Modified Files: nslog.c Log Message: as Stephan pointed there is possibility for server to crash under some conditions accessing already freed extheaders pointer. So i put lock before putting extheaders values in the log, in most cases extheaders are empty so there is no overhead. Index: nslog.c =================================================================== RCS file: /cvsroot/naviserver/naviserver/nslog/nslog.c,v retrieving revision 1.4 retrieving revision 1.5 diff -C2 -d -r1.4 -r1.5 *** nslog.c 7 Mar 2005 08:34:05 -0000 1.4 --- nslog.c 8 Mar 2005 20:15:55 -0000 1.5 *************** *** 380,383 **** --- 380,385 ---- } + status = NS_OK; + Ns_MutexLock(&logPtr->lock); /* Append the extended headers(if any). */ for (h = logPtr->extheaders; *h; h++) { *************** *** 389,395 **** /* Append the trailing newline and buffer and/or flush the line. */ - status = NS_OK; Ns_DStringAppend(&ds,"\n"); - Ns_MutexLock(&logPtr->lock); if (logPtr->maxlines <= 0) { status = LogFlush(logPtr,&ds); --- 391,395 ---- *************** *** 480,485 **** } Ns_MutexLock(&logPtr->lock); - /* Wait for others to finish logging extheaders */ - sleep(1); logPtr->extheaders = h1; Ns_MutexUnlock(&logPtr->lock); --- 480,483 ---- |