diff options
author | Andrew Bartlett <abartlet@samba.org> | 2013-09-18 14:27:26 -0700 |
---|---|---|
committer | Andrew Bartlett <abartlet@samba.org> | 2013-09-19 12:25:41 -0700 |
commit | a623359fb8a54083b81436d14b7ba022c11efb18 (patch) | |
tree | b7fbf88263da9ee7144c6c7497ee577bf2f66b52 /source4/dsdb | |
parent | 6965f918c04328535c55a0ef9b7fe6392fba193a (diff) | |
download | samba-a623359fb8a54083b81436d14b7ba022c11efb18.tar.gz samba-a623359fb8a54083b81436d14b7ba022c11efb18.tar.bz2 samba-a623359fb8a54083b81436d14b7ba022c11efb18.zip |
python/drs: Ensure to pass in the local invocationID during the domain join
This ensures (and asserts) that we never write an all-zero GUID as an invocationID
to the database in replPropertyMetaData.
Andrew Bartlett
Signed-off-by: Andrew Bartlett <abartlet@samba.org>
Reviewed-by: Stefan Metzmacher <metze@samba.org>
Diffstat (limited to 'source4/dsdb')
-rw-r--r-- | source4/dsdb/common/util.c | 2 | ||||
-rw-r--r-- | source4/dsdb/pydsdb.c | 5 |
2 files changed, 7 insertions, 0 deletions
diff --git a/source4/dsdb/common/util.c b/source4/dsdb/common/util.c index 7a243c3d37..55bd73e424 100644 --- a/source4/dsdb/common/util.c +++ b/source4/dsdb/common/util.c @@ -1302,6 +1302,7 @@ const struct GUID *samdb_ntds_invocation_id(struct ldb_context *ldb) /* see if we have a cached copy */ invocation_id = (struct GUID *)ldb_get_opaque(ldb, "cache.invocation_id"); if (invocation_id) { + SMB_ASSERT(!GUID_all_zero(invocation_id)); return invocation_id; } @@ -1362,6 +1363,7 @@ bool samdb_set_ntds_invocation_id(struct ldb_context *ldb, const struct GUID *in goto failed; } + SMB_ASSERT(!GUID_all_zero(invocation_id_in)); *invocation_id_new = *invocation_id_in; /* cache the domain_sid in the ldb */ diff --git a/source4/dsdb/pydsdb.c b/source4/dsdb/pydsdb.c index 99e239e60c..c9e80c2f1b 100644 --- a/source4/dsdb/pydsdb.c +++ b/source4/dsdb/pydsdb.c @@ -727,6 +727,11 @@ static PyObject *py_dsdb_set_ntds_invocation_id(PyObject *self, PyObject *args) PyErr_LDB_OR_RAISE(py_ldb, ldb); GUID_from_string(PyString_AsString(py_guid), &guid); + if (GUID_all_zero(&guid)) { + PyErr_SetString(PyExc_RuntimeError, "set_ntds_invocation_id rejected due to all-zero invocation ID"); + return NULL; + } + ret = samdb_set_ntds_invocation_id(ldb, &guid); if (!ret) { PyErr_SetString(PyExc_RuntimeError, "set_ntds_invocation_id failed"); |