Hi,

In "apr-1.1.1/locks/win32/thread_cond.c:apr_thread_cond_create()": the 
"pool_cleanup_register()" call is missing (ie. 2
HANDLEs leakage if the pool is "externally" destroyed).

In "apr-1.1.1/dso/win32/dso.c:apr_dso_sym()" (_WIN32_WCE only): an inversion in 
the args of apr_conv_utf8_to_ucs2() can
lead to unspecified behaviour (following "GetProcAddressW()" is called with an 
uninitialized (stack) filename).

Bye,
Yann.

<BOP "apr-1.1.1/locks/win32/thread_cond.c">
--- thread_cond-old.c   2005-04-14 12:38:02.000000000 +0000
+++ thread_cond.c       2005-04-14 12:53:38.000000000 +0000
@@ -38,6 +38,8 @@
     (*cond)->mutex = CreateMutex(NULL, FALSE, NULL);
     (*cond)->signal_all = 0;
     (*cond)->num_waiting = 0;
+    apr_pool_cleanup_register((*cond)->pool, (*cond), thread_cond_cleanup,
+                              apr_pool_cleanup_null);
     return APR_SUCCESS;
 }
<EOP>

<BOP "apr-1.1.1/dso/win32/dso.c">
--- dso-old.c   2004-11-24 20:51:52.000000000 +0000
+++ dso.c       2005-04-14 12:33:33.000000000 +0000
@@ -140,7 +140,7 @@
     apr_wchar_t wsymname[256];
     apr_status_t rv;

-    rv = apr_conv_utf8_to_ucs2(wsymname, &wsymlen, symname, &symlen);
+    rv = apr_conv_utf8_to_ucs2(symname, &symlen, wsymname, &wsymlen);
     if (rv != APR_SUCCESS) {
         return rv;
     }
<EOP>

Reply via email to