]> err.no Git - sope/commitdiff
fixed some potential crashers
authorhelge <helge@e4a50df8-12e2-0310-a44c-efbce7f8a7e3>
Wed, 26 Mar 2008 18:50:50 +0000 (18:50 +0000)
committerhelge <helge@e4a50df8-12e2-0310-a44c-efbce7f8a7e3>
Wed, 26 Mar 2008 18:50:50 +0000 (18:50 +0000)
git-svn-id: http://svn.opengroupware.org/SOPE/trunk@1619 e4a50df8-12e2-0310-a44c-efbce7f8a7e3

sope-appserver/mod_ngobjweb/ChangeLog
sope-appserver/mod_ngobjweb/GNUmakefile
sope-appserver/mod_ngobjweb/NGBufferedDescriptor.c
sope-appserver/mod_ngobjweb/README
sope-appserver/mod_ngobjweb/handler.c
sope-appserver/mod_ngobjweb/ngobjweb_module.c

index acac6fb97ea0d3cff1f517fec01ae828a6d18032..12ab20d68ee5abe86f9400199c18b3f81373e096 100644 (file)
@@ -1,3 +1,10 @@
+2008-03-26  Helge Hess  <helge.hess@opengroupware.org>
+
+       * handler.c: fixed a double free() crasher, as reported by Stephane
+
+       * NGBufferedDescriptor.c (NGBufferedDescriptor_read): fixed a
+         potential crasher, discovered by Stephane
+
 2007-07-19  Wolfgang Sourdeau  <WSourdeau@Inverse.CA>
 
        * GNUmakefile: include APR CFLAGS and LDFLAGS in compilation (fixes OGo
index 0d80445c696810e62bf3ee7a5d56f341c5f5302f..67e71c6ddd9d793f1cceb32db01465c9b6d70a09 100644 (file)
@@ -50,7 +50,7 @@ ifneq ($(APXS),)
 ifneq ($(shared),no)
 APXS_CFLAGS       = $(shell $(APXS) -q CFLAGS_SHLIB) $(shell $(APXS) -q CFLAGS)
 APXS_INCLUDE_DIRS = -I$(shell $(APXS) -q INCLUDEDIR)
-APXS_LIBS         = -l$(shell$ (APXS) -q LIBS_SHLIB)
+APXS_LIBS         = $(shell$ (APXS) -q LIBS_SHLIB)
 APXS_LDFLAGS      = $(shell $(APXS) -q LDFLAGS_SHLIB)
 else
 ifneq ($(APXS),)
@@ -70,7 +70,8 @@ endif
 ifneq ($(APR),)
 APR_INCLUDE_DIRS = -I$(shell $(APR) --includedir)
 APR_CFLAGS       = $(shell $(APR) --cppflags)
-APR_LDFLAGS      = $(shell $(APR) --ldflags --libs)
+APR_LDFLAGS      = $(shell $(APR) --ldflags)
+APR_LIBS         = $(shell $(APR) --libs)
 endif
 
 GNUSTEP_INSTALLATION_DIR = $(GNUSTEP_SYSTEM_ROOT)/Library/WOAdaptors/Apache
@@ -84,6 +85,7 @@ CFLAGS  = -Wall -I. -fPIC \
        $(APXS_INCLUDE_DIRS) $(APR_INCLUDE_DIRS)
 
 LDFLAGS = $(APXS_LDFLAGS) $(APR_LDFLAGS) -shared -fPIC
+LDLIBS  = $(APXS_LIBS) $(APR_LIBS)
 
 # adaptor
 
@@ -116,4 +118,4 @@ install-usr-libexec :: all
        $(INSTALL_PROGRAM) $(product) /usr/libexec/httpd/
 
 $(product) : $(OFILES)
-       $(LD) $(LDFLAGS) -o $@ $(OFILES) $(EXTRA_LDFLAGS)
+       $(LD) $(LDFLAGS) $(EXTRA_LDFLAGS) -o $@ $(OFILES) $(LDLIBS)
index 7c16dda4ff1c934987c821af553a7c0300a2633d..f09b909754654a27475bf648aff96699a09e41c3 100644 (file)
@@ -112,15 +112,16 @@ int NGBufferedDescriptor_getWriteBufferSize(NGBufferedDescriptor *self) {
 }
 
 int NGBufferedDescriptor_read(NGBufferedDescriptor *self,
-                                   void *_buf, int _len) {
-  register int availBytes = numberOfAvailableReadBufferBytes(self);
-
+                             void *_buf, int _len)
+{
+  register int availBytes;
+  
   if (self == NULL) return 0;
   
-  if (self->readBufferSize == 0) // no read buffering is done (buffersize==0)
+  if (self->readBufferSize == 0) // no read buffering is done (buffersize==0)
     return read(self->fd, _buf, _len);
-  }
-    
+  
+  availBytes = numberOfAvailableReadBufferBytes(self);
   if (availBytes >= _len) {
     // there are enough bytes in the buffer to fulfill the request
     if (_len == 1) {
@@ -129,7 +130,7 @@ int NGBufferedDescriptor_read(NGBufferedDescriptor *self,
     }
     else {
       memcpy(_buf, self->readBufferPos, _len);
-      self->readBufferPos += _len;          // update read position (consumed-size)
+      self->readBufferPos += _len;  // update read position (consumed-size)
     }
     checkReadBufferFillState(self); // check whether all bytes where consumed
     return _len;
index c84d3d30a60de7cee63a20779b9ca0f3a3d58055..6da129c7d254570481cbef4b7c84446692d2a238 100644 (file)
@@ -47,6 +47,15 @@ Then run:
 
 Finally create a proper OGo.conf in /etc/apache/conf.d.
 
+
+Apache2 on MacOSX 10.5
+======================
+
+So you need to add the APR include dir to the make call, eg:
+
+  make apxs=/usr/sbin/apxs apr=/usr/bin/apr-1-config \
+    EXTRA_LDFLAGS="-bundle -undefined error -dynamic"
+
 Apache2 on SuSE 9.0
 ===================
 
index 418d6fe7436679a46c9122d7456caa8b9a2bbdb4..0bef55b0a70f6cbe5c8e8bf33028242dd4d02475 100644 (file)
@@ -717,15 +717,12 @@ int ngobjweb_handler(request_rec *r) {
 
       // read whole response
       if (!NGBufferedDescriptor_safeRead(toApp, buffer, contentLength)) {
-        if (toApp) NGBufferedDescriptor_free(toApp);
+        if (toApp != NULL) { NGBufferedDescriptor_free(toApp); toApp = NULL; }
       }
 
       // close connection to app
-      if (toApp) {
-        NGBufferedDescriptor_free(toApp);
-        toApp = NULL;
-      }
-
+      if (toApp != NULL) { NGBufferedDescriptor_free(toApp); toApp = NULL; }
+      
       ap_log_error(__FILE__, __LINE__, APLOG_INFO, 0, r->server,
                    "send response (size=%i)",
                    contentLength);
index 96b62b699e432d6f0cab777f0bebdab4b6de144b..847bead15942be82898420f5b0afe81493759f5e 100644 (file)
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2000-2005 SKYRIX Software AG
+  Copyright (C) 2000-2008 SKYRIX Software AG
 
   This file is part of SOPE.