The branch, master has been updated via c905379 tdb: Improve the documentation of tdb_reopen() and tdb_close(). via 7f08365 tdb: Fix possible crash bugs in the python tdb code. via d07a964 misc: Add a config for clang complete. from 34ac9d8 s4-selftest: make sure to test rpc.samr.passwords.validate over ncacn_ip_tcp.
http://gitweb.samba.org/?p=samba.git;a=shortlog;h=master - Log ----------------------------------------------------------------- commit c9053796b389758e8bacff4cd37d633fd65171f9 Author: Andreas Schneider <a...@samba.org> Date: Tue Dec 11 17:11:58 2012 +0100 tdb: Improve the documentation of tdb_reopen() and tdb_close(). Reviewed-by: Simo Sorce <i...@samba.org> Autobuild-User(master): Andreas Schneider <a...@cryptomilk.org> Autobuild-Date(master): Wed Dec 12 14:58:50 CET 2012 on sn-devel-104 commit 7f08365a28770fdcc1bb625d8a16d11d8f15c29a Author: Andreas Schneider <a...@samba.org> Date: Tue Dec 11 16:51:01 2012 +0100 tdb: Fix possible crash bugs in the python tdb code. You can't call tdb_error() for tdb_reopen() or tdb_close(), both return the error code of close(2) and not a TDB_ERROR! Reviewed-by: Simo Sorce <i...@samba.org> Reviewed-by: Jelmer Vernooij <jel...@samba.org> commit d07a964fe25caaf796449fda9beda600990be650 Author: Andreas Schneider <a...@samba.org> Date: Thu Dec 6 15:06:57 2012 +0100 misc: Add a config for clang complete. See https://github.com/Rip-Rip/clang_complete ----------------------------------------------------------------------- Summary of changes: .clang_complete | 99 +++++++++++++++++++++++++++++++++++++++++++++++++ lib/tdb/include/tdb.h | 10 ++++- lib/tdb/pytdb.c | 17 +++++++- 3 files changed, 122 insertions(+), 4 deletions(-) create mode 100644 .clang_complete Changeset truncated at 500 lines: diff --git a/.clang_complete b/.clang_complete new file mode 100644 index 0000000..cd3a44b --- /dev/null +++ b/.clang_complete @@ -0,0 +1,99 @@ +-DHAVE_CONFIG_H=1 +-D_GNU_SOURCE=1 +-D_XOPEN_SOURCE_EXTENDED=1 +-Ibin/default/auth -Iauth +-Ibin/default/auth/credentials -Iauth/credentials +-Ibin/default/auth/gensec -Iauth/gensec +-Ibin/default/auth/kerberos -I/auth/kerberos +-Ibin/default/auth/ntlmssp -Iauth/ntlmssp +-Ibin/default/bin/default/source4/heimdal/lib/asn1 +-Ibin/default/dfs_server -Idfs_server +-Ibin/default/dynconfig -Idynconfig +-Ibin/default/include -Iinclude +-Ibin/default/include/public +-Ibin/default/lib +-Ibin/default/lib/addns -Ilib/addns +-Ibin/default/lib/async_req -Ilib/async_req +-Ibin/default/lib/ccan -Ilib/ccan +-Ibin/default/lib/compression -Ilib/compression +-Ibin/default/lib/crypto -Ilib/crypto +-Ibin/default/lib/dbwrap -Ilib/dbwrap +-Ibin/default/lib/krb5_wrap -Ilib/krb5_wrap +-Ibin/default/lib/ldb -Ilib/ldb +-Ibin/default/lib/ldb-samba -Ilib/ldb-samba +-Ibin/default/lib/ldb/include -Ilib/ldb/include +-Ibin/default/lib/nss_wrapper -Ilib/nss_wrapper +-Ibin/default/lib/param -Ilib/param +-Ibin/default/lib/replace -Ilib/replace +-Ibin/default/lib/smbconf -Ilib/smbconf +-Ibin/default/lib/socket -Ilib/socket +-Ibin/default/lib/socket_wrapper -Ilib/socket_wrapper +-Ibin/default/lib/talloc -Ilib/talloc +-Ibin/default/lib/tdb -Ilib/tdb +-Ibin/default/lib/tdb/include -Ilib/tdb/include +-Ibin/default/lib/tdb_compat -Ilib/tdb_compat +-Ibin/default/lib/tevent -Ilib/tevent +-Ibin/default/lib/tsocket -Ilib/tsocket +-Ibin/default/lib/uid_wrapper -Ilib/uid_wrapper +-Ibin/default/lib/util/charset -Ilib/util/charset +-Ibin/default/libcli/auth -Ilibcli/auth +-Ibin/default/libcli/cldap -Ilibcli/cldap +-Ibin/default/libcli/dns -Ilibcli/dns +-Ibin/default/libcli/drsuapi -Ilibcli/drsuapi +-Ibin/default/libcli/ldap -Ilibcli/ldap +-Ibin/default/libcli/lsarpc -Ilibcli/lsarpc +-Ibin/default/libcli/named_pipe_auth -Ilibcli/named_pipe_auth +-Ibin/default/libcli/nbt -Ilibcli/nbt +-Ibin/default/libcli/netlogon -Ilibcli/netlogon +-Ibin/default/libcli/registry -Ilibcli/registry +-Ibin/default/libcli/security -Ilibcli/security +-Ibin/default/libcli/smb -Ilibcli/smb +-Ibin/default/libcli/util -Ilibcli/util +-Ibin/default/libds/common -Ilibds/common +-Ibin/default/librpc -Ilibrpc +-Ibin/default/nsswitch -Insswitch +-Ibin/default/nsswitch/libwbclient -Insswitch/libwbclient +-Ibin/default/source3 -Isource3 +-Ibin/default/source3/auth -Isource3/auth +-Ibin/default/source3/include -Isource3/include +-Ibin/default/source3/lib -Isource3/lib +-Ibin/default/source3/lib/asys -Isource3/lib/asys +-Ibin/default/source3/lib/pthreadpool -Isource3/lib/pthreadpool +-Ibin/default/source3/librpc -Isource3/librpc +-Ibin/default/source3/modules -Isource3/modules +-Ibin/default/source3/passdb -Isource3/passdb +-Ibin/default/source3/rpc_server -Isource3/rpc_server +-Ibin/default/source4 -Isource4 +-Ibin/default/source4/auth -Isource4/auth +-Ibin/default/source4/auth/gensec -Isource4/auth/gensec +-Ibin/default/source4/auth/kerberos -Isource4/auth/kerberos +-Ibin/default/source4/dsdb -Isource4/dsdb +-Ibin/default/source4/heimdal/base -Isource4/heimdal/base +-Ibin/default/source4/heimdal/include -Isource4/heimdal/include +-Ibin/default/source4/heimdal/lib -Isource4/heimdal/lib +-Ibin/default/source4/heimdal/lib/asn1 +-Ibin/default/source4/heimdal/lib/asn1 -Isource4/heimdal/lib/asn1 +-Ibin/default/source4/heimdal/lib/com_err -Isource4/heimdal/lib/com_err +-Ibin/default/source4/heimdal/lib/gssapi -Isource4/heimdal/lib/gssapi +-Ibin/default/source4/heimdal/lib/gssapi/gssapi -Isource4/heimdal/lib/gssapi/gssapi +-Ibin/default/source4/heimdal/lib/gssapi/krb5 -Isource4/heimdal/lib/gssapi/krb5 +-Ibin/default/source4/heimdal/lib/gssapi/mech -Isource4/heimdal/lib/gssapi/mech +-Ibin/default/source4/heimdal/lib/gssapi/spnego -Isource4/heimdal/lib/gssapi/spnego +-Ibin/default/source4/heimdal/lib/hcrypto -Isource4/heimdal/lib/hcrypto +-Ibin/default/source4/heimdal/lib/hcrypto/libtommath -Isource4/heimdal/lib/hcrypto/libtommath +-Ibin/default/source4/heimdal/lib/hx509 -Isource4/heimdal/lib/hx509 +-Ibin/default/source4/heimdal/lib/krb5 -Isource4/heimdal/lib/krb5 +-Ibin/default/source4/heimdal/lib/roken -Isource4/heimdal/lib/roken +-Ibin/default/source4/heimdal/lib/wind -Isource4/heimdal/lib/wind +-Ibin/default/source4/heimdal_build -Isource4/heimdal_build +-Ibin/default/source4/include -Isource4/include +-Ibin/default/source4/lib -Isource4/lib +-Ibin/default/source4/lib/events -Isource4/lib/events +-Ibin/default/source4/lib/socket -Isource4/lib/socket +-Ibin/default/source4/lib/stream -Isource4/lib/stream +-Ibin/default/source4/lib/tls -Isource4/lib/tls +-Ibin/default/source4/libcli -Isource4/libcli +-Ibin/default/source4/libcli/ldap -Isource4/libcli/ldap +-Ibin/default/source4/param -Isource4/param +-Ibin/default/source4/winbind -Isource4/winbind +-Iinclude/public diff --git a/lib/tdb/include/tdb.h b/lib/tdb/include/tdb.h index d19439e..e371e33 100644 --- a/lib/tdb/include/tdb.h +++ b/lib/tdb/include/tdb.h @@ -212,9 +212,12 @@ void tdb_set_max_dead(struct tdb_context *tdb, int max_dead); * This can be used after a fork to ensure that we have an independent seek * pointer from our parent and to re-establish locks. * - * @param[in] tdb The database to reopen. + * @param[in] tdb The database to reopen. It will be free'd on error! * * @return 0 on success, -1 on error. + * + * @note Don't call tdb_error() after this function cause the tdb context will + * be freed on error. */ int tdb_reopen(struct tdb_context *tdb); @@ -361,9 +364,12 @@ int tdb_append(struct tdb_context *tdb, TDB_DATA key, TDB_DATA new_dbuf); /** * @brief Close a database. * - * @param[in] tdb The database to close. + * @param[in] tdb The database to close. The context will be free'd. * * @return 0 for success, -1 on error. + * + * @note Don't call tdb_error() after this function cause the tdb context will + * be freed on error. */ int tdb_close(struct tdb_context *tdb); diff --git a/lib/tdb/pytdb.c b/lib/tdb/pytdb.c index ae0e6f8..cf77a25 100644 --- a/lib/tdb/pytdb.c +++ b/lib/tdb/pytdb.c @@ -164,7 +164,14 @@ static PyObject *obj_reopen(PyTdbObject *self) int ret; PyErr_TDB_RAISE_IF_CLOSED(self); ret = tdb_reopen(self->ctx); - PyErr_TDB_ERROR_IS_ERR_RAISE(ret, self->ctx); + if (ret != 0) { + self->closed = true; + PyErr_SetObject(PyExc_RuntimeError, + Py_BuildValue("(i,s)", + TDB_ERR_IO, + "Failed to reopen database")); + return NULL; + } Py_RETURN_NONE; } @@ -209,7 +216,13 @@ static PyObject *obj_close(PyTdbObject *self) Py_RETURN_NONE; ret = tdb_close(self->ctx); self->closed = true; - PyErr_TDB_ERROR_IS_ERR_RAISE(ret, self->ctx); + if (ret != 0) { + PyErr_SetObject(PyExc_RuntimeError, + Py_BuildValue("(i,s)", + TDB_ERR_IO, + "Failed to close database")); + return NULL; + } Py_RETURN_NONE; } -- Samba Shared Repository