From ded20c162d9bbab5f0447486c3b10792fe1128a4 Mon Sep 17 00:00:00 2001 From: TheAssassin Date: Wed, 14 Nov 2018 10:59:17 +0100 Subject: [PATCH] Recognize broken section headings, mk. 3 --- src/core/desktopfile/desktopfilereader.cpp | 3 +++ tests/core/test_desktopfilereader.cpp | 8 ++++++++ 2 files changed, 11 insertions(+) diff --git a/src/core/desktopfile/desktopfilereader.cpp b/src/core/desktopfile/desktopfilereader.cpp index 3ef0e77..110b107 100644 --- a/src/core/desktopfile/desktopfilereader.cpp +++ b/src/core/desktopfile/desktopfilereader.cpp @@ -55,6 +55,9 @@ namespace linuxdeploy { if (len > 0 && !((len >= 2 && (line[0] == '/' && line[1] == '/')) || (len >= 1 && line[0] == '#'))) { if (line[0] == '[') { + if (line.find_last_of('[') != 0) + throw ParseError("Multiple opening [ brackets"); + // this line apparently introduces a new section auto closingBracketPos = line.find(']'); auto lastClosingBracketPos = line.find_last_of(']'); diff --git a/tests/core/test_desktopfilereader.cpp b/tests/core/test_desktopfilereader.cpp index 8d8ea4a..906d688 100644 --- a/tests/core/test_desktopfilereader.cpp +++ b/tests/core/test_desktopfilereader.cpp @@ -217,3 +217,11 @@ TEST_F(DesktopFileReaderFixture, testReadBrokenSectionHeaderTooManyClosingBracke ASSERT_THROW(DesktopFileReader reader(ins), ParseError); } + +TEST_F(DesktopFileReaderFixture, testReadBrokenSectionHeaderTooManyOpeningBrackets) { + std::stringstream ins; + ins << "[[Desktop Entry]" << std::endl + << "test=test" << std::endl; + + ASSERT_THROW(DesktopFileReader reader(ins), ParseError); +}