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
