From 4dbf60eb2ce0d84fb571ee3a4da0a8adcb48e37c Mon Sep 17 00:00:00 2001 From: Dmitriy Dolovov Date: Tue, 4 Feb 2020 14:51:38 +0700 Subject: [PATCH] Fix: Load properties in konan Distribution in safe way Issue #KT-36333 --- .../kotlin/konan/target/Distribution.kt | 23 +++++++++++++------ 1 file changed, 16 insertions(+), 7 deletions(-) diff --git a/native/utils/src/org/jetbrains/kotlin/konan/target/Distribution.kt b/native/utils/src/org/jetbrains/kotlin/konan/target/Distribution.kt index cef3db9d272..d99f92f3b43 100644 --- a/native/utils/src/org/jetbrains/kotlin/konan/target/Distribution.kt +++ b/native/utils/src/org/jetbrains/kotlin/konan/target/Distribution.kt @@ -6,6 +6,7 @@ package org.jetbrains.kotlin.konan.target import org.jetbrains.kotlin.konan.file.File +import org.jetbrains.kotlin.konan.properties.Properties import org.jetbrains.kotlin.konan.properties.keepOnlyDefaultProfiles import org.jetbrains.kotlin.konan.properties.loadProperties import org.jetbrains.kotlin.konan.util.DependencyDirectories @@ -51,17 +52,25 @@ class Distribution( preconfiguredPropertyFiles(genericName) + userPropertyFiles(genericName) val properties by lazy { - val loaded = File(mainPropertyFileName).loadProperties() - HostManager.knownTargetTemplates.forEach { - additionalPropertyFiles(it).forEach { - val additional = it.loadProperties() - loaded.putAll(additional) + val result = Properties() + + fun loadPropertiesSafely(source: File) { + if (source.isFile) result.putAll(source.loadProperties()) + } + + loadPropertiesSafely(File(mainPropertyFileName)) + + HostManager.knownTargetTemplates.forEach { targetTemplate -> + additionalPropertyFiles(targetTemplate).forEach { + loadPropertiesSafely(it) } } + if (onlyDefaultProfiles) { - loaded.keepOnlyDefaultProfiles() + result.keepOnlyDefaultProfiles() } - loaded + + result } val compilerVersion by lazy { properties["compilerVersion"]?.toString() }