Blob Blame History Raw
From 9e670738044166cdd0bf566325bf610bfb802821 Mon Sep 17 00:00:00 2001
From: Jaroslav Rohel <jrohel@redhat.com>
Date: Mon, 24 Jun 2019 16:34:47 +0200
Subject: [PATCH] [config] ignore trailing blank lines of multiline value (RhBug:1722493)

Parser supports multiline values. Example:
key = value first line
  value second line

If a line starts with whitespaces and it is not a section name,
it is treated as continuation of previous key=value line.

This commit ignores trailing blank lines. So newline characters
are trimmed out from the end of line.
---
 libdnf/utils/iniparser/iniparser.cpp | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/libdnf/utils/iniparser/iniparser.cpp b/libdnf/utils/iniparser/iniparser.cpp
index c77c5ca..14fef74 100644
--- a/libdnf/utils/iniparser/iniparser.cpp
+++ b/libdnf/utils/iniparser/iniparser.cpp
@@ -81,6 +81,9 @@ IniParser::IniParser(std::unique_ptr<std::istream> && inputStream)
 }
 
 void IniParser::trimValue() noexcept {
+    auto end = value.find_last_not_of(DELIMITER);
+    if (end != value.npos)
+        value.resize(end + 1);
     if (value.length() > 1 &&
         value.front() == value.back() &&
         (value.front() == '\"' || value.front() == '\'')) {
--
libgit2 0.28.2