[SCM] Samba Shared Repository - branch v4-9-stable updated
Karolin Seeger
kseeger at samba.org
Thu Dec 20 08:29:36 UTC 2018
The branch, v4-9-stable has been updated
via f1a0c8355e6 VERSION: Disable GIT_SNAPSHOT for the 4.9.4 release.
via 9da8cd023f2 WHATSNEW: Add release notes for Samba 4.9.4.
via d18c5775771 vfs_shadow_copy2: in fstat also convert fsp->fsp_name and fsp->base_fsp->fsp_name
via fa2a9c3be08 s3:smbd: pass down twrp from SMB2_CREATE to filename_convert()
via baf1e0f30fe s3:smbd: add twrp args to filename_convert()
via f8c144fa191 s3:smbd: add twrp processing to filename_convert_internal()
via 88863119323 s3:smbd: prepare filename_convert_internal() for twrp
via 3295cc8b4a5 s3:selftest: add a VSS test reading a stream
via 1f897e6c1d2 s3-vfs: Prevent NULL pointer dereference in vfs_glusterfs.
via e60c9431c6e vfs_shadow_copy2: nicely deal with attempts to open previous version for writing
via 256d488b593 vfs_shadow_copy2: add shadow_copy2_strip_snapshot_converted
via 0e355e3826f vfs_shadow_copy2: add _already_converted arg to shadow_copy2_strip_snapshot_internal()
via 0244de24cfe s3:script/tests: add a test for VSS write behaviour
via 6f8ea0a08ea s4:torture: add a test-suite for VSS
via 1cf55de5ceb vfs_error_inject: add EBADF error
via 8eaf7922410 vfs_error_inject: add pwrite
via f53459c9232 s3:libads: Add net ads leave keep-account option
via 1d0e4511ce1 winbindd: Route predefined domains through the BUILTIN domain child
via ac2c24cc424 winbindd: fix predefined domains routing in find_lookup_domain_from_sid()
via fd91429b529 winbindd: add some braces
via cf7e9d3d90f libcli/security: add dom_sid_lookup_is_predefined_domain()
via 7cc1a8d9caa selftest: test wbinfo -n and --gid-info with "NT Authority"
via 53b2e9aff3a CVE-2018-14629 dns: fix CNAME loop prevention using counter regression
via 850a5521a3b CVE-2018-14629: Tests to expose regression from dns cname loop fix
via 6a549df2419 ctdb-daemon: Exit with error if a database directory does not exist
via b2ef0e08a9b CVE-2018-16853: fix crash in expired passowrd case
via a26e6160b33 CVE-2018-16853: Do not segfault if client is not set
via a2f4d49c1c5 CVE-2018-16853: Add a test to verify s4u2self doesn't crash
via 09f9bb28371 CVE-2018-16853: The ticket in check_policy_as can actually be a TGS
via d2a6e3e1bb4 CVE-2018-16853: Fix kinit test on system lacking ldbsearch
via 2332c99cba7 libcli/smb: don't overwrite status code
via 739ce2c7335 s4:torture/smb2/session: test smbXcli_session_set_disconnect_expired() works
via f678c6f06f0 ldb_controls: Add some talloc error checking for controls
via f4105adc285 sync_passwords: Remove dirsync cookie logging for continuous operation
via 517df6d3da3 dirsync: Allow arbitrary length cookies
via a816ca4004a PEP8: fix E231: missing whitespace after ','
via b3d376b7d4d VERSION: Bump version up to 4.9.4.
via 9e05ff6b9bf Merge tag 'samba-4.9.3' into v4-9-test
via 7cd5db7a63d ctdb-tests: Make the debug hung script test cope with unreadable stacks
via 041e0945cb5 s3:smb2_sesssetup: check session_info security level before it gets talloc_move'd
via 77cf7167374 s4:torture/smb2/session: session reauth response must be signed
via f2c456aa1b7 s4:torture/smb2/session: add force_signing to test_session_expire1i
via 2b164eca304 s4:torture/smb2/session: require a signed session setup reauth response
via ff0db7ec9c2 s4:torture/smb2/session: invalidate credential cache
via 6c3577a5885 libcli/smb: use require_signed_response in smb2cli_conn_dispatch_incoming()
via 6ca7a8a2ffb libcli/smb: defer singing check a little bit
via cd8ea322a32 libcli/smb: maintain require_signed_response in smbXcli_req_state
via 4f5af7ba729 libcli/smb: add smb2cli_session_require_signed_response()
via 052df0f679d s3:selftest: also run smb2.session torture testsuite against ad_member
via e71252ecb2b s3:selftest: split "raw.session" and "smb2.session"
via 299e6edd0e6 torture: Fix the 32-bit build
via 5420863dd11 vfs_fruit: validation of writes on AFP_AfpInfo stream
via 4672656d9e1 vfs_fruit: move a comment to the right place
via b6585b6fa67 s4:torture/vfs/fruit: torture writing AFP_AfpInfo stream
via 7f8740c0acf winbindd: Fix crash when taking profiles
via 7a542190501 lib:util: Fix DEBUGCLASS pointer initializiation
via 424d4d2b408 VERSION: Bump version up to 4.9.3...
from 40c057c900a VERSION: Disable GIT_SNAPSHOT for the 4.9.3 release.
https://git.samba.org/?p=samba.git;a=shortlog;h=v4-9-stable
- Log -----------------------------------------------------------------
-----------------------------------------------------------------------
Summary of changes:
VERSION | 2 +-
WHATSNEW.txt | 83 +++++-
ctdb/server/ctdbd.c | 20 ++
ctdb/tests/simple/90_debug_hung_script.sh | 17 +-
docs-xml/manpages/net.8.xml | 9 +-
lib/ldb/common/ldb_controls.c | 108 +++++++-
lib/util/debug.c | 4 +-
libcli/security/dom_sid.h | 1 +
libcli/security/util_sid.c | 33 +++
libcli/smb/smbXcli_base.c | 49 +++-
libcli/smb/smbXcli_base.h | 2 +
nsswitch/tests/test_wbinfo.sh | 18 ++
python/samba/netcmd/user.py | 9 +-
python/samba/tests/dns.py | 101 +++++++
selftest/knownfail.d/dns | 14 +-
selftest/target/Samba3.pm | 9 +
source3/libnet/libnet_join.c | 2 +
source3/modules/vfs_error_inject.c | 19 ++
source3/modules/vfs_fruit.c | 86 ++++--
source3/modules/vfs_glusterfs.c | 176 ++++++++++--
source3/modules/vfs_shadow_copy2.c | 230 ++++++++++++++--
source3/rpc_server/srvsvc/srv_srvsvc_nt.c | 2 +
source3/script/tests/test_shadow_copy_torture.sh | 114 ++++++++
source3/selftest/tests.py | 9 +-
source3/smbd/filename.c | 32 ++-
source3/smbd/nttrans.c | 4 +
source3/smbd/open.c | 1 +
source3/smbd/proto.h | 1 +
source3/smbd/reply.c | 15 +
source3/smbd/smb2_create.c | 30 +-
source3/smbd/smb2_query_directory.c | 1 +
source3/smbd/smb2_sesssetup.c | 8 +-
source3/smbd/trans2.c | 8 +
source3/utils/net.c | 3 +-
source3/utils/net.h | 1 +
source3/utils/net_ads.c | 9 +-
source3/winbindd/winbindd.c | 3 +-
source3/winbindd/winbindd_util.c | 37 ++-
source4/dns_server/dns_query.c | 29 +-
source4/kdc/mit-kdb/kdb_samba_policies.c | 24 +-
source4/kdc/mit_samba.c | 7 +-
source4/torture/smb2/create.c | 174 ++++++++++++
source4/torture/smb2/session.c | 141 +++++++++-
source4/torture/smb2/smb2.c | 1 +
source4/torture/vfs/fruit.c | 336 +++++++++++++++++++++++
testprogs/blackbox/test_kinit_mit.sh | 20 +-
46 files changed, 1832 insertions(+), 170 deletions(-)
create mode 100755 source3/script/tests/test_shadow_copy_torture.sh
Changeset truncated at 500 lines:
diff --git a/VERSION b/VERSION
index 808d4f3a318..7efe718ebbf 100644
--- a/VERSION
+++ b/VERSION
@@ -25,7 +25,7 @@
########################################################
SAMBA_VERSION_MAJOR=4
SAMBA_VERSION_MINOR=9
-SAMBA_VERSION_RELEASE=3
+SAMBA_VERSION_RELEASE=4
########################################################
# If a official release has a serious bug #
diff --git a/WHATSNEW.txt b/WHATSNEW.txt
index fc1541dbbe5..b3a39d3291a 100644
--- a/WHATSNEW.txt
+++ b/WHATSNEW.txt
@@ -1,3 +1,82 @@
+ =============================
+ Release Notes for Samba 4.9.4
+ December 20, 2018
+ =============================
+
+
+Major bug fixes include:
+------------------------
+
+ o dns: Fix CNAME loop prevention using counter regression (bug #13600).
+
+
+Changes since 4.9.3:
+--------------------
+
+o Ralph Boehme <slow at samba.org>
+ * BUG 9175: libcli/smb: Don't overwrite status code.
+ * BUG 12164: wbinfo --group-info 'NT AUTHORITY\System' does not work.
+ * BUG 13661: Session setup reauth fails to sign response.
+ * BUG 13677: vfs_fruit: Validation of writes on AFP_AfpInfo stream.
+ * BUG 13688: vfs_shadow_copy2: Nicely deal with attempts to open previous
+ version for writing.
+ * BUG 13455: Restoring previous version of stream with vfs_shadow_copy2 fails
+ with NT_STATUS_OBJECT_NAME_INVALID fsp->base_fsp->fsp_name.
+
+o Isaac Boukris <iboukris at gmail.com>
+ * BUG 13571: CVE-2018-16853: Fix S4U2Self crash with MIT KDC build.
+
+o Günther Deschner <gd at samba.org>
+ * BUG 13708: s3-vfs: Prevent NULL pointer dereference in vfs_glusterfs.
+
+o Joe Guo <joeg at catalyst.net.nz>
+ * PEP8: fix E231: missing whitespace after ','.
+
+o Volker Lendecke <vl at samba.org>
+ * BUG 13629: winbindd: Fix crash when taking profiles.
+
+o Stefan Metzmacher <metze at samba.org>
+ * BUG 13600: CVE-2018-14629 dns: Fix CNAME loop prevention using counter
+ regression.
+
+o Garming Sam <garming at catalyst.net.nz>
+ * BUG 13686: 'samba-tool user syscpasswords' fails on a domain with many DCs.
+
+o Andreas Schneider <asn at samba.org>
+ * BUG 13571: CVE-2018-16853: Do not segfault if client is not set.
+ * BUG 13679: lib:util: Fix DEBUGCLASS pointer initializiation.
+
+o Martin Schwenke <martin at meltin.net>
+ * BUG 13696: ctdb-daemon: Exit with error if a database directory does not
+ exist.
+
+o Justin Stephenson <jstephen at redhat.com>
+ * BUG 13498: s3:libads: Add net ads leave keep-account option.
+
+
+#######################################
+Reporting bugs & Development Discussion
+#######################################
+
+Please discuss this release on the samba-technical mailing list or by
+joining the #samba-technical IRC channel on irc.freenode.net.
+
+If you do report problems then please try to send high quality
+feedback. If you don't provide vital information to help us track down
+the problem then you will probably be ignored. All bug reports should
+be filed under the "Samba 4.1 and newer" product in the project's Bugzilla
+database (https://bugzilla.samba.org/).
+
+
+======================================================================
+== Our Code, Our Bugs, Our Responsibility.
+== The Samba Team
+======================================================================
+
+
+Release notes for older releases follow:
+----------------------------------------
+
=============================
Release Notes for Samba 4.9.3
November 27, 2018
@@ -122,8 +201,8 @@ database (https://bugzilla.samba.org/).
======================================================================
-Release notes for older releases follow:
-----------------------------------------
+----------------------------------------------------------------------
+
=============================
Release Notes for Samba 4.9.2
diff --git a/ctdb/server/ctdbd.c b/ctdb/server/ctdbd.c
index 721347c4733..45519a7fc3d 100644
--- a/ctdb/server/ctdbd.c
+++ b/ctdb/server/ctdbd.c
@@ -299,8 +299,28 @@ int main(int argc, const char *argv[])
*/
ctdb->db_directory = ctdb_config.dbdir_volatile;
+ ok = directory_exist(ctdb->db_directory);
+ if (! ok) {
+ D_ERR("Volatile database directory %s does not exist\n",
+ ctdb->db_directory);
+ goto fail;
+ }
+
ctdb->db_directory_persistent = ctdb_config.dbdir_persistent;
+ ok = directory_exist(ctdb->db_directory_persistent);
+ if (! ok) {
+ D_ERR("Persistent database directory %s does not exist\n",
+ ctdb->db_directory_persistent);
+ goto fail;
+ }
+
ctdb->db_directory_state = ctdb_config.dbdir_state;
+ ok = directory_exist(ctdb->db_directory_state);
+ if (! ok) {
+ D_ERR("State database directory %s does not exist\n",
+ ctdb->db_directory_state);
+ goto fail;
+ }
if (ctdb_config.lock_debug_script != NULL) {
ret = setenv("CTDB_DEBUG_LOCKS",
diff --git a/ctdb/tests/simple/90_debug_hung_script.sh b/ctdb/tests/simple/90_debug_hung_script.sh
index 846188fc716..8b8e22b3239 100755
--- a/ctdb/tests/simple/90_debug_hung_script.sh
+++ b/ctdb/tests/simple/90_debug_hung_script.sh
@@ -61,9 +61,21 @@ wait_until 60 onnode $test_node test -s "$debug_output"
echo "Checking output of hung script debugging..."
try_command_on_node -v $test_node cat "$debug_output"
+hung_script_output="$out"
+
+# Can we actually read kernel stacks
+if try_command_on_node $test_node "cat /proc/$$/stack >/dev/null 2>&1" ; then
+ stackpat='
+---- Stack trace of interesting process [0-9]*\\[sleep\\] ----
+[<[0-9a-f]*>] .*sleep+.*
+'
+else
+ stackpat=''
+fi
while IFS="" read pattern ; do
- if grep -- "^${pattern}\$" <<<"$out" >/dev/null ; then
+ [ -n "$pattern" ] || continue
+ if grep -- "^${pattern}\$" <<<"$hung_script_output" >/dev/null ; then
printf 'GOOD: output contains "%s"\n' "$pattern"
else
printf 'BAD: output does not contain "%s"\n' "$pattern"
@@ -75,8 +87,7 @@ done <<EOF
pstree -p -a .*:
00\\\\.test\\\\.script,.*
*\`-sleep,.*
----- Stack trace of interesting process [0-9]*\\\\[sleep\\\\] ----
-[<[0-9a-f]*>] .*sleep+.*
+${stackpat}
---- ctdb scriptstatus monitor: ----
00\\.test *TIMEDOUT.*
*OUTPUT: Sleeping for [0-9]* seconds\\\\.\\\\.\\\\.
diff --git a/docs-xml/manpages/net.8.xml b/docs-xml/manpages/net.8.xml
index 3154ee5ff85..d2bcd24c502 100644
--- a/docs-xml/manpages/net.8.xml
+++ b/docs-xml/manpages/net.8.xml
@@ -377,6 +377,13 @@
</para></listitem>
</varlistentry>
+ <varlistentry>
+ <term>--keep-account</term>
+ <listitem><para>Prevent the machine account removal as
+ part of "net ads leave".
+ </para></listitem>
+ </varlistentry>
+
&stdarg.encrypt;
&popt.common.samba.client;
@@ -1276,7 +1283,7 @@ against an NT4 Domain Controller.
</refsect2>
<refsect2>
-<title>ADS LEAVE</title>
+<title>ADS LEAVE [--keep-account]</title>
<para>Make the remote host leave the domain it is part of. </para>
diff --git a/lib/ldb/common/ldb_controls.c b/lib/ldb/common/ldb_controls.c
index a83768a352c..e0f0eb48f3a 100644
--- a/lib/ldb/common/ldb_controls.c
+++ b/lib/ldb/common/ldb_controls.c
@@ -520,6 +520,7 @@ struct ldb_control *ldb_parse_control_from_string(struct ldb_context *ldb, TALLO
control->ctxid_len);
if (control->contextId == NULL) {
ldb_oom(ldb);
+ talloc_free(ctrl);
return NULL;
}
} else {
@@ -534,13 +535,20 @@ struct ldb_control *ldb_parse_control_from_string(struct ldb_context *ldb, TALLO
if (LDB_CONTROL_CMP(control_strings, LDB_CONTROL_DIRSYNC_NAME) == 0) {
struct ldb_dirsync_control *control;
const char *p;
- char cookie[1024];
+ char *cookie = NULL;
int crit, max_attrs, ret;
uint32_t flags;
- cookie[0] = '\0';
+ cookie = talloc_zero_array(ctrl, char,
+ strlen(control_strings) + 1);
+ if (cookie == NULL) {
+ ldb_oom(ldb);
+ talloc_free(ctrl);
+ return NULL;
+ }
+
p = &(control_strings[sizeof(LDB_CONTROL_DIRSYNC_NAME)]);
- ret = sscanf(p, "%d:%u:%d:%1023[^$]", &crit, &flags, &max_attrs, cookie);
+ ret = sscanf(p, "%d:%u:%d:%[^$]", &crit, &flags, &max_attrs, cookie);
if ((ret < 3) || (crit < 0) || (crit > 1) || (max_attrs < 0)) {
ldb_set_errstring(ldb,
@@ -561,6 +569,11 @@ struct ldb_control *ldb_parse_control_from_string(struct ldb_context *ldb, TALLO
ctrl->oid = LDB_CONTROL_DIRSYNC_OID;
ctrl->critical = crit;
control = talloc(ctrl, struct ldb_dirsync_control);
+ if (control == NULL) {
+ ldb_oom(ldb);
+ talloc_free(ctrl);
+ return NULL;
+ }
control->flags = flags;
control->max_attributes = max_attrs;
if (*cookie) {
@@ -575,6 +588,7 @@ struct ldb_control *ldb_parse_control_from_string(struct ldb_context *ldb, TALLO
control->cookie = (char *)talloc_memdup(control, cookie, control->cookie_len);
if (control->cookie == NULL) {
ldb_oom(ldb);
+ talloc_free(ctrl);
return NULL;
}
} else {
@@ -582,17 +596,25 @@ struct ldb_control *ldb_parse_control_from_string(struct ldb_context *ldb, TALLO
control->cookie_len = 0;
}
ctrl->data = control;
+ TALLOC_FREE(cookie);
return ctrl;
}
if (LDB_CONTROL_CMP(control_strings, LDB_CONTROL_DIRSYNC_EX_NAME) == 0) {
struct ldb_dirsync_control *control;
const char *p;
- char cookie[1024];
+ char *cookie = NULL;
int crit, max_attrs, ret;
uint32_t flags;
- cookie[0] = '\0';
+ cookie = talloc_zero_array(ctrl, char,
+ strlen(control_strings) + 1);
+ if (cookie == NULL) {
+ ldb_oom(ldb);
+ talloc_free(ctrl);
+ return NULL;
+ }
+
p = &(control_strings[sizeof(LDB_CONTROL_DIRSYNC_EX_NAME)]);
ret = sscanf(p, "%d:%u:%d:%1023[^$]", &crit, &flags, &max_attrs, cookie);
@@ -615,6 +637,11 @@ struct ldb_control *ldb_parse_control_from_string(struct ldb_context *ldb, TALLO
ctrl->oid = LDB_CONTROL_DIRSYNC_EX_OID;
ctrl->critical = crit;
control = talloc(ctrl, struct ldb_dirsync_control);
+ if (control == NULL) {
+ ldb_oom(ldb);
+ talloc_free(ctrl);
+ return NULL;
+ }
control->flags = flags;
control->max_attributes = max_attrs;
if (*cookie) {
@@ -630,6 +657,7 @@ struct ldb_control *ldb_parse_control_from_string(struct ldb_context *ldb, TALLO
control->cookie = (char *)talloc_memdup(control, cookie, control->cookie_len);
if (control->cookie == NULL) {
ldb_oom(ldb);
+ talloc_free(ctrl);
return NULL;
}
} else {
@@ -637,6 +665,7 @@ struct ldb_control *ldb_parse_control_from_string(struct ldb_context *ldb, TALLO
control->cookie_len = 0;
}
ctrl->data = control;
+ TALLOC_FREE(cookie);
return ctrl;
}
@@ -662,6 +691,11 @@ struct ldb_control *ldb_parse_control_from_string(struct ldb_context *ldb, TALLO
ctrl->oid = LDB_CONTROL_ASQ_OID;
ctrl->critical = crit;
control = talloc(ctrl, struct ldb_asq_control);
+ if (control == NULL) {
+ ldb_oom(ldb);
+ talloc_free(ctrl);
+ return NULL;
+ }
control->request = 1;
control->source_attribute = talloc_strdup(control, attr);
control->src_attr_len = strlen(attr);
@@ -693,6 +727,11 @@ struct ldb_control *ldb_parse_control_from_string(struct ldb_context *ldb, TALLO
control = NULL;
} else {
control = talloc(ctrl, struct ldb_extended_dn_control);
+ if (control == NULL) {
+ ldb_oom(ldb);
+ talloc_free(ctrl);
+ return NULL;
+ }
control->type = type;
}
@@ -723,6 +762,12 @@ struct ldb_control *ldb_parse_control_from_string(struct ldb_context *ldb, TALLO
ctrl->oid = LDB_CONTROL_SD_FLAGS_OID;
ctrl->critical = crit;
control = talloc(ctrl, struct ldb_sd_flags_control);
+ if (control == NULL) {
+ ldb_oom(ldb);
+ talloc_free(ctrl);
+ return NULL;
+ }
+
control->secinfo_flags = secinfo_flags;
ctrl->data = control;
@@ -749,6 +794,12 @@ struct ldb_control *ldb_parse_control_from_string(struct ldb_context *ldb, TALLO
ctrl->oid = LDB_CONTROL_SEARCH_OPTIONS_OID;
ctrl->critical = crit;
control = talloc(ctrl, struct ldb_search_options_control);
+ if (control == NULL) {
+ ldb_oom(ldb);
+ talloc_free(ctrl);
+ return NULL;
+ }
+
control->search_options = search_options;
ctrl->data = control;
@@ -865,6 +916,12 @@ struct ldb_control *ldb_parse_control_from_string(struct ldb_context *ldb, TALLO
ctrl->oid = LDB_CONTROL_PAGED_RESULTS_OID;
ctrl->critical = crit;
control = talloc(ctrl, struct ldb_paged_control);
+ if (control == NULL) {
+ ldb_oom(ldb);
+ talloc_free(ctrl);
+ return NULL;
+ }
+
control->size = size;
if (cookie[0] != '\0') {
int len = ldb_base64_decode(cookie);
@@ -879,6 +936,7 @@ struct ldb_control *ldb_parse_control_from_string(struct ldb_context *ldb, TALLO
control->cookie = talloc_memdup(control, cookie, control->cookie_len);
if (control->cookie == NULL) {
ldb_oom(ldb);
+ talloc_free(ctrl);
return NULL;
}
} else {
@@ -912,12 +970,36 @@ struct ldb_control *ldb_parse_control_from_string(struct ldb_context *ldb, TALLO
ctrl->oid = LDB_CONTROL_SERVER_SORT_OID;
ctrl->critical = crit;
control = talloc_array(ctrl, struct ldb_server_sort_control *, 2);
+ if (control == NULL) {
+ ldb_oom(ldb);
+ talloc_free(ctrl);
+ return NULL;
+ }
+
control[0] = talloc(control, struct ldb_server_sort_control);
+ if (control[0] == NULL) {
+ ldb_oom(ldb);
+ talloc_free(ctrl);
+ return NULL;
+ }
+
control[0]->attributeName = talloc_strdup(control, attr);
- if (rule[0])
+ if (control[0]->attributeName == NULL) {
+ ldb_oom(ldb);
+ talloc_free(ctrl);
+ return NULL;
+ }
+
+ if (rule[0]) {
control[0]->orderingRule = talloc_strdup(control, rule);
- else
+ if (control[0]->orderingRule == NULL) {
+ ldb_oom(ldb);
+ talloc_free(ctrl);
+ return NULL;
+ }
+ } else {
control[0]->orderingRule = NULL;
+ }
control[0]->reverse = rev;
control[1] = NULL;
ctrl->data = control;
@@ -1179,7 +1261,19 @@ struct ldb_control *ldb_parse_control_from_string(struct ldb_context *ldb, TALLO
ctrl->oid = LDB_CONTROL_VERIFY_NAME_OID;
ctrl->critical = crit;
control = talloc(ctrl, struct ldb_verify_name_control);
+ if (control == NULL) {
+ ldb_oom(ldb);
+ talloc_free(ctrl);
+ return NULL;
+ }
+
control->gc = talloc_strdup(control, gc);
+ if (control->gc == NULL) {
+ ldb_oom(ldb);
+ talloc_free(ctrl);
+ return NULL;
+ }
+
control->gc_len = strlen(gc);
control->flags = flags;
ctrl->data = control;
diff --git a/lib/util/debug.c b/lib/util/debug.c
index d41e0f99c77..847ec1f0a0c 100644
--- a/lib/util/debug.c
+++ b/lib/util/debug.c
@@ -557,10 +557,10 @@ static const char *default_classname_table[] = {
* This is to allow reading of DEBUGLEVEL_CLASS before the debug
* system has been initialized.
*/
-static const int debug_class_list_initial[ARRAY_SIZE(default_classname_table)];
+static int debug_class_list_initial[ARRAY_SIZE(default_classname_table)];
static size_t debug_num_classes = 0;
-int *DEBUGLEVEL_CLASS = discard_const_p(int, debug_class_list_initial);
+int *DEBUGLEVEL_CLASS = debug_class_list_initial;
/* -------------------------------------------------------------------------- **
diff --git a/libcli/security/dom_sid.h b/libcli/security/dom_sid.h
index d9f4b3fc8a6..491fc0699f4 100644
--- a/libcli/security/dom_sid.h
+++ b/libcli/security/dom_sid.h
@@ -74,6 +74,7 @@ NTSTATUS dom_sid_lookup_predefined_sid(const struct dom_sid *sid,
enum lsa_SidType *type,
const struct dom_sid **authority_sid,
const char **authority_name);
+bool dom_sid_lookup_is_predefined_domain(const char *domain);
int dom_sid_compare_auth(const struct dom_sid *sid1,
const struct dom_sid *sid2);
diff --git a/libcli/security/util_sid.c b/libcli/security/util_sid.c
index af04dff1325..531d3809565 100644
--- a/libcli/security/util_sid.c
+++ b/libcli/security/util_sid.c
@@ -879,6 +879,39 @@ NTSTATUS dom_sid_lookup_predefined_name(const char *name,
return NT_STATUS_NONE_MAPPED;
}
+bool dom_sid_lookup_is_predefined_domain(const char *domain)
+{
+ size_t di;
+ bool match;
+
+ if (domain == NULL) {
+ domain = "";
+ }
+
+ match = strequal(domain, "");
+ if (match) {
+ /*
+ * Strange, but that's what W2012R2 does.
--
Samba Shared Repository
More information about the samba-cvs
mailing list