[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

RE: found and fixed allocation problem in SRL_ldap.c



All,

Thanks, Ken.
This is indeed a bug in CML v2.1.

The v2.1.1 patch containing the fix for this bug should be available
from the web site by tomorrow.

- Rich
---------------------------
Richard E. Nicholas
Principal Secure Systems Engineer
Getronics Government Solutions, LLC
Richard.Nicholas@xxxxxxxxxxxxxxxx
(301) 939-2722

> -----Original Message-----
> From: Ken Stillson [mailto:stillson@xxxxxxxxxxxx] 
> Sent: Wednesday, October 09, 2002 5:18 PM
> To: IMC-CML mailing list
> Subject: found and fixed allocation problem in SRL_ldap.c
> 
> 
> 
> 
>   Hi folks,
> 
>   Just thought I'd pass on what I'm pretty sure is bug-fix 
> for CML 2.1.
> 
>   There's a problem in SRL_ldap.c, that if a URL is passed 
> that does not
>   have a filter, the pointer within the internal structure is 
> directed to a
>   "const static" char string, which causes a fatal memory 
> error when that
>   structure is deallocated.  The solution is just to strdup a 
> copy of the
>   static string so it can be correctly deallocated later.
> 
>   Standard form patch file follows.
>   Best regards,
> 
>     - Ken Stillson
> 
> --
>       |   Ken Stillson             |    stillson@xxxxxxxxxxxx    |
>       |   Sr. Principal Engineer   |    voice: (703) 610-2965    |
>       |   Mitretek Systems         |      fax: (703) 610-2399    |
> 
> 
> --- SRL_ldap.c.orig	2002-07-15 12:45:18.000000000 -0400
> +++ SRL_ldap.c	2002-10-08 16:58:30.000000000 -0400
> @@ -2642,7 +2642,7 @@
> 
>  	// Load in the standard defaults per RFC2255
>  	pDesc->scope = LDAP_SCOPE_BASE;
> -	pDesc->filter = (uchar *)"(objectClass=*)";
> +	//__mts; cannot use const alloc; will cause free error 
> later; see 
> +strdup solution below.  pDesc->filter = (uchar *)"(objectClass=*)";
> 
>  	// Get the DN
>  	dn = strchr(purl, '/');
> @@ -2706,6 +2706,9 @@
>                       SRLi_hex_unescape((char *)pDesc->filter);
>  				 }
>  			} // Endif filter
> +			else { //__mts: if not specific filter 
> found, use default
> +				pDesc->filter = (uchar 
> *)strdup("(objectClass=*)");
> +			}
> 
>  			// Load in the Scope level based on the ascii
>  			if (SRLi_memicmp( scope, "one", 
> strlen("one") ) == 0)
> 
>