[SCM] Samba Shared Repository - branch master updated

Jelmer Vernooij jelmer at samba.org
Tue Apr 20 05:49:39 MDT 2010


Hi Tridge,

On Tue, 2010-04-20 at 01:11 -0500, Andrew Tridgell wrote:
> The branch, master has been updated
>        via  f1c5239... pytalloc: ensure talloc_ctx is directly after PyObject_HEAD
>        via  45be1c7... talloc: there is no ambiguity when freeing a ptr with a null parent
>        via  773a8af... tdb: update tdb ABI to use hide_symbols=True
>        via  cdaac0a... build: include uninitialised data in the ABI symbols
>        via  0e56037... build: quote cross-answer strings
>        via  f2bd78c... build: allow "waf --abi-check" to force a re-check of the ABI
>       from  538a07a... s4:provisionbackend Print the command we failed to start slapd with
> 
> http://gitweb.samba.org/?p=samba.git;a=shortlog;h=master
> 
> 
> - Log -----------------------------------------------------------------
> commit f1c523939b88aee0b1ce7375d68b06a0b8cf5d28
> Author: Andrew Tridgell <tridge at samba.org>
> Date:   Tue Apr 20 15:33:00 2010 +1000
> 
>     pytalloc: ensure talloc_ctx is directly after PyObject_HEAD
>     
>     the talloc python interface for tp_alloc and tp_dealloc relies on a
>     cast to a py_talloc_Object to find the talloc_ctx (see
>     py_talloc_dealloc). This means we rely on the talloc_ctx for the
>     object being directly after the PyObject_HEAD
>     
>     This fixes the talloc free with references bug in samba_dnsupdate
>     
>     The actual problem was the tp_alloc() call in
>     PyCredentialCacheContainer_from_ccache_container() which used a cast
>     from a py_talloc_Object to a PyCredentialCacheContainerObject. That
>     case effectively changed the parent/child relationship between the
>     talloc_ctx and the ccc ptr.
>     
>     This patch changes all the structures that follow this pattern to put
>     the TALLOC_CTX directly after the PyObject_HEAD, to ensure that if
>     anyone else decides to do a dangerous cast like this that it won't
>     cause the same sort of subtle breakage.
>     
>     Pair-Programmed-With: Rusty Russell <rusty at samba.org>
Thanks! This makes the bug less visible, but I think we should also make
make the code fail in this situation and fix
PyCredentialCacheContainerObject. Things like py_talloc_dealloc should
ensure that they are only used with objects that were created using
those functions, perhaps using a magic value?

Cheers,

Jelmer


More information about the samba-technical mailing list