From 65bd8694518cfb24f1b78166eeeabd64f016633e Mon Sep 17 00:00:00 2001 From: reuk Date: Tue, 17 Aug 2021 16:33:28 +0100 Subject: [PATCH] Projucer: Properly escape android app names containing apostrophes --- .../jucer_ProjectExport_Android.h | 22 +++++++++---------- 1 file changed, 10 insertions(+), 12 deletions(-) diff --git a/extras/Projucer/Source/ProjectSaving/jucer_ProjectExport_Android.h b/extras/Projucer/Source/ProjectSaving/jucer_ProjectExport_Android.h index dce7c3c525..cd791fc349 100644 --- a/extras/Projucer/Source/ProjectSaving/jucer_ProjectExport_Android.h +++ b/extras/Projucer/Source/ProjectSaving/jucer_ProjectExport_Android.h @@ -589,7 +589,7 @@ private: MemoryOutputStream mo; mo.setNewLineString (getNewLineString()); - mo << "rootProject.name = " << "\'" << projectName << "\'" << newLine; + mo << "rootProject.name = " << "\'" << escapeQuotes (projectName) << "\'" << newLine; mo << (isLibrary() ? "include ':lib'" : "include ':app'"); auto extraContent = androidGradleSettingsContent.get().toString(); @@ -1281,6 +1281,11 @@ private: return "android-" + androidMinimumSDK.get().toString(); } + static String escapeQuotes (const String& str) + { + return str.replace ("'", "\\'").replace ("\"", "\\\""); + } + //============================================================================== void writeStringsXML (const File& folder) const { @@ -1289,7 +1294,7 @@ private: auto& cfg = dynamic_cast (*config); String customStringsXmlContent ("\n"); - customStringsXmlContent << "" << projectName << "\n"; + customStringsXmlContent << "" << escapeQuotes (projectName) << "\n"; customStringsXmlContent << cfg.getCustomStringsXml(); customStringsXmlContent << "\n"; @@ -1579,20 +1584,13 @@ private: for (int i = 0; i < defs.size(); ++i) { - auto escaped = "\"-D" + defs.getAllKeys()[i]; + auto escaped = "[[-D" + defs.getAllKeys()[i]; auto value = defs.getAllValues()[i]; if (value.isNotEmpty()) - { - value = value.replace ("\"", "\\\""); - - if (value.containsChar (L' ') && ! value.startsWith ("\\\"") && ! value.endsWith ("\\\"")) - value = "\\\"" + value + "\\\""; - escaped += ("=" + value); - } - escapedDefs.add (escaped + "\""); + escapedDefs.add (escaped + "]]"); } return escapedDefs; @@ -1603,7 +1601,7 @@ private: StringArray escaped; for (auto& flag : flags) - escaped.add ("\"" + flag + "\""); + escaped.add ("[[" + flag + "]]"); return escaped; }