From 0880d030ae7211b9d2e7279195e67f4f5712a69c 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(-) (limited to 'ipaserver') diff --git a/ipaserver/install/installutils.py b/ipaserver/install/installutils.py index 67eabc25..cc53f75c 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