summaryrefslogtreecommitdiff
path: root/python/samba
diff options
context:
space:
mode:
authorDouglas Bagnall <douglas.bagnall@catalyst.net.nz>2018-12-20 16:01:24 +1300
committerAndrew Bartlett <abartlet@samba.org>2019-01-19 19:21:20 +0100
commit7fc60ea55ca56da1a9a37f642bfa03f4da2b45fa (patch)
tree3d67c30c75666813424710adff703b8d58cd060c /python/samba
parent011ee2713f0b5b0236865bc21c171d6e4ce3d108 (diff)
downloadsamba-7fc60ea55ca56da1a9a37f642bfa03f4da2b45fa.tar.gz
samba-7fc60ea55ca56da1a9a37f642bfa03f4da2b45fa.tar.bz2
samba-7fc60ea55ca56da1a9a37f642bfa03f4da2b45fa.zip
python/kcc lib: cope with differently formed repsToFrom
samba-tool visualise reuses these libraries to parse reps from other DCs, and Windows sometimes sends more data than we are expecting Signed-off-by: Douglas Bagnall <douglas.bagnall@catalyst.net.nz> Reviewed-by: Andrew Bartlett <abartlet@samba.org>
Diffstat (limited to 'python/samba')
-rw-r--r--python/samba/kcc/kcc_utils.py21
1 files changed, 16 insertions, 5 deletions
diff --git a/python/samba/kcc/kcc_utils.py b/python/samba/kcc/kcc_utils.py
index 81d381abd99..3e9a988b778 100644
--- a/python/samba/kcc/kcc_utils.py
+++ b/python/samba/kcc/kcc_utils.py
@@ -19,7 +19,8 @@
#
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
-
+from __future__ import print_function
+import sys
import ldb
import uuid
@@ -314,8 +315,13 @@ class NCReplica(NamingContext):
# Possibly no repsFrom if this is a singleton DC
if "repsFrom" in msg:
for value in msg["repsFrom"]:
- rep = RepsFromTo(self.nc_dnstr,
- ndr_unpack(drsblobs.repsFromToBlob, value))
+ try:
+ unpacked = ndr_unpack(drsblobs.repsFromToBlob, value)
+ except RuntimeError as e:
+ print("bad repsFrom NDR: %r" % (value),
+ file=sys.stderr)
+ continue
+ rep = RepsFromTo(self.nc_dnstr, unpacked)
self.rep_repsFrom.append(rep)
def commit_repsFrom(self, samdb, ro=False):
@@ -468,8 +474,13 @@ class NCReplica(NamingContext):
# Possibly no repsTo if this is a singleton DC
if "repsTo" in msg:
for value in msg["repsTo"]:
- rep = RepsFromTo(self.nc_dnstr,
- ndr_unpack(drsblobs.repsFromToBlob, value))
+ try:
+ unpacked = ndr_unpack(drsblobs.repsFromToBlob, value)
+ except RuntimeError as e:
+ print("bad repsTo NDR: %r" % (value),
+ file=sys.stderr)
+ continue
+ rep = RepsFromTo(self.nc_dnstr, unpacked)
self.rep_repsTo.append(rep)
def commit_repsTo(self, samdb, ro=False):