You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@apr.apache.org by Yann Lavictoire <yl...@netsecureone.com> on 2005/04/14 14:54:22 UTC

[PATCH] apr-1.1.1/locks/win32/thread_cond.c and apr-1.1.1/dso/win32

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>