LDB hidden memory leaks
simo
idra at samba.org
Sun Jul 4 15:57:52 MDT 2010
On Mon, 2010-07-05 at 00:38 +0300, Kamen Mazdrashki wrote:
> Hi guys,
>
> As I wrote in the below mentioned thread, there are few functions in
> LDB implementation
> that are easy to leak memory with at present.
> http://lists.samba.org/archive/samba-technical/2010-July/071967.html
>
> While this behavior is not a problem for utilities that uses LDB like
> ldbadd for example,
> it is a problem for Samba itself as it is supposed to be working 24/7.
> In case of Samba, memory allocated in ldb_context context and not
> freed quickly is
> leaked memory as it will go away with LDB connection, i.e. presumably
> never :)
>
>
> I've pushed two approaches to the problem:
> 1) Introduce new functions and declare old ones as obsolete
> http://gitweb.samba.org/?p=kamenim/samba.git;a=shortlog;h=refs/heads/ldb-mem-fix-1
>
>
> 2) Allocate memory in NULL context internally, so we will be able to
> notice, when those
> functions are used in dangerous manner
> http://gitweb.samba.org/?p=kamenim/samba.git;a=shortlog;h=refs/heads/ldb-mem-fix-2
>
>
> Both branches affect only ldb_msg_canonicalize() function. It is
> basically the same
> for ldb_msg_diff() function.
>
>
> IMO approach 1) is better one as it leaves no doubt of who the owner
> of the memory is.
> But this approach will change LDB ABI a little, which may be not
> acceptable for everyone.
> (If I recall correctly, Simo is a strong defender of LDB ABI)
Kamen, Approach number 1 is not a problem from an ABI point of view.
Adding *new* symbols is a compatible change, only changing or removing
existing symbols is an issue.
The only advice I'd give is to not use _s as that in the ldap library
world usually demotes synchronous vs asynchronous calls.
Alternatives I can see are:
ldm_msg_canonicalize_2
ldb_msg_canonicalize_ex
ldb_msg_canonicalize_p (as in parent)
> Approach 2) tries to solve the problem without ABI change but I think
> it will lead us
> (or other LDB users) to the same problem soon or later.
True.
Simo.
--
Simo Sorce
Samba Team GPL Compliance Officer <simo at samba.org>
Principal Software Engineer at Red Hat, Inc. <simo at redhat.com>
More information about the samba-technical
mailing list