From 63de9b80ffcfd7aa2c58dc16a2dd1970ca0800f0 Mon Sep 17 00:00:00 2001 From: Martin Kosek Date: Fri, 25 Oct 2013 09:00:58 +0200 Subject: Make set_directive and get_directive more strict When set_directive was used for directive "foo" and the word "foo" was detected anywhere on the line (e.g. in a comment, or in an example), it was overwritten which may potentially lead to wrong line being overwritten. Only match the directives on the beginning of the lines, it is safer. https://fedorahosted.org/freeipa/ticket/3974 --- ipaserver/install/installutils.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/ipaserver/install/installutils.py b/ipaserver/install/installutils.py index 8fcb43e9e..c26f072f2 100644 --- a/ipaserver/install/installutils.py +++ b/ipaserver/install/installutils.py @@ -331,7 +331,7 @@ def set_directive(filename, directive, value, quotes=True, separator=' '): fd = open(filename) newfile = [] for line in fd: - if directive in line: + if line.lstrip().startswith(directive): valueset = True if value is not None: if quotes: @@ -359,7 +359,7 @@ def get_directive(filename, directive, separator=' '): """ fd = open(filename, "r") for line in fd: - if directive in line: + if line.lstrip().startswith(directive): line = line.strip() result = line.split(separator, 1)[1] result = result.strip('"') -- cgit