From 38d1b0a097c373ecb5d7f974a5d48b66b8fad72d Mon Sep 17 00:00:00 2001 From: Simon Pichugin Date: Sep 09 2019 11:53:36 +0000 Subject: Issue 50586 - lib389 - Fix DSEldif long line processing Description: When dse.ldif has a very long line inthe attribute value, it puts it to the next line and adds ' '. We should process it correctly in lib389. https://pagure.io/389-ds-base/issue/50586 Reviewed by: mreynolds, mhonek (Thanks!) --- diff --git a/src/lib389/lib389/dseldif.py b/src/lib389/lib389/dseldif.py index 719ba6b..dfe3b91 100644 --- a/src/lib389/lib389/dseldif.py +++ b/src/lib389/lib389/dseldif.py @@ -31,11 +31,18 @@ class DSEldif(object): self.path = os.path.join(ds_paths.config_dir, 'dse.ldif') with open(self.path, 'r') as file_dse: + processed_line = "" for line in file_dse.readlines(): - if line.startswith('dn'): - self._contents.append(line.lower()) + if not line.startswith(' '): + if processed_line: + self._contents.append(processed_line) + + if line.startswith('dn:'): + processed_line = line.lower() + else: + processed_line = line else: - self._contents.append(line) + processed_line = processed_line[:-1] + line[1:] def _update(self): """Update the dse.ldif with a new contents""" @@ -148,4 +155,3 @@ class DSEldif(object): self._instance.log.debug("During replace operation: {}".format(e)) self.add(entry_dn, attr, value) self._update() -