Hello community,

here is the log from the commit of package ldb for openSUSE:Factory checked in 
at 2015-12-18 21:51:11
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/ldb (Old)
 and      /work/SRC/openSUSE:Factory/.ldb.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "ldb"

Changes:
--------
--- /work/SRC/openSUSE:Factory/ldb/ldb.changes  2015-11-24 22:21:13.000000000 
+0100
+++ /work/SRC/openSUSE:Factory/.ldb.new/ldb.changes     2015-12-18 
21:51:13.000000000 +0100
@@ -1,0 +2,11 @@
+Thu Dec 10 16:10:32 UTC 2015 - [email protected]
+
+- Update to 1.1.24.
+  + fix LDAP \00 search expression attack DoS; CVE-2015-3223; (bso#11325)
+  + fix remote read memory exploit in LDB; CVE-2015-5330; (bso#11599)
+  + move ldb_(un)pack_data into ldb_module.h for testing
+  + fix installation of _ldb_text.py
+  + fix propagation of LDB errors through TDB
+  + fix bug triggered by having an empty message in database during search
+
+-------------------------------------------------------------------

Old:
----
  ldb-1.1.23.tar.asc
  ldb-1.1.23.tar.gz

New:
----
  ldb-1.1.24.tar.asc
  ldb-1.1.24.tar.gz

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ ldb.spec ++++++
--- /var/tmp/diff_new_pack.C4k554/_old  2015-12-18 21:51:14.000000000 +0100
+++ /var/tmp/diff_new_pack.C4k554/_new  2015-12-18 21:51:14.000000000 +0100
@@ -24,9 +24,9 @@
 %define with_python3 0
 %endif
 
-%define talloc_version 2.1.4
-%define tdb_version 1.3.7
-%define tevent_version 0.9.25
+%define talloc_version 2.1.5
+%define tdb_version 1.3.8
+%define tevent_version 0.9.26
 
 Name:           ldb
 BuildRequires:  docbook-xsl-stylesheets
@@ -49,14 +49,14 @@
 %else
 %define        build_make_smp_mflags %{?jobs:-j%jobs}
 %endif
-Url:            http://ldb.samba.org/
-Version:        1.1.23
+Url:            https://ldb.samba.org/
+Version:        1.1.24
 Release:        0
 Summary:        An LDAP-like embedded database
 License:        GPL-3.0+
 Group:          System/Libraries
-Source:         http://download.samba.org/pub/ldb/ldb-%{version}.tar.gz
-Source1:        http://download.samba.org/pub/ldb/ldb-%{version}.tar.asc
+Source:         https://download.samba.org/pub/ldb/ldb-%{version}.tar.gz
+Source1:        https://download.samba.org/pub/ldb/ldb-%{version}.tar.asc
 Source2:        ldb.keyring
 Source4:        baselibs.conf
 BuildRoot:      %{_tmppath}/%{name}-%{version}-build
@@ -193,7 +193,7 @@
 rm -f apidocs/man/man3/_*_ldb-%{version}_include_.3
 
 %check
-%ifnarch ppc64
+%ifnarch ppc64 s390x
 LD_LIBRARY_PATH="bin/shared:bin/shared/private" \
 LDB_MODULES_PATH="bin/modules" \
 %{__make} test

++++++ ldb-1.1.23.tar.gz -> ldb-1.1.24.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/ldb-1.1.23/ABI/ldb-1.1.24.sigs 
new/ldb-1.1.24/ABI/ldb-1.1.24.sigs
--- old/ldb-1.1.23/ABI/ldb-1.1.24.sigs  1970-01-01 01:00:00.000000000 +0100
+++ new/ldb-1.1.24/ABI/ldb-1.1.24.sigs  2015-12-10 12:01:40.000000000 +0100
@@ -0,0 +1,264 @@
+ldb_add: int (struct ldb_context *, const struct ldb_message *)
+ldb_any_comparison: int (struct ldb_context *, void *, ldb_attr_handler_t, 
const struct ldb_val *, const struct ldb_val *)
+ldb_asprintf_errstring: void (struct ldb_context *, const char *, ...)
+ldb_attr_casefold: char *(TALLOC_CTX *, const char *)
+ldb_attr_dn: int (const char *)
+ldb_attr_in_list: int (const char * const *, const char *)
+ldb_attr_list_copy: const char **(TALLOC_CTX *, const char * const *)
+ldb_attr_list_copy_add: const char **(TALLOC_CTX *, const char * const *, 
const char *)
+ldb_base64_decode: int (char *)
+ldb_base64_encode: char *(TALLOC_CTX *, const char *, int)
+ldb_binary_decode: struct ldb_val (TALLOC_CTX *, const char *)
+ldb_binary_encode: char *(TALLOC_CTX *, struct ldb_val)
+ldb_binary_encode_string: char *(TALLOC_CTX *, const char *)
+ldb_build_add_req: int (struct ldb_request **, struct ldb_context *, 
TALLOC_CTX *, const struct ldb_message *, struct ldb_control **, void *, 
ldb_request_callback_t, struct ldb_request *)
+ldb_build_del_req: int (struct ldb_request **, struct ldb_context *, 
TALLOC_CTX *, struct ldb_dn *, struct ldb_control **, void *, 
ldb_request_callback_t, struct ldb_request *)
+ldb_build_extended_req: int (struct ldb_request **, struct ldb_context *, 
TALLOC_CTX *, const char *, void *, struct ldb_control **, void *, 
ldb_request_callback_t, struct ldb_request *)
+ldb_build_mod_req: int (struct ldb_request **, struct ldb_context *, 
TALLOC_CTX *, const struct ldb_message *, struct ldb_control **, void *, 
ldb_request_callback_t, struct ldb_request *)
+ldb_build_rename_req: int (struct ldb_request **, struct ldb_context *, 
TALLOC_CTX *, struct ldb_dn *, struct ldb_dn *, struct ldb_control **, void *, 
ldb_request_callback_t, struct ldb_request *)
+ldb_build_search_req: int (struct ldb_request **, struct ldb_context *, 
TALLOC_CTX *, struct ldb_dn *, enum ldb_scope, const char *, const char * const 
*, struct ldb_control **, void *, ldb_request_callback_t, struct ldb_request *)
+ldb_build_search_req_ex: int (struct ldb_request **, struct ldb_context *, 
TALLOC_CTX *, struct ldb_dn *, enum ldb_scope, struct ldb_parse_tree *, const 
char * const *, struct ldb_control **, void *, ldb_request_callback_t, struct 
ldb_request *)
+ldb_casefold: char *(struct ldb_context *, TALLOC_CTX *, const char *, size_t)
+ldb_casefold_default: char *(void *, TALLOC_CTX *, const char *, size_t)
+ldb_check_critical_controls: int (struct ldb_control **)
+ldb_comparison_binary: int (struct ldb_context *, void *, const struct ldb_val 
*, const struct ldb_val *)
+ldb_comparison_fold: int (struct ldb_context *, void *, const struct ldb_val 
*, const struct ldb_val *)
+ldb_connect: int (struct ldb_context *, const char *, unsigned int, const char 
**)
+ldb_control_to_string: char *(TALLOC_CTX *, const struct ldb_control *)
+ldb_controls_except_specified: struct ldb_control **(struct ldb_control **, 
TALLOC_CTX *, struct ldb_control *)
+ldb_debug: void (struct ldb_context *, enum ldb_debug_level, const char *, ...)
+ldb_debug_add: void (struct ldb_context *, const char *, ...)
+ldb_debug_end: void (struct ldb_context *, enum ldb_debug_level)
+ldb_debug_set: void (struct ldb_context *, enum ldb_debug_level, const char *, 
...)
+ldb_delete: int (struct ldb_context *, struct ldb_dn *)
+ldb_dn_add_base: bool (struct ldb_dn *, struct ldb_dn *)
+ldb_dn_add_base_fmt: bool (struct ldb_dn *, const char *, ...)
+ldb_dn_add_child: bool (struct ldb_dn *, struct ldb_dn *)
+ldb_dn_add_child_fmt: bool (struct ldb_dn *, const char *, ...)
+ldb_dn_alloc_casefold: char *(TALLOC_CTX *, struct ldb_dn *)
+ldb_dn_alloc_linearized: char *(TALLOC_CTX *, struct ldb_dn *)
+ldb_dn_canonical_ex_string: char *(TALLOC_CTX *, struct ldb_dn *)
+ldb_dn_canonical_string: char *(TALLOC_CTX *, struct ldb_dn *)
+ldb_dn_check_local: bool (struct ldb_module *, struct ldb_dn *)
+ldb_dn_check_special: bool (struct ldb_dn *, const char *)
+ldb_dn_compare: int (struct ldb_dn *, struct ldb_dn *)
+ldb_dn_compare_base: int (struct ldb_dn *, struct ldb_dn *)
+ldb_dn_copy: struct ldb_dn *(TALLOC_CTX *, struct ldb_dn *)
+ldb_dn_escape_value: char *(TALLOC_CTX *, struct ldb_val)
+ldb_dn_extended_add_syntax: int (struct ldb_context *, unsigned int, const 
struct ldb_dn_extended_syntax *)
+ldb_dn_extended_filter: void (struct ldb_dn *, const char * const *)
+ldb_dn_extended_syntax_by_name: const struct ldb_dn_extended_syntax *(struct 
ldb_context *, const char *)
+ldb_dn_from_ldb_val: struct ldb_dn *(TALLOC_CTX *, struct ldb_context *, const 
struct ldb_val *)
+ldb_dn_get_casefold: const char *(struct ldb_dn *)
+ldb_dn_get_comp_num: int (struct ldb_dn *)
+ldb_dn_get_component_name: const char *(struct ldb_dn *, unsigned int)
+ldb_dn_get_component_val: const struct ldb_val *(struct ldb_dn *, unsigned int)
+ldb_dn_get_extended_comp_num: int (struct ldb_dn *)
+ldb_dn_get_extended_component: const struct ldb_val *(struct ldb_dn *, const 
char *)
+ldb_dn_get_extended_linearized: char *(TALLOC_CTX *, struct ldb_dn *, int)
+ldb_dn_get_ldb_context: struct ldb_context *(struct ldb_dn *)
+ldb_dn_get_linearized: const char *(struct ldb_dn *)
+ldb_dn_get_parent: struct ldb_dn *(TALLOC_CTX *, struct ldb_dn *)
+ldb_dn_get_rdn_name: const char *(struct ldb_dn *)
+ldb_dn_get_rdn_val: const struct ldb_val *(struct ldb_dn *)
+ldb_dn_has_extended: bool (struct ldb_dn *)
+ldb_dn_is_null: bool (struct ldb_dn *)
+ldb_dn_is_special: bool (struct ldb_dn *)
+ldb_dn_is_valid: bool (struct ldb_dn *)
+ldb_dn_map_local: struct ldb_dn *(struct ldb_module *, void *, struct ldb_dn *)
+ldb_dn_map_rebase_remote: struct ldb_dn *(struct ldb_module *, void *, struct 
ldb_dn *)
+ldb_dn_map_remote: struct ldb_dn *(struct ldb_module *, void *, struct ldb_dn 
*)
+ldb_dn_minimise: bool (struct ldb_dn *)
+ldb_dn_new: struct ldb_dn *(TALLOC_CTX *, struct ldb_context *, const char *)
+ldb_dn_new_fmt: struct ldb_dn *(TALLOC_CTX *, struct ldb_context *, const char 
*, ...)
+ldb_dn_remove_base_components: bool (struct ldb_dn *, unsigned int)
+ldb_dn_remove_child_components: bool (struct ldb_dn *, unsigned int)
+ldb_dn_remove_extended_components: void (struct ldb_dn *)
+ldb_dn_replace_components: bool (struct ldb_dn *, struct ldb_dn *)
+ldb_dn_set_component: int (struct ldb_dn *, int, const char *, const struct 
ldb_val)
+ldb_dn_set_extended_component: int (struct ldb_dn *, const char *, const 
struct ldb_val *)
+ldb_dn_update_components: int (struct ldb_dn *, const struct ldb_dn *)
+ldb_dn_validate: bool (struct ldb_dn *)
+ldb_dump_results: void (struct ldb_context *, struct ldb_result *, FILE *)
+ldb_error_at: int (struct ldb_context *, int, const char *, const char *, int)
+ldb_errstring: const char *(struct ldb_context *)
+ldb_extended: int (struct ldb_context *, const char *, void *, struct 
ldb_result **)
+ldb_extended_default_callback: int (struct ldb_request *, struct ldb_reply *)
+ldb_filter_from_tree: char *(TALLOC_CTX *, const struct ldb_parse_tree *)
+ldb_get_config_basedn: struct ldb_dn *(struct ldb_context *)
+ldb_get_create_perms: unsigned int (struct ldb_context *)
+ldb_get_default_basedn: struct ldb_dn *(struct ldb_context *)
+ldb_get_event_context: struct tevent_context *(struct ldb_context *)
+ldb_get_flags: unsigned int (struct ldb_context *)
+ldb_get_opaque: void *(struct ldb_context *, const char *)
+ldb_get_root_basedn: struct ldb_dn *(struct ldb_context *)
+ldb_get_schema_basedn: struct ldb_dn *(struct ldb_context *)
+ldb_global_init: int (void)
+ldb_handle_new: struct ldb_handle *(TALLOC_CTX *, struct ldb_context *)
+ldb_handler_copy: int (struct ldb_context *, void *, const struct ldb_val *, 
struct ldb_val *)
+ldb_handler_fold: int (struct ldb_context *, void *, const struct ldb_val *, 
struct ldb_val *)
+ldb_init: struct ldb_context *(TALLOC_CTX *, struct tevent_context *)
+ldb_ldif_message_string: char *(struct ldb_context *, TALLOC_CTX *, enum 
ldb_changetype, const struct ldb_message *)
+ldb_ldif_parse_modrdn: int (struct ldb_context *, const struct ldb_ldif *, 
TALLOC_CTX *, struct ldb_dn **, struct ldb_dn **, bool *, struct ldb_dn **, 
struct ldb_dn **)
+ldb_ldif_read: struct ldb_ldif *(struct ldb_context *, int (*)(void *), void *)
+ldb_ldif_read_file: struct ldb_ldif *(struct ldb_context *, FILE *)
+ldb_ldif_read_file_state: struct ldb_ldif *(struct ldb_context *, struct 
ldif_read_file_state *)
+ldb_ldif_read_free: void (struct ldb_context *, struct ldb_ldif *)
+ldb_ldif_read_string: struct ldb_ldif *(struct ldb_context *, const char **)
+ldb_ldif_write: int (struct ldb_context *, int (*)(void *, const char *, ...), 
void *, const struct ldb_ldif *)
+ldb_ldif_write_file: int (struct ldb_context *, FILE *, const struct ldb_ldif 
*)
+ldb_ldif_write_redacted_trace_string: char *(struct ldb_context *, TALLOC_CTX 
*, const struct ldb_ldif *)
+ldb_ldif_write_string: char *(struct ldb_context *, TALLOC_CTX *, const struct 
ldb_ldif *)
+ldb_load_modules: int (struct ldb_context *, const char **)
+ldb_map_add: int (struct ldb_module *, struct ldb_request *)
+ldb_map_delete: int (struct ldb_module *, struct ldb_request *)
+ldb_map_init: int (struct ldb_module *, const struct ldb_map_attribute *, 
const struct ldb_map_objectclass *, const char * const *, const char *, const 
char *)
+ldb_map_modify: int (struct ldb_module *, struct ldb_request *)
+ldb_map_rename: int (struct ldb_module *, struct ldb_request *)
+ldb_map_search: int (struct ldb_module *, struct ldb_request *)
+ldb_match_msg: int (struct ldb_context *, const struct ldb_message *, const 
struct ldb_parse_tree *, struct ldb_dn *, enum ldb_scope)
+ldb_match_msg_error: int (struct ldb_context *, const struct ldb_message *, 
const struct ldb_parse_tree *, struct ldb_dn *, enum ldb_scope, bool *)
+ldb_match_msg_objectclass: int (const struct ldb_message *, const char *)
+ldb_mod_register_control: int (struct ldb_module *, const char *)
+ldb_modify: int (struct ldb_context *, const struct ldb_message *)
+ldb_modify_default_callback: int (struct ldb_request *, struct ldb_reply *)
+ldb_module_call_chain: char *(struct ldb_request *, TALLOC_CTX *)
+ldb_module_connect_backend: int (struct ldb_context *, const char *, const 
char **, struct ldb_module **)
+ldb_module_done: int (struct ldb_request *, struct ldb_control **, struct 
ldb_extended *, int)
+ldb_module_flags: uint32_t (struct ldb_context *)
+ldb_module_get_ctx: struct ldb_context *(struct ldb_module *)
+ldb_module_get_name: const char *(struct ldb_module *)
+ldb_module_get_ops: const struct ldb_module_ops *(struct ldb_module *)
+ldb_module_get_private: void *(struct ldb_module *)
+ldb_module_init_chain: int (struct ldb_context *, struct ldb_module *)
+ldb_module_load_list: int (struct ldb_context *, const char **, struct 
ldb_module *, struct ldb_module **)
+ldb_module_new: struct ldb_module *(TALLOC_CTX *, struct ldb_context *, const 
char *, const struct ldb_module_ops *)
+ldb_module_next: struct ldb_module *(struct ldb_module *)
+ldb_module_popt_options: struct poptOption **(struct ldb_context *)
+ldb_module_send_entry: int (struct ldb_request *, struct ldb_message *, struct 
ldb_control **)
+ldb_module_send_referral: int (struct ldb_request *, char *)
+ldb_module_set_next: void (struct ldb_module *, struct ldb_module *)
+ldb_module_set_private: void (struct ldb_module *, void *)
+ldb_modules_hook: int (struct ldb_context *, enum ldb_module_hook_type)
+ldb_modules_list_from_string: const char **(struct ldb_context *, TALLOC_CTX 
*, const char *)
+ldb_modules_load: int (const char *, const char *)
+ldb_msg_add: int (struct ldb_message *, const struct ldb_message_element *, 
int)
+ldb_msg_add_empty: int (struct ldb_message *, const char *, int, struct 
ldb_message_element **)
+ldb_msg_add_fmt: int (struct ldb_message *, const char *, const char *, ...)
+ldb_msg_add_linearized_dn: int (struct ldb_message *, const char *, struct 
ldb_dn *)
+ldb_msg_add_steal_string: int (struct ldb_message *, const char *, char *)
+ldb_msg_add_steal_value: int (struct ldb_message *, const char *, struct 
ldb_val *)
+ldb_msg_add_string: int (struct ldb_message *, const char *, const char *)
+ldb_msg_add_value: int (struct ldb_message *, const char *, const struct 
ldb_val *, struct ldb_message_element **)
+ldb_msg_canonicalize: struct ldb_message *(struct ldb_context *, const struct 
ldb_message *)
+ldb_msg_check_string_attribute: int (const struct ldb_message *, const char *, 
const char *)
+ldb_msg_copy: struct ldb_message *(TALLOC_CTX *, const struct ldb_message *)
+ldb_msg_copy_attr: int (struct ldb_message *, const char *, const char *)
+ldb_msg_copy_shallow: struct ldb_message *(TALLOC_CTX *, const struct 
ldb_message *)
+ldb_msg_diff: struct ldb_message *(struct ldb_context *, struct ldb_message *, 
struct ldb_message *)
+ldb_msg_difference: int (struct ldb_context *, TALLOC_CTX *, struct 
ldb_message *, struct ldb_message *, struct ldb_message **)
+ldb_msg_element_compare: int (struct ldb_message_element *, struct 
ldb_message_element *)
+ldb_msg_element_compare_name: int (struct ldb_message_element *, struct 
ldb_message_element *)
+ldb_msg_element_equal_ordered: bool (const struct ldb_message_element *, const 
struct ldb_message_element *)
+ldb_msg_find_attr_as_bool: int (const struct ldb_message *, const char *, int)
+ldb_msg_find_attr_as_dn: struct ldb_dn *(struct ldb_context *, TALLOC_CTX *, 
const struct ldb_message *, const char *)
+ldb_msg_find_attr_as_double: double (const struct ldb_message *, const char *, 
double)
+ldb_msg_find_attr_as_int: int (const struct ldb_message *, const char *, int)
+ldb_msg_find_attr_as_int64: int64_t (const struct ldb_message *, const char *, 
int64_t)
+ldb_msg_find_attr_as_string: const char *(const struct ldb_message *, const 
char *, const char *)
+ldb_msg_find_attr_as_uint: unsigned int (const struct ldb_message *, const 
char *, unsigned int)
+ldb_msg_find_attr_as_uint64: uint64_t (const struct ldb_message *, const char 
*, uint64_t)
+ldb_msg_find_element: struct ldb_message_element *(const struct ldb_message *, 
const char *)
+ldb_msg_find_ldb_val: const struct ldb_val *(const struct ldb_message *, const 
char *)
+ldb_msg_find_val: struct ldb_val *(const struct ldb_message_element *, struct 
ldb_val *)
+ldb_msg_new: struct ldb_message *(TALLOC_CTX *)
+ldb_msg_normalize: int (struct ldb_context *, TALLOC_CTX *, const struct 
ldb_message *, struct ldb_message **)
+ldb_msg_remove_attr: void (struct ldb_message *, const char *)
+ldb_msg_remove_element: void (struct ldb_message *, struct ldb_message_element 
*)
+ldb_msg_rename_attr: int (struct ldb_message *, const char *, const char *)
+ldb_msg_sanity_check: int (struct ldb_context *, const struct ldb_message *)
+ldb_msg_sort_elements: void (struct ldb_message *)
+ldb_next_del_trans: int (struct ldb_module *)
+ldb_next_end_trans: int (struct ldb_module *)
+ldb_next_init: int (struct ldb_module *)
+ldb_next_prepare_commit: int (struct ldb_module *)
+ldb_next_remote_request: int (struct ldb_module *, struct ldb_request *)
+ldb_next_request: int (struct ldb_module *, struct ldb_request *)
+ldb_next_start_trans: int (struct ldb_module *)
+ldb_op_default_callback: int (struct ldb_request *, struct ldb_reply *)
+ldb_options_find: const char *(struct ldb_context *, const char **, const char 
*)
+ldb_pack_data: int (struct ldb_context *, const struct ldb_message *, struct 
ldb_val *)
+ldb_parse_control_from_string: struct ldb_control *(struct ldb_context *, 
TALLOC_CTX *, const char *)
+ldb_parse_control_strings: struct ldb_control **(struct ldb_context *, 
TALLOC_CTX *, const char **)
+ldb_parse_tree: struct ldb_parse_tree *(TALLOC_CTX *, const char *)
+ldb_parse_tree_attr_replace: void (struct ldb_parse_tree *, const char *, 
const char *)
+ldb_parse_tree_copy_shallow: struct ldb_parse_tree *(TALLOC_CTX *, const 
struct ldb_parse_tree *)
+ldb_parse_tree_walk: int (struct ldb_parse_tree *, int (*)(struct 
ldb_parse_tree *, void *), void *)
+ldb_qsort: void (void * const, size_t, size_t, void *, ldb_qsort_cmp_fn_t)
+ldb_register_backend: int (const char *, ldb_connect_fn, bool)
+ldb_register_extended_match_rule: int (struct ldb_context *, const struct 
ldb_extended_match_rule *)
+ldb_register_hook: int (ldb_hook_fn)
+ldb_register_module: int (const struct ldb_module_ops *)
+ldb_rename: int (struct ldb_context *, struct ldb_dn *, struct ldb_dn *)
+ldb_reply_add_control: int (struct ldb_reply *, const char *, bool, void *)
+ldb_reply_get_control: struct ldb_control *(struct ldb_reply *, const char *)
+ldb_req_get_custom_flags: uint32_t (struct ldb_request *)
+ldb_req_is_untrusted: bool (struct ldb_request *)
+ldb_req_location: const char *(struct ldb_request *)
+ldb_req_mark_trusted: void (struct ldb_request *)
+ldb_req_mark_untrusted: void (struct ldb_request *)
+ldb_req_set_custom_flags: void (struct ldb_request *, uint32_t)
+ldb_req_set_location: void (struct ldb_request *, const char *)
+ldb_request: int (struct ldb_context *, struct ldb_request *)
+ldb_request_add_control: int (struct ldb_request *, const char *, bool, void *)
+ldb_request_done: int (struct ldb_request *, int)
+ldb_request_get_control: struct ldb_control *(struct ldb_request *, const char 
*)
+ldb_request_get_status: int (struct ldb_request *)
+ldb_request_replace_control: int (struct ldb_request *, const char *, bool, 
void *)
+ldb_request_set_state: void (struct ldb_request *, int)
+ldb_reset_err_string: void (struct ldb_context *)
+ldb_save_controls: int (struct ldb_control *, struct ldb_request *, struct 
ldb_control ***)
+ldb_schema_attribute_add: int (struct ldb_context *, const char *, unsigned 
int, const char *)
+ldb_schema_attribute_add_with_syntax: int (struct ldb_context *, const char *, 
unsigned int, const struct ldb_schema_syntax *)
+ldb_schema_attribute_by_name: const struct ldb_schema_attribute *(struct 
ldb_context *, const char *)
+ldb_schema_attribute_remove: void (struct ldb_context *, const char *)
+ldb_schema_attribute_set_override_handler: void (struct ldb_context *, 
ldb_attribute_handler_override_fn_t, void *)
+ldb_search: int (struct ldb_context *, TALLOC_CTX *, struct ldb_result **, 
struct ldb_dn *, enum ldb_scope, const char * const *, const char *, ...)
+ldb_search_default_callback: int (struct ldb_request *, struct ldb_reply *)
+ldb_sequence_number: int (struct ldb_context *, enum ldb_sequence_type, 
uint64_t *)
+ldb_set_create_perms: void (struct ldb_context *, unsigned int)
+ldb_set_debug: int (struct ldb_context *, void (*)(void *, enum 
ldb_debug_level, const char *, va_list), void *)
+ldb_set_debug_stderr: int (struct ldb_context *)
+ldb_set_default_dns: void (struct ldb_context *)
+ldb_set_errstring: void (struct ldb_context *, const char *)
+ldb_set_event_context: void (struct ldb_context *, struct tevent_context *)
+ldb_set_flags: void (struct ldb_context *, unsigned int)
+ldb_set_modules_dir: void (struct ldb_context *, const char *)
+ldb_set_opaque: int (struct ldb_context *, const char *, void *)
+ldb_set_timeout: int (struct ldb_context *, struct ldb_request *, int)
+ldb_set_timeout_from_prev_req: int (struct ldb_context *, struct ldb_request 
*, struct ldb_request *)
+ldb_set_utf8_default: void (struct ldb_context *)
+ldb_set_utf8_fns: void (struct ldb_context *, void *, char *(*)(void *, void 
*, const char *, size_t))
+ldb_setup_wellknown_attributes: int (struct ldb_context *)
+ldb_should_b64_encode: int (struct ldb_context *, const struct ldb_val *)
+ldb_standard_syntax_by_name: const struct ldb_schema_syntax *(struct 
ldb_context *, const char *)
+ldb_strerror: const char *(int)
+ldb_string_to_time: time_t (const char *)
+ldb_string_utc_to_time: time_t (const char *)
+ldb_timestring: char *(TALLOC_CTX *, time_t)
+ldb_timestring_utc: char *(TALLOC_CTX *, time_t)
+ldb_transaction_cancel: int (struct ldb_context *)
+ldb_transaction_cancel_noerr: int (struct ldb_context *)
+ldb_transaction_commit: int (struct ldb_context *)
+ldb_transaction_prepare_commit: int (struct ldb_context *)
+ldb_transaction_start: int (struct ldb_context *)
+ldb_unpack_data: int (struct ldb_context *, const struct ldb_val *, struct 
ldb_message *)
+ldb_val_dup: struct ldb_val (TALLOC_CTX *, const struct ldb_val *)
+ldb_val_equal_exact: int (const struct ldb_val *, const struct ldb_val *)
+ldb_val_map_local: struct ldb_val (struct ldb_module *, void *, const struct 
ldb_map_attribute *, const struct ldb_val *)
+ldb_val_map_remote: struct ldb_val (struct ldb_module *, void *, const struct 
ldb_map_attribute *, const struct ldb_val *)
+ldb_val_string_cmp: int (const struct ldb_val *, const char *)
+ldb_val_to_time: int (const struct ldb_val *, time_t *)
+ldb_valid_attr_name: int (const char *)
+ldb_vdebug: void (struct ldb_context *, enum ldb_debug_level, const char *, 
va_list)
+ldb_wait: int (struct ldb_handle *, enum ldb_wait_type)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/ldb-1.1.23/ABI/pyldb-util-1.1.24.sigs 
new/ldb-1.1.24/ABI/pyldb-util-1.1.24.sigs
--- old/ldb-1.1.23/ABI/pyldb-util-1.1.24.sigs   1970-01-01 01:00:00.000000000 
+0100
+++ new/ldb-1.1.24/ABI/pyldb-util-1.1.24.sigs   2015-12-10 12:01:40.000000000 
+0100
@@ -0,0 +1,2 @@
+pyldb_Dn_FromDn: PyObject *(struct ldb_dn *)
+pyldb_Object_AsDn: bool (TALLOC_CTX *, PyObject *, struct ldb_context *, 
struct ldb_dn **)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/ldb-1.1.23/ABI/pyldb-util.py3-1.1.24.sigs 
new/ldb-1.1.24/ABI/pyldb-util.py3-1.1.24.sigs
--- old/ldb-1.1.23/ABI/pyldb-util.py3-1.1.24.sigs       1970-01-01 
01:00:00.000000000 +0100
+++ new/ldb-1.1.24/ABI/pyldb-util.py3-1.1.24.sigs       2015-12-10 
12:01:40.000000000 +0100
@@ -0,0 +1,2 @@
+pyldb_Dn_FromDn: PyObject *(struct ldb_dn *)
+pyldb_Object_AsDn: bool (TALLOC_CTX *, PyObject *, struct ldb_context *, 
struct ldb_dn **)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/ldb-1.1.23/buildtools/wafsamba/samba_abi.py 
new/ldb-1.1.24/buildtools/wafsamba/samba_abi.py
--- old/ldb-1.1.23/buildtools/wafsamba/samba_abi.py     2015-11-06 
14:28:25.000000000 +0100
+++ new/ldb-1.1.24/buildtools/wafsamba/samba_abi.py     2015-12-10 
12:01:40.000000000 +0100
@@ -225,7 +225,7 @@
 def ABI_VSCRIPT(bld, libname, abi_directory, version, vscript, abi_match=None):
     '''generate a vscript file for our public libraries'''
     if abi_directory:
-        source = bld.path.ant_glob('%s/%s-[0-9]*.sigs' % (abi_directory, 
libname))
+        source = bld.path.ant_glob('%s/%s-[0-9]*.sigs' % (abi_directory, 
libname), flat=True)
         def abi_file_key(path):
             return version_key(path[:-len(".sigs")].rsplit("-")[-1])
         source = sorted(source.split(), key=abi_file_key)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/ldb-1.1.23/buildtools/wafsamba/samba_autoconf.py 
new/ldb-1.1.24/buildtools/wafsamba/samba_autoconf.py
--- old/ldb-1.1.23/buildtools/wafsamba/samba_autoconf.py        2015-11-06 
14:28:25.000000000 +0100
+++ new/ldb-1.1.24/buildtools/wafsamba/samba_autoconf.py        2015-12-10 
12:01:40.000000000 +0100
@@ -4,7 +4,7 @@
 import Build, Options, preproc, Logs
 from Configure import conf
 from TaskGen import feature
-from samba_utils import TO_LIST, GET_TARGET_TYPE, SET_TARGET_TYPE, runonce, 
unique_list, mkdir_p
+from samba_utils import TO_LIST, GET_TARGET_TYPE, SET_TARGET_TYPE, 
unique_list, mkdir_p
 
 missing_headers = set()
 
@@ -13,7 +13,6 @@
 # to waf a bit easier for those used to autoconf
 # m4 files
 
-@runonce
 @conf
 def DEFINE(conf, d, v, add_to_cflags=False, quote=False):
     '''define a config option'''
@@ -101,6 +100,7 @@
                      type='nolink',
                      execute=0,
                      ccflags=ccflags,
+                     mandatory=False,
                      includes=cpppath,
                      uselib=lib.upper(),
                      msg="Checking for header %s" % h)
@@ -486,6 +486,7 @@
     return conf.check(fragment='int main(void) { return 0; }\n',
                       execute=0,
                       ldflags=ldflags,
+                      mandatory=False,
                       msg="Checking linker accepts %s" % ldflags)
 
 
@@ -569,9 +570,9 @@
 
         (ccflags, ldflags, cpppath) = library_flags(conf, lib)
         if shlib:
-            res = conf.check(features='c cshlib', fragment=fragment, lib=lib, 
uselib_store=lib, ccflags=ccflags, ldflags=ldflags, uselib=lib.upper())
+            res = conf.check(features='c cshlib', fragment=fragment, lib=lib, 
uselib_store=lib, ccflags=ccflags, ldflags=ldflags, uselib=lib.upper(), 
mandatory=False)
         else:
-            res = conf.check(lib=lib, uselib_store=lib, ccflags=ccflags, 
ldflags=ldflags, uselib=lib.upper())
+            res = conf.check(lib=lib, uselib_store=lib, ccflags=ccflags, 
ldflags=ldflags, uselib=lib.upper(), mandatory=False)
 
         if not res:
             if mandatory:
@@ -671,6 +672,7 @@
         execute=0,
         ccflags='-fstack-protector',
         ldflags='-fstack-protector',
+        mandatory=False,
         msg='Checking if toolchain accepts -fstack-protector'):
             conf.ADD_CFLAGS('-fstack-protector')
             conf.ADD_LDFLAGS('-fstack-protector')
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/ldb-1.1.23/buildtools/wafsamba/samba_bundled.py 
new/ldb-1.1.24/buildtools/wafsamba/samba_bundled.py
--- old/ldb-1.1.23/buildtools/wafsamba/samba_bundled.py 2015-11-06 
14:28:25.000000000 +0100
+++ new/ldb-1.1.24/buildtools/wafsamba/samba_bundled.py 2015-12-10 
12:01:40.000000000 +0100
@@ -3,7 +3,7 @@
 import sys
 import Build, Options, Logs
 from Configure import conf
-from samba_utils import TO_LIST, runonce
+from samba_utils import TO_LIST
 
 def PRIVATE_NAME(bld, name, private_extension, private_library):
     '''possibly rename a library to include a bundled extension'''
@@ -108,7 +108,6 @@
     return ('ALL' in conf.env.PRIVATE_LIBS or
             libname in conf.env.PRIVATE_LIBS)
 
-@runonce
 @conf
 def CHECK_BUNDLED_SYSTEM_PKG(conf, libname, minversion='0.0.0',
         onlyif=None, implied_deps=None, pkg=None):
@@ -122,7 +121,6 @@
                                      implied_deps=implied_deps,
                                      pkg=pkg)
 
-@runonce
 @conf
 def CHECK_BUNDLED_SYSTEM(conf, libname, minversion='0.0.0',
                          checkfunctions=None, headers=None, checkcode=None,
@@ -219,7 +217,6 @@
 def tuplize_version(version):
     return tuple([int(x) for x in version.split(".")])
 
-@runonce
 @conf
 def CHECK_BUNDLED_SYSTEM_PYTHON(conf, libname, modulename, minversion='0.0.0'):
     '''check if a python module is available on the system and
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/ldb-1.1.23/buildtools/wafsamba/samba_conftests.py 
new/ldb-1.1.24/buildtools/wafsamba/samba_conftests.py
--- old/ldb-1.1.23/buildtools/wafsamba/samba_conftests.py       2015-11-06 
14:28:25.000000000 +0100
+++ new/ldb-1.1.24/buildtools/wafsamba/samba_conftests.py       2015-12-10 
12:01:40.000000000 +0100
@@ -196,7 +196,7 @@
     return v * 2;
 }
 '''
-    return conf.check(features='c cshlib',vnum="1",fragment=snip,msg=msg)
+    return conf.check(features='c cshlib',vnum="1",fragment=snip,msg=msg, 
mandatory=False)
 
 @conf
 def CHECK_NEED_LC(conf, msg):
@@ -258,7 +258,7 @@
     ldb_module = PyImport_ImportModule("ldb");
     return v * 2;
 }'''
-    return conf.check(features='c 
cshlib',uselib='PYEMBED',fragment=snip,msg=msg)
+    return conf.check(features='c 
cshlib',uselib='PYEMBED',fragment=snip,msg=msg, mandatory=False)
 
 # this one is quite complex, and should probably be broken up
 # into several parts. I'd quite like to create a set of CHECK_COMPOUND()
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/ldb-1.1.23/buildtools/wafsamba/samba_deps.py 
new/ldb-1.1.24/buildtools/wafsamba/samba_deps.py
--- old/ldb-1.1.23/buildtools/wafsamba/samba_deps.py    2015-11-06 
14:28:25.000000000 +0100
+++ new/ldb-1.1.24/buildtools/wafsamba/samba_deps.py    2015-12-10 
12:01:40.000000000 +0100
@@ -260,15 +260,10 @@
 
 
 def check_duplicate_sources(bld, tgt_list):
-    '''see if we are compiling the same source file more than once
-       without an allow_duplicates attribute'''
+    '''see if we are compiling the same source file more than once'''
 
     debug('deps: checking for duplicate sources')
-
     targets = LOCAL_CACHE(bld, 'TARGET_TYPE')
-    ret = True
-
-    global tstart
 
     for t in tgt_list:
         source_list = TO_LIST(getattr(t, 'source', ''))
@@ -286,7 +281,6 @@
 
     # build a list of targets that each source file is part of
     for t in tgt_list:
-        sources = []
         if not targets[t.sname] in [ 'LIBRARY', 'BINARY', 'PYTHON' ]:
             continue
         for obj in t.add_objects:
@@ -306,24 +300,7 @@
             if len(subsystems[s][tname]) > 1:
                 raise Utils.WafError("ERROR: source %s is in more than one 
subsystem of target '%s': %s" % (s, tname, subsystems[s][tname]))
 
-    return ret
-
-
-def check_orphaned_targets(bld, tgt_list):
-    '''check if any build targets are orphaned'''
-
-    target_dict = LOCAL_CACHE(bld, 'TARGET_TYPE')
-
-    debug('deps: checking for orphaned targets')
-
-    for t in tgt_list:
-        if getattr(t, 'samba_used', False):
-            continue
-        type = target_dict[t.sname]
-        if not type in ['BINARY', 'LIBRARY', 'MODULE', 'ET', 'PYTHON']:
-            if re.search('^PIDL_', t.sname) is None:
-                Logs.warn("Target %s of type %s is unused by any other target" 
% (t.sname, type))
-
+    return True
 
 def check_group_ordering(bld, tgt_list):
     '''see if we have any dependencies that violate the group ordering
@@ -366,7 +343,7 @@
                 ret = False
 
     return ret
-
+Build.BuildContext.check_group_ordering = check_group_ordering
 
 def show_final_deps(bld, tgt_list):
     '''show the final dependencies for all targets'''
@@ -1157,15 +1134,13 @@
 
     debug('deps: project rules stage1 completed')
 
-    #check_orphaned_targets(bld, tgt_list)
-
     if not check_duplicate_sources(bld, tgt_list):
         Logs.error("Duplicate sources present - aborting")
         sys.exit(1)
 
     debug("deps: check_duplicate_sources: %f" % (time.clock() - tstart))
 
-    if not check_group_ordering(bld, tgt_list):
+    if not bld.check_group_ordering(tgt_list):
         Logs.error("Bad group ordering - aborting")
         sys.exit(1)
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/ldb-1.1.23/buildtools/wafsamba/samba_install.py 
new/ldb-1.1.24/buildtools/wafsamba/samba_install.py
--- old/ldb-1.1.23/buildtools/wafsamba/samba_install.py 2015-11-06 
14:28:25.000000000 +0100
+++ new/ldb-1.1.24/buildtools/wafsamba/samba_install.py 2015-12-10 
12:01:40.000000000 +0100
@@ -4,7 +4,7 @@
 # library use
 
 import os
-import Options, Utils
+import Utils
 from TaskGen import feature, before, after
 from samba_utils import LIB_PATH, MODE_755, install_rpath, build_rpath
 
@@ -19,7 +19,7 @@
     install_ldflags = install_rpath(self)
     build_ldflags   = build_rpath(bld)
 
-    if not Options.is_install:
+    if not self.bld.is_install:
         # just need to set rpath if we are not installing
         self.env.RPATH = build_ldflags
         return
@@ -68,7 +68,7 @@
         install_ldflags = install_rpath(self)
         build_ldflags   = build_rpath(bld)
 
-        if not Options.is_install or not getattr(self, 'samba_install', True):
+        if not self.bld.is_install or not getattr(self, 'samba_install', True):
             # just need to set the build rpath if we are not installing
             self.env.RPATH = build_ldflags
             return
@@ -92,6 +92,7 @@
             t = self.clone(self.env)
             t.posted = False
             t.target += '.inst'
+            t.name = self.name + '.inst'
             self.env.RPATH = build_ldflags
         else:
             t = self
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/ldb-1.1.23/buildtools/wafsamba/samba_optimisation.py 
new/ldb-1.1.24/buildtools/wafsamba/samba_optimisation.py
--- old/ldb-1.1.23/buildtools/wafsamba/samba_optimisation.py    2015-11-06 
14:25:51.000000000 +0100
+++ new/ldb-1.1.24/buildtools/wafsamba/samba_optimisation.py    2015-12-10 
12:01:40.000000000 +0100
@@ -266,24 +266,4 @@
             if val:
                 self.env.append_value(v, val)
 
-@feature('cprogram', 'cshlib', 'cstaticlib')
-@after('apply_lib_vars')
-@before('apply_obj_vars')
-def samba_before_apply_obj_vars(self):
-    """before apply_obj_vars for uselib, this removes the standard pathes"""
 
-    def is_standard_libpath(env, path):
-        for _path in env.STANDARD_LIBPATH:
-            if _path == os.path.normpath(path):
-                return True
-        return False
-
-    v = self.env
-
-    for i in v['RPATH']:
-        if is_standard_libpath(v, i):
-            v['RPATH'].remove(i)
-
-    for i in v['LIBPATH']:
-        if is_standard_libpath(v, i):
-            v['LIBPATH'].remove(i)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/ldb-1.1.23/buildtools/wafsamba/samba_patterns.py 
new/ldb-1.1.24/buildtools/wafsamba/samba_patterns.py
--- old/ldb-1.1.23/buildtools/wafsamba/samba_patterns.py        2015-11-06 
14:28:25.000000000 +0100
+++ new/ldb-1.1.24/buildtools/wafsamba/samba_patterns.py        2015-12-10 
12:01:40.000000000 +0100
@@ -7,7 +7,7 @@
     '''print version.h contents'''
     src = task.inputs[0].srcpath(task.env)
 
-    version = samba_version_file(src, task.env.srcdir, env=task.env, 
is_install=task.env.is_install)
+    version = samba_version_file(src, task.env.srcdir, env=task.env, 
is_install=task.generator.bld.is_install)
     string = str(version)
 
     task.outputs[0].write(string)
@@ -25,7 +25,6 @@
                             source= 'VERSION',
                             target=target,
                             always=bld.is_install)
-    t.env.is_install = bld.is_install
 Build.BuildContext.SAMBA_MKVERSION = SAMBA_MKVERSION
 
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/ldb-1.1.23/buildtools/wafsamba/samba_perl.py 
new/ldb-1.1.24/buildtools/wafsamba/samba_perl.py
--- old/ldb-1.1.23/buildtools/wafsamba/samba_perl.py    2015-11-06 
14:28:25.000000000 +0100
+++ new/ldb-1.1.24/buildtools/wafsamba/samba_perl.py    2015-12-10 
12:01:40.000000000 +0100
@@ -5,12 +5,6 @@
 
 @conf
 def SAMBA_CHECK_PERL(conf, mandatory=True, version=(5,0,0)):
-    #
-    # TODO: use the @runonce mechanism for this.
-    # The problem is that @runonce currently does
-    # not seem to work together with @conf...
-    # So @runonce (and/or) @conf needs fixing.
-    #
     if "done" in done:
         return
     done["done"] = True
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/ldb-1.1.23/buildtools/wafsamba/samba_python.py 
new/ldb-1.1.24/buildtools/wafsamba/samba_python.py
--- old/ldb-1.1.23/buildtools/wafsamba/samba_python.py  2015-11-06 
14:28:25.000000000 +0100
+++ new/ldb-1.1.24/buildtools/wafsamba/samba_python.py  2015-12-10 
12:01:40.000000000 +0100
@@ -1,7 +1,7 @@
 # waf build tool for building IDL files with pidl
 
 import os
-import Build, Logs, Utils
+import Build, Logs, Utils, Configure
 from Configure import conf
 
 @conf
@@ -63,7 +63,12 @@
     del(conf.env.defines['PYTHONARCHDIR'])
 
 def _check_python_headers(conf, mandatory):
-    conf.check_python_headers(mandatory=mandatory)
+    try:
+        Configure.ConfigurationError
+        conf.check_python_headers(mandatory=mandatory)
+    except Configure.ConfigurationError:
+        if mandatory:
+             raise
 
     if conf.env['PYTHON_VERSION'] > '3':
         abi_pattern = os.path.splitext(conf.env['pyext_PATTERN'])[0]
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/ldb-1.1.23/buildtools/wafsamba/samba_utils.py 
new/ldb-1.1.24/buildtools/wafsamba/samba_utils.py
--- old/ldb-1.1.23/buildtools/wafsamba/samba_utils.py   2015-11-06 
14:30:18.000000000 +0100
+++ new/ldb-1.1.24/buildtools/wafsamba/samba_utils.py   2015-12-10 
12:01:40.000000000 +0100
@@ -3,7 +3,7 @@
 
 import os, sys, re, fnmatch, shlex
 import Build, Options, Utils, Task, Logs, Configure
-from TaskGen import feature, before
+from TaskGen import feature, before, after
 from Configure import conf, ConfigurationContext
 from Logs import debug
 
@@ -35,22 +35,6 @@
     return cache[target]
 
 
-######################################################
-# this is used as a decorator to make functions only
-# run once. Based on the idea from
-# 
http://stackoverflow.com/questions/815110/is-there-a-decorator-to-simply-cache-function-return-values
-def runonce(function):
-    runonce_ret = {}
-    def runonce_wrapper(*args):
-        if args in runonce_ret:
-            return runonce_ret[args]
-        else:
-            ret = function(*args)
-            runonce_ret[args] = ret
-            return ret
-    return runonce_wrapper
-
-
 def ADD_LD_LIBRARY_PATH(path):
     '''add something to LD_LIBRARY_PATH'''
     if 'LD_LIBRARY_PATH' in os.environ:
@@ -135,27 +119,6 @@
         if t not in d1:
             d1[t] = d2[t]
 
-
-def exec_command(self, cmd, **kw):
-    '''this overrides the 'waf -v' debug output to be in a nice
-    unix like format instead of a python list.
-    Thanks to ita on #waf for this'''
-    _cmd = cmd
-    if isinstance(cmd, list):
-        _cmd = ' '.join(cmd)
-    debug('runner: %s' % _cmd)
-    if self.log:
-        self.log.write('%s\n' % cmd)
-        kw['log'] = self.log
-    try:
-        if not kw.get('cwd', None):
-            kw['cwd'] = self.cwd
-    except AttributeError:
-        self.cwd = kw['cwd'] = self.bldnode.abspath()
-    return Utils.exec_command(cmd, **kw)
-Build.BuildContext.exec_command = exec_command
-
-
 def ADD_COMMAND(opt, name, function):
     '''add a new top level command to waf'''
     Utils.g_module.__dict__[name] = function
@@ -683,3 +646,26 @@
     return False
 
 Build.BuildContext.AD_DC_BUILD_IS_ENABLED = AD_DC_BUILD_IS_ENABLED
+
+@feature('cprogram', 'cshlib', 'cstaticlib')
+@after('apply_lib_vars')
+@before('apply_obj_vars')
+def samba_before_apply_obj_vars(self):
+    """before apply_obj_vars for uselib, this removes the standard paths"""
+
+    def is_standard_libpath(env, path):
+        for _path in env.STANDARD_LIBPATH:
+            if _path == os.path.normpath(path):
+                return True
+        return False
+
+    v = self.env
+
+    for i in v['RPATH']:
+        if is_standard_libpath(v, i):
+            v['RPATH'].remove(i)
+
+    for i in v['LIBPATH']:
+        if is_standard_libpath(v, i):
+            v['LIBPATH'].remove(i)
+
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/ldb-1.1.23/buildtools/wafsamba/samba_wildcard.py 
new/ldb-1.1.24/buildtools/wafsamba/samba_wildcard.py
--- old/ldb-1.1.23/buildtools/wafsamba/samba_wildcard.py        2015-11-06 
14:28:25.000000000 +0100
+++ new/ldb-1.1.24/buildtools/wafsamba/samba_wildcard.py        2015-12-10 
12:01:40.000000000 +0100
@@ -130,7 +130,6 @@
 
     Options.commands['install'] = False
     Options.commands['uninstall'] = False
-    Options.is_install = False
 
     bld.is_install = 0 # False
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/ldb-1.1.23/buildtools/wafsamba/wafsamba.py 
new/ldb-1.1.24/buildtools/wafsamba/wafsamba.py
--- old/ldb-1.1.23/buildtools/wafsamba/wafsamba.py      2015-11-06 
14:28:25.000000000 +0100
+++ new/ldb-1.1.24/buildtools/wafsamba/wafsamba.py      2015-12-10 
12:01:40.000000000 +0100
@@ -282,7 +282,7 @@
             if not vscriptpath:
                 raise Utils.WafError("unable to find vscript path for %s" % 
vscript)
             bld.add_manual_dependency(fullpath, vscriptpath)
-            if Options.is_install:
+            if bld.is_install:
                 # also make the .inst file depend on the vscript
                 instname = apply_pattern(bundled_name + '.inst', 
bld.env.shlib_PATTERN)
                 bld.add_manual_dependency(bld.path.find_or_declare(instname), 
bld.path.find_or_declare(vscript))
@@ -674,7 +674,7 @@
 
 
 
-@runonce
[email protected]_once
 def SETUP_BUILD_GROUPS(bld):
     '''setup build groups used to ensure that the different build
     phases happen consecutively'''
@@ -727,7 +727,7 @@
     '''used to copy scripts from the source tree into the build directory
        for use by selftest'''
 
-    source = bld.path.ant_glob(pattern)
+    source = bld.path.ant_glob(pattern, flat=True)
 
     bld.SET_BUILD_GROUP('build_source')
     for s in TO_LIST(source):
@@ -856,7 +856,7 @@
 def INSTALL_WILDCARD(bld, destdir, pattern, chmod=MODE_644, flat=False,
                      python_fixup=False, exclude=None, trim_path=None):
     '''install a set of files matching a wildcard pattern'''
-    files=TO_LIST(bld.path.ant_glob(pattern))
+    files=TO_LIST(bld.path.ant_glob(pattern, flat=True))
     if trim_path:
         files2 = []
         for f in files:
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/ldb-1.1.23/buildtools/wafsamba/wscript 
new/ldb-1.1.24/buildtools/wafsamba/wscript
--- old/ldb-1.1.23/buildtools/wafsamba/wscript  2015-11-06 14:28:25.000000000 
+0100
+++ new/ldb-1.1.24/buildtools/wafsamba/wscript  2015-12-10 12:01:40.000000000 
+0100
@@ -203,7 +203,7 @@
                     metavar="PYTHON", dest='EXTRA_PYTHON', default=None)
 
 
[email protected]
[email protected]_once
 def configure(conf):
     conf.env.hlist = []
     conf.env.srcdir = conf.srcdir
@@ -216,6 +216,7 @@
     # load our local waf extensions
     conf.check_tool('gnu_dirs')
     conf.check_tool('wafsamba')
+    conf.check_tool('print_commands')
 
     conf.CHECK_CC_ENV()
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/ldb-1.1.23/common/ldb_controls.c 
new/ldb-1.1.24/common/ldb_controls.c
--- old/ldb-1.1.23/common/ldb_controls.c        2015-11-06 14:25:52.000000000 
+0100
+++ new/ldb-1.1.24/common/ldb_controls.c        2015-12-10 12:01:40.000000000 
+0100
@@ -407,7 +407,7 @@
 
 
 /*
- * A little trick to allow to use constants defined in headers rather than
+ * A little trick to allow one to use constants defined in headers rather than
  * hardwritten in the file.
  * "sizeof" will return the \0 char as well so it will take the place of ":"
  * in the length of the string.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/ldb-1.1.23/common/ldb_dn.c 
new/ldb-1.1.24/common/ldb_dn.c
--- old/ldb-1.1.23/common/ldb_dn.c      2015-11-06 14:25:52.000000000 +0100
+++ new/ldb-1.1.24/common/ldb_dn.c      2015-12-10 12:01:40.000000000 +0100
@@ -189,33 +189,23 @@
 /* see RFC2253 section 2.4 */
 static int ldb_dn_escape_internal(char *dst, const char *src, int len)
 {
-       const char *p, *s;
+       char c;
        char *d;
-       size_t l;
-
-       p = s = src;
+       int i;
        d = dst;
 
-       while (p - src < len) {
-               p += strcspn(p, ",=\n\r+<>#;\\\" ");
-
-               if (p - src == len) /* found no escapable chars */
-                       break;
-
-               /* copy the part of the string before the stop */
-               memcpy(d, s, p - s);
-               d += (p - s); /* move to current position */
-               
-               switch (*p) {
+       for (i = 0; i < len; i++){
+               c = src[i];
+               switch (c) {
                case ' ':
-                       if (p == src || (p-src)==(len-1)) {
+                       if (i == 0 || i == len - 1) {
                                /* if at the beginning or end
                                 * of the string then escape */
                                *d++ = '\\';
-                               *d++ = *p++;                                    
 
+                               *d++ = c;
                        } else {
                                /* otherwise don't escape */
-                               *d++ = *p++;
+                               *d++ = c;
                        }
                        break;
 
@@ -231,36 +221,36 @@
                case '?':
                        /* these must be escaped using \c form */
                        *d++ = '\\';
-                       *d++ = *p++;
+                       *d++ = c;
                        break;
 
-               default: {
+               case ';':
+               case '\r':
+               case '\n':
+               case '=':
+               case '\0': {
                        /* any others get \XX form */
                        unsigned char v;
                        const char *hexbytes = "0123456789ABCDEF";
-                       v = *(const unsigned char *)p;
+                       v = (const unsigned char)c;
                        *d++ = '\\';
                        *d++ = hexbytes[v>>4];
                        *d++ = hexbytes[v&0xF];
-                       p++;
                        break;
                }
+               default:
+                       *d++ = c;
                }
-               s = p; /* move forward */
        }
 
-       /* copy the last part (with zero) and return */
-       l = len - (s - src);
-       memcpy(d, s, l + 1);
-
        /* return the length of the resulting string */
-       return (l + (d - dst));
+       return (d - dst);
 }
 
 char *ldb_dn_escape_value(TALLOC_CTX *mem_ctx, struct ldb_val value)
 {
        char *dst;
-
+       size_t len;
        if (!value.length)
                return NULL;
 
@@ -271,10 +261,14 @@
                return NULL;
        }
 
-       ldb_dn_escape_internal(dst, (const char *)value.data, value.length);
-
-       dst = talloc_realloc(mem_ctx, dst, char, strlen(dst) + 1);
+       len = ldb_dn_escape_internal(dst, (const char *)value.data, 
value.length);
 
+       dst = talloc_realloc(mem_ctx, dst, char, len + 1);
+       if ( ! dst) {
+               talloc_free(dst);
+               return NULL;
+       }
+       dst[len] = '\0';
        return dst;
 }
 
@@ -592,12 +586,15 @@
 
                                p++;
                                *d++ = '\0';
-                               dn->components[dn->comp_num].value.data = 
(uint8_t *)talloc_strdup(dn->components, dt);
+                               dn->components[dn->comp_num].value.data = \
+                                       (uint8_t 
*)talloc_memdup(dn->components, dt, l + 1);
                                dn->components[dn->comp_num].value.length = l;
                                if ( ! dn->components[dn->comp_num].value.data) 
{
                                        /* ouch ! */
                                        goto failed;
                                }
+                               
talloc_set_name_const(dn->components[dn->comp_num].value.data,
+                                                     (const char 
*)dn->components[dn->comp_num].value.data);
 
                                dt = d;
 
@@ -713,11 +710,13 @@
        *d++ = '\0';
        dn->components[dn->comp_num].value.length = l;
        dn->components[dn->comp_num].value.data =
-                               (uint8_t *)talloc_strdup(dn->components, dt);
+               (uint8_t *)talloc_memdup(dn->components, dt, l + 1);
        if ( ! dn->components[dn->comp_num].value.data) {
                /* ouch */
                goto failed;
        }
+       talloc_set_name_const(dn->components[dn->comp_num].value.data,
+                             (const char 
*)dn->components[dn->comp_num].value.data);
 
        dn->comp_num++;
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/ldb-1.1.23/common/ldb_match.c 
new/ldb-1.1.24/common/ldb_match.c
--- old/ldb-1.1.23/common/ldb_match.c   2014-12-22 09:17:09.000000000 +0100
+++ new/ldb-1.1.24/common/ldb_match.c   2015-12-10 12:01:40.000000000 +0100
@@ -241,7 +241,6 @@
        struct ldb_val val;
        struct ldb_val cnk;
        struct ldb_val *chunk;
-       char *p, *g;
        uint8_t *save_p = NULL;
        unsigned int c = 0;
 
@@ -271,6 +270,14 @@
                if (cnk.length > val.length) {
                        goto mismatch;
                }
+               /*
+                * Empty strings are returned as length 0. Ensure
+                * we can cope with this.
+                */
+               if (cnk.length == 0) {
+                       goto mismatch;
+               }
+
                if (memcmp((char *)val.data, (char *)cnk.data, cnk.length) != 
0) goto mismatch;
                val.length -= cnk.length;
                val.data += cnk.length;
@@ -280,20 +287,36 @@
        }
 
        while (tree->u.substring.chunks[c]) {
+               uint8_t *p;
 
                chunk = tree->u.substring.chunks[c];
                if(a->syntax->canonicalise_fn(ldb, ldb, chunk, &cnk) != 0) goto 
mismatch;
 
-               /* FIXME: case of embedded nulls */
-               p = strstr((char *)val.data, (char *)cnk.data);
+               /*
+                * Empty strings are returned as length 0. Ensure
+                * we can cope with this.
+                */
+               if (cnk.length == 0) {
+                       goto mismatch;
+               }
+               /*
+                * Values might be binary blobs. Don't use string
+                * search, but memory search instead.
+                */
+               p = memmem((const void *)val.data,val.length,
+                          (const void *)cnk.data, cnk.length);
                if (p == NULL) goto mismatch;
                if ( (! tree->u.substring.chunks[c + 1]) && (! 
tree->u.substring.end_with_wildcard) ) {
+                       uint8_t *g;
                        do { /* greedy */
-                               g = strstr((char *)p + cnk.length, (char 
*)cnk.data);
+                               g = memmem(p + cnk.length,
+                                       val.length - (p - val.data),
+                                       (const uint8_t *)cnk.data,
+                                       cnk.length);
                                if (g) p = g;
                        } while(g);
                }
-               val.length = val.length - (p - (char *)(val.data)) - cnk.length;
+               val.length = val.length - (p - (uint8_t *)(val.data)) - 
cnk.length;
                val.data = (uint8_t *)(p + cnk.length);
                c++;
                talloc_free(cnk.data);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/ldb-1.1.23/include/ldb_module.h 
new/ldb-1.1.24/include/ldb_module.h
--- old/ldb-1.1.23/include/ldb_module.h 2014-12-22 09:17:09.000000000 +0100
+++ new/ldb-1.1.24/include/ldb_module.h 2015-12-10 12:01:40.000000000 +0100
@@ -382,4 +382,16 @@
 int ldb_register_extended_match_rule(struct ldb_context *ldb,
                                     const struct ldb_extended_match_rule 
*rule);
 
+/*
+ * these pack/unpack functions are exposed in the library for use by
+ * ldb tools like ldbdump and for use in tests,
+ * but are not part of the public API
+ */
+int ldb_pack_data(struct ldb_context *ldb,
+                 const struct ldb_message *message,
+                 struct ldb_val *data);
+int ldb_unpack_data(struct ldb_context *ldb,
+                   const struct ldb_val *data,
+                   struct ldb_message *message);
+
 #endif
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/ldb-1.1.23/include/ldb_private.h 
new/ldb-1.1.24/include/ldb_private.h
--- old/ldb-1.1.23/include/ldb_private.h        2015-11-06 14:25:52.000000000 
+0100
+++ new/ldb-1.1.24/include/ldb_private.h        2015-12-10 12:01:40.000000000 
+0100
@@ -201,17 +201,6 @@
                                           const struct ldb_ldif *ldif);
 
 /*
- * these pack/unpack functions are exposed in the library for use by
- * ldb tools like ldbdump, but are not part of the public API
- */
-int ldb_pack_data(struct ldb_context *ldb,
-                 const struct ldb_message *message,
-                 struct ldb_val *data);
-int ldb_unpack_data(struct ldb_context *ldb,
-                   const struct ldb_val *data,
-                   struct ldb_message *message);
-
-/*
  * Get the LDB context in use on an LDB DN.
  *
  * This is helpful to the python LDB code, which may use as part of
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/ldb-1.1.23/ldb_tdb/ldb_search.c 
new/ldb-1.1.24/ldb_tdb/ldb_search.c
--- old/ldb-1.1.23/ldb_tdb/ldb_search.c 2014-09-16 20:04:31.000000000 +0200
+++ new/ldb-1.1.24/ldb_tdb/ldb_search.c 2015-12-10 12:01:40.000000000 +0100
@@ -407,10 +407,18 @@
        }
 
        talloc_free(msg->elements);
-       msg->elements = talloc_realloc(msg, el2, struct ldb_message_element, 
msg->num_elements);
+
+       if (num_elements > 0) {
+               msg->elements = talloc_realloc(msg, el2, struct 
ldb_message_element,
+                                              num_elements);
+       } else {
+               msg->elements = talloc_array(msg, struct ldb_message_element, 
0);
+               talloc_free(el2);
+       }
        if (msg->elements == NULL) {
                return -1;
        }
+
        msg->num_elements = num_elements;
 
        return 0;
@@ -437,6 +445,7 @@
 
        msg = ldb_msg_new(ac);
        if (!msg) {
+               ac->error = LDB_ERR_OPERATIONS_ERROR;
                return -1;
        }
 
@@ -444,6 +453,7 @@
        ret = ldb_unpack_data(ldb, (struct ldb_val *)&data, msg);
        if (ret == -1) {
                talloc_free(msg);
+               ac->error = LDB_ERR_OPERATIONS_ERROR;
                return -1;
        }
 
@@ -452,6 +462,7 @@
                                     (char *)key.dptr + 3);
                if (msg->dn == NULL) {
                        talloc_free(msg);
+                       ac->error = LDB_ERR_OPERATIONS_ERROR;
                        return -1;
                }
        }
@@ -461,6 +472,7 @@
                                  ac->tree, ac->base, ac->scope, &matched);
        if (ret != LDB_SUCCESS) {
                talloc_free(msg);
+               ac->error = LDB_ERR_OPERATIONS_ERROR;
                return -1;
        }
        if (!matched) {
@@ -473,6 +485,7 @@
 
        if (ret == -1) {
                talloc_free(msg);
+               ac->error = LDB_ERR_OPERATIONS_ERROR;
                return -1;
        }
 
@@ -480,6 +493,7 @@
        if (ret != LDB_SUCCESS) {
                ac->request_terminated = true;
                /* the callback failed, abort the operation */
+               ac->error = LDB_ERR_OPERATIONS_ERROR;
                return -1;
        }
 
@@ -497,6 +511,7 @@
        struct ltdb_private *ltdb = talloc_get_type(data, struct ltdb_private);
        int ret;
 
+       ctx->error = LDB_SUCCESS;
        if (ltdb->in_transaction != 0) {
                ret = tdb_traverse(ltdb->tdb, search_func, ctx);
        } else {
@@ -507,7 +522,7 @@
                return LDB_ERR_OPERATIONS_ERROR;
        }
 
-       return LDB_SUCCESS;
+       return ctx->error;
 }
 
 /*
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/ldb-1.1.23/ldb_tdb/ldb_tdb.h 
new/ldb-1.1.24/ldb_tdb/ldb_tdb.h
--- old/ldb-1.1.23/ldb_tdb/ldb_tdb.h    2014-09-16 20:04:31.000000000 +0200
+++ new/ldb-1.1.24/ldb_tdb/ldb_tdb.h    2015-12-10 12:01:40.000000000 +0100
@@ -48,6 +48,9 @@
        enum ldb_scope scope;
        const char * const *attrs;
        struct tevent_timer *timeout_event;
+
+       /* error handling */
+       int error;
 };
 
 /* special record types */
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/ldb-1.1.23/lib/replace/wscript 
new/ldb-1.1.24/lib/replace/wscript
--- old/ldb-1.1.23/lib/replace/wscript  2015-11-06 14:28:25.000000000 +0100
+++ new/ldb-1.1.24/lib/replace/wscript  2015-12-10 12:01:40.000000000 +0100
@@ -14,7 +14,7 @@
 sys.path.insert(0, srcdir + '/buildtools/wafsamba')
 
 import wafsamba, samba_dist
-import Options
+import Options, Utils
 
 samba_dist.DIST_DIRS('lib/replace buildtools:buildtools 
third_party/waf:third_party/waf')
 
@@ -23,7 +23,7 @@
     opt.PRIVATE_EXTENSION_DEFAULT('')
     opt.RECURSE('buildtools/wafsamba')
 
[email protected]
[email protected]_once
 def configure(conf):
     conf.RECURSE('buildtools/wafsamba')
 
@@ -43,7 +43,12 @@
     conf.CHECK_HEADERS('sys/id.h sys/ioctl.h sys/ipc.h sys/mman.h sys/mode.h 
sys/ndir.h sys/priv.h')
     conf.CHECK_HEADERS('sys/resource.h sys/security.h sys/shm.h sys/statfs.h 
sys/statvfs.h sys/termio.h')
     conf.CHECK_HEADERS('sys/vfs.h sys/xattr.h termio.h termios.h sys/file.h')
-    conf.CHECK_HEADERS('sys/ucontext.h sys/wait.h sys/stat.h malloc.h grp.h')
+    conf.CHECK_HEADERS('sys/ucontext.h sys/wait.h sys/stat.h')
+
+    if not conf.CHECK_DECLS('malloc', headers='stdlib.h'):
+        conf.CHECK_HEADERS('malloc.h')
+
+    conf.CHECK_HEADERS('grp.h')
     conf.CHECK_HEADERS('sys/select.h setjmp.h utime.h sys/syslog.h syslog.h')
     conf.CHECK_HEADERS('stdarg.h vararg.h sys/mount.h mntent.h')
     conf.CHECK_HEADERS('stropts.h unix.h string.h strings.h sys/param.h 
limits.h')
@@ -71,7 +76,7 @@
     conf.CHECK_HEADERS('valgrind.h valgrind/valgrind.h valgrind/memcheck.h')
     conf.CHECK_HEADERS('nss_common.h nsswitch.h ns_api.h')
     conf.CHECK_HEADERS('sys/extattr.h sys/ea.h sys/proplist.h sys/cdefs.h')
-    conf.CHECK_HEADERS('utmp.h utmpx.h lastlog.h malloc.h')
+    conf.CHECK_HEADERS('utmp.h utmpx.h lastlog.h')
     conf.CHECK_HEADERS('syscall.h sys/syscall.h inttypes.h')
     conf.CHECK_HEADERS('sys/atomic.h')
     conf.CHECK_HEADERS('libgen.h')
@@ -245,6 +250,10 @@
     conf.CHECK_FUNCS('link readlink symlink realpath snprintf vsnprintf')
     conf.CHECK_FUNCS('asprintf vasprintf setenv unsetenv strnlen strtoull 
__strtoull')
     conf.CHECK_FUNCS('strtouq strtoll __strtoll strtoq memalign 
posix_memalign')
+
+    if conf.CONFIG_SET('HAVE_MEMALIGN'):
+        conf.CHECK_DECLS('memalign', headers='malloc.h')
+
     conf.CHECK_FUNCS('prctl dirname basename')
 
     # libbsd on some platforms provides strlcpy and strlcat
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/ldb-1.1.23/lib/tdb/docs/mutex.txt 
new/ldb-1.1.24/lib/tdb/docs/mutex.txt
--- old/ldb-1.1.23/lib/tdb/docs/mutex.txt       2014-09-16 20:04:31.000000000 
+0200
+++ new/ldb-1.1.24/lib/tdb/docs/mutex.txt       2015-12-10 12:01:40.000000000 
+0100
@@ -8,11 +8,11 @@
 linked lists are protected across processes with 1-byte fcntl locks on the
 starting pointer of the linked list representing a hash value.
 
-The external locking API of tdb allows to lock individual records. Instead of
+The external locking API of tdb allows one to lock individual records. Instead 
of
 really locking individual records, the tdb API locks a complete linked list
 with a fcntl lock.
 
-The external locking API of tdb also allows to lock the complete database, and
+The external locking API of tdb also allows one to lock the complete database, 
and
 ctdb uses this facility to freeze databases during a recovery. While the
 so-called allrecord lock is held, all linked lists and all individual records
 are frozen alltogether. Tdb achieves this by locking the complete file range
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/ldb-1.1.23/lib/tevent/tevent_epoll.c 
new/ldb-1.1.24/lib/tevent/tevent_epoll.c
--- old/ldb-1.1.23/lib/tevent/tevent_epoll.c    2014-09-16 20:04:31.000000000 
+0200
+++ new/ldb-1.1.24/lib/tevent/tevent_epoll.c    2015-12-10 12:01:40.000000000 
+0100
@@ -216,7 +216,7 @@
 
 /*
   reopen the epoll handle when our pid changes
-  see http://junkcode.samba.org/ftp/unpacked/junkcode/epoll_fork.c for an 
+  see http://junkcode.samba.org/ftp/unpacked/junkcode/epoll_fork.c for an
   demonstration of why this is needed
  */
 static void epoll_check_reopen(struct epoll_event_context *epoll_ev)
@@ -661,7 +661,7 @@
        }
 
        for (i=0;i<ret;i++) {
-               struct tevent_fd *fde = talloc_get_type(events[i].data.ptr, 
+               struct tevent_fd *fde = talloc_get_type(events[i].data.ptr,
                                                       struct tevent_fd);
                uint16_t flags = 0;
                struct tevent_fd *mpx_fde = NULL;
@@ -888,7 +888,7 @@
 }
 
 /*
-  do a single event loop using the events defined in ev 
+  do a single event loop using the events defined in ev
 */
 static int epoll_event_loop_once(struct tevent_context *ev, const char 
*location)
 {
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/ldb-1.1.23/lib/tevent/tevent_poll.c 
new/ldb-1.1.24/lib/tevent/tevent_poll.c
--- old/ldb-1.1.23/lib/tevent/tevent_poll.c     2014-10-01 11:22:21.000000000 
+0200
+++ new/ldb-1.1.24/lib/tevent/tevent_poll.c     2015-12-10 12:01:40.000000000 
+0100
@@ -498,6 +498,7 @@
        int timeout = -1;
        int poll_errno;
        struct tevent_fd *fde = NULL;
+       struct tevent_fd *next = NULL;
        unsigned i;
 
        if (ev->signal_events && tevent_common_check_signal(ev)) {
@@ -542,11 +543,13 @@
           which ones and call the handler, being careful to allow
           the handler to remove itself when called */
 
-       for (fde = ev->fd_events; fde; fde = fde->next) {
+       for (fde = ev->fd_events; fde; fde = next) {
                uint64_t idx = fde->additional_flags;
                struct pollfd *pfd;
                uint16_t flags = 0;
 
+               next = fde->next;
+
                if (idx == UINT64_MAX) {
                        continue;
                }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/ldb-1.1.23/lib/tevent/wscript 
new/ldb-1.1.24/lib/tevent/wscript
--- old/ldb-1.1.23/lib/tevent/wscript   2015-11-06 14:29:43.000000000 +0100
+++ new/ldb-1.1.24/lib/tevent/wscript   2015-12-10 12:01:40.000000000 +0100
@@ -133,6 +133,9 @@
     '''test tevent'''
     print("The tevent testsuite is part of smbtorture in samba4")
 
+    samba_utils.ADD_LD_LIBRARY_PATH('bin/shared')
+    samba_utils.ADD_LD_LIBRARY_PATH('bin/shared/private')
+
     pyret = samba_utils.RUN_PYTHON_TESTS(['bindings.py'])
     sys.exit(pyret)
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/ldb-1.1.23/tests/python/api.py 
new/ldb-1.1.24/tests/python/api.py
--- old/ldb-1.1.23/tests/python/api.py  2015-11-06 14:30:18.000000000 +0100
+++ new/ldb-1.1.24/tests/python/api.py  2015-12-10 12:01:40.000000000 +0100
@@ -256,6 +256,23 @@
         finally:
             l.delete(ldb.Dn(l, "dc=bar"))
 
+    def test_empty_dn(self):
+        l = ldb.Ldb(filename())
+        self.assertEqual(0, len(l.search()))
+        m = ldb.Message()
+        m.dn = ldb.Dn(l, "dc=empty")
+        l.add(m)
+        rm = l.search()
+        self.assertEqual(1, len(rm))
+        self.assertEqual(set(["dn", "distinguishedName"]), set(rm[0].keys()))
+
+        rm = l.search(m.dn)
+        self.assertEqual(1, len(rm))
+        self.assertEqual(set(["dn", "distinguishedName"]), set(rm[0].keys()))
+        rm = l.search(m.dn, attrs=["blah"])
+        self.assertEqual(1, len(rm))
+        self.assertEqual(0, len(rm[0]))
+
     def test_modify_delete(self):
         l = ldb.Ldb(filename())
         m = ldb.Message()
@@ -270,10 +287,12 @@
             m["bla"] = ldb.MessageElement([], ldb.FLAG_MOD_DELETE, "bla")
             self.assertEqual(ldb.FLAG_MOD_DELETE, m["bla"].flags())
             l.modify(m)
-            rm = l.search(m.dn)[0]
+            rm = l.search(m.dn)
             self.assertEqual(1, len(rm))
+            self.assertEqual(set(["dn", "distinguishedName"]), 
set(rm[0].keys()))
             rm = l.search(m.dn, attrs=["bla"])
-            self.assertEqual(0, len(rm))
+            self.assertEqual(1, len(rm))
+            self.assertEqual(0, len(rm[0]))
         finally:
             l.delete(ldb.Dn(l, "dc=modifydelete"))
 
@@ -291,10 +310,12 @@
             m["bla"] = ldb.MessageElement([], ldb.FLAG_MOD_DELETE, "bla")
             self.assertEqual(ldb.FLAG_MOD_DELETE, m["bla"].flags())
             l.modify(m)
-            rm = l.search(m.dn)[0]
+            rm = l.search(m.dn)
             self.assertEqual(1, len(rm))
+            self.assertEqual(set(["dn", "distinguishedName"]), 
set(rm[0].keys()))
             rm = l.search(m.dn, attrs=["bla"])
-            self.assertEqual(0, len(rm))
+            self.assertEqual(1, len(rm))
+            self.assertEqual(0, len(rm[0]))
         finally:
             l.delete(ldb.Dn(l, "dc=modifydelete"))
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/ldb-1.1.23/third_party/waf/wafadmin/3rdparty/print_commands.py 
new/ldb-1.1.24/third_party/waf/wafadmin/3rdparty/print_commands.py
--- old/ldb-1.1.23/third_party/waf/wafadmin/3rdparty/print_commands.py  
1970-01-01 01:00:00.000000000 +0100
+++ new/ldb-1.1.24/third_party/waf/wafadmin/3rdparty/print_commands.py  
2015-12-10 12:01:40.000000000 +0100
@@ -0,0 +1,25 @@
+#! /usr/bin/env python
+
+"""
+In this case, print the commands being executed as strings
+(the commands are usually lists, so this can be misleading)
+"""
+
+import Build, Utils, Logs
+
+def exec_command(self, cmd, **kw):
+       txt = cmd
+       if isinstance(cmd, list):
+               txt = ' '.join(cmd)
+       Logs.debug('runner: %s' % txt)
+       if self.log:
+               self.log.write('%s\n' % cmd)
+               kw['log'] = self.log
+       try:
+               if not kw.get('cwd', None):
+                       kw['cwd'] = self.cwd
+       except AttributeError:
+               self.cwd = kw['cwd'] = self.bldnode.abspath()
+       return Utils.exec_command(cmd, **kw)
+Build.BuildContext.exec_command = exec_command
+
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/ldb-1.1.23/wscript new/ldb-1.1.24/wscript
--- old/ldb-1.1.23/wscript      2015-11-06 14:30:18.000000000 +0100
+++ new/ldb-1.1.24/wscript      2015-12-10 12:01:40.000000000 +0100
@@ -1,7 +1,7 @@
 #!/usr/bin/env python
 
 APPNAME = 'ldb'
-VERSION = '1.1.23'
+VERSION = '1.1.24'
 
 blddir = 'bin'
 
@@ -13,7 +13,7 @@
     srcdir = srcdir + '/..'
 sys.path.insert(0, srcdir + '/buildtools/wafsamba')
 
-import wafsamba, samba_dist, Options, Utils
+import wafsamba, samba_dist, Utils
 
 samba_dist.DIST_DIRS('''lib/ldb:. lib/replace:lib/replace lib/talloc:lib/talloc
                         lib/tdb:lib/tdb lib/tdb:lib/tdb lib/tevent:lib/tevent
@@ -142,15 +142,15 @@
                                      realname='ldb.so',
                                      cflags='-DPACKAGE_VERSION=\"%s\"' % 
VERSION)
 
-        for env in bld.gen_python_environments(['PKGCONFIGDIR']):
-            bld.SAMBA_SCRIPT('_ldb_text.py',
-                             pattern='_ldb_text.py',
-                             installdir='python')
+            for env in bld.gen_python_environments(['PKGCONFIGDIR']):
+                bld.SAMBA_SCRIPT('_ldb_text.py',
+                                 pattern='_ldb_text.py',
+                                 installdir='python')
 
-            bld.INSTALL_FILES('${PYTHONARCHDIR}', '_ldb_text.py')
+                bld.INSTALL_FILES('${PYTHONARCHDIR}', '_ldb_text.py')
 
     if not bld.CONFIG_SET('USING_SYSTEM_LDB'):
-        if Options.is_install:
+        if bld.is_install:
             modules_dir = bld.EXPAND_VARIABLES('${LDB_MODULESDIR}')
         else:
             # when we run from the source directory, we want to use



Reply via email to