diff options
author | Michal Duda <michal.duda@sonarsource.com> | 2019-06-18 13:38:43 +0200 |
---|---|---|
committer | sonartech <sonartech@sonarsource.com> | 2019-06-28 08:45:00 +0200 |
commit | 9c3628f7f4d5745c010cb2f958129495fdcda632 (patch) | |
tree | 701eebb80614c357f7a8e59028976ddebf971e72 /sonar-scanner-engine | |
parent | 09295555aac7866169029b83e96ecc93df08baec (diff) | |
download | sonarqube-9c3628f7f4d5745c010cb2f958129495fdcda632.tar.gz sonarqube-9c3628f7f4d5745c010cb2f958129495fdcda632.zip |
SONAR-12186 Fix SSF-78
Diffstat (limited to 'sonar-scanner-engine')
2 files changed, 2 insertions, 103 deletions
diff --git a/sonar-scanner-engine/src/main/java/org/sonar/scanner/report/AnalysisContextReportPublisher.java b/sonar-scanner-engine/src/main/java/org/sonar/scanner/report/AnalysisContextReportPublisher.java index ebb8a8facaa..42f9b0ee5a8 100644 --- a/sonar-scanner-engine/src/main/java/org/sonar/scanner/report/AnalysisContextReportPublisher.java +++ b/sonar-scanner-engine/src/main/java/org/sonar/scanner/report/AnalysisContextReportPublisher.java @@ -27,7 +27,6 @@ import java.nio.file.Files; import java.util.Comparator; import java.util.HashMap; import java.util.Map; -import java.util.Properties; import java.util.TreeSet; import org.apache.commons.lang.StringUtils; import org.sonar.api.CoreProperties; @@ -36,8 +35,6 @@ import org.sonar.api.batch.fs.internal.AbstractProjectOrModule; import org.sonar.api.batch.fs.internal.DefaultInputModule; import org.sonar.api.batch.fs.internal.InputModuleHierarchy; import org.sonar.api.utils.System2; -import org.sonar.api.utils.log.Logger; -import org.sonar.api.utils.log.Loggers; import org.sonar.core.platform.PluginInfo; import org.sonar.scanner.bootstrap.GlobalServerSettings; import org.sonar.scanner.bootstrap.ScannerPluginRepository; @@ -51,8 +48,6 @@ public class AnalysisContextReportPublisher { private static final String KEY_VALUE_FORMAT = " - %s=%s"; - private static final Logger LOG = Loggers.get(AnalysisContextReportPublisher.class); - private static final String ENV_PROP_PREFIX = "env."; private static final String SONAR_PROP_PREFIX = "sonar."; private static final int MAX_WIDTH = 1000; @@ -81,10 +76,6 @@ public class AnalysisContextReportPublisher { } File analysisLog = writer.getFileStructure().analysisLog(); try (BufferedWriter fileWriter = Files.newBufferedWriter(analysisLog.toPath(), StandardCharsets.UTF_8)) { - if (LOG.isDebugEnabled()) { - writeEnvVariables(fileWriter); - writeSystemProps(fileWriter); - } writePlugins(fileWriter); writeGlobalSettings(fileWriter); writeProjectSettings(fileWriter); @@ -101,31 +92,6 @@ public class AnalysisContextReportPublisher { } } - private void writeSystemProps(BufferedWriter fileWriter) throws IOException { - fileWriter.write("System properties:\n"); - Properties sysProps = system.properties(); - for (String prop : new TreeSet<>(sysProps.stringPropertyNames())) { - if (prop.startsWith(SONAR_PROP_PREFIX)) { - continue; - } - fileWriter.append(String.format(KEY_VALUE_FORMAT, prop, sysProps.getProperty(prop))).append('\n'); - } - } - - private void writeEnvVariables(BufferedWriter fileWriter) throws IOException { - fileWriter.append("Environment variables:\n"); - Map<String, String> envVariables = system.envVariables(); - new TreeSet<>(envVariables.keySet()) - .forEach(envKey -> { - try { - String envValue = isSensitiveEnvVariable(envKey) ? "******" : envVariables.get(envKey); - fileWriter.append(String.format(KEY_VALUE_FORMAT, envKey, envValue)).append('\n'); - } catch (IOException e) { - throw new IllegalStateException(e); - } - }); - } - private void writeGlobalSettings(BufferedWriter fileWriter) throws IOException { fileWriter.append("Global server settings:\n"); Map<String, String> props = globalServerSettings.properties(); @@ -199,10 +165,6 @@ public class AnalysisContextReportPublisher { return propKey.startsWith(ENV_PROP_PREFIX) && system.envVariables().containsKey(propKey.substring(ENV_PROP_PREFIX.length())); } - private static boolean isSensitiveEnvVariable(String key) { - return key.contains("_TOKEN") || key.contains("_PASSWORD") || key.contains("_SECURED"); - } - private static boolean isSensitiveProperty(String key) { return key.equals(CoreProperties.LOGIN) || key.contains(".password") || key.contains(".secured") || key.contains(".token"); } diff --git a/sonar-scanner-engine/src/test/java/org/sonar/scanner/report/AnalysisContextReportPublisherTest.java b/sonar-scanner-engine/src/test/java/org/sonar/scanner/report/AnalysisContextReportPublisherTest.java index 961a7dc5053..b883a266c3a 100644 --- a/sonar-scanner-engine/src/test/java/org/sonar/scanner/report/AnalysisContextReportPublisherTest.java +++ b/sonar-scanner-engine/src/test/java/org/sonar/scanner/report/AnalysisContextReportPublisherTest.java @@ -151,8 +151,7 @@ public class AnalysisContextReportPublisherTest { publisher.init(writer); List<String> lines = FileUtils.readLines(writer.getFileStructure().analysisLog(), StandardCharsets.UTF_8); - assertThat(lines).containsExactly("Environment variables:", - "System properties:", + assertThat(lines).containsExactly( "SonarQube plugins:", "Global server settings:", "Project server settings:", @@ -163,67 +162,6 @@ public class AnalysisContextReportPublisherTest { } @Test - public void shouldNotDumpSQPropsInSystemProps() throws Exception { - logTester.setLevel(LoggerLevel.DEBUG); - ScannerReportWriter writer = new ScannerReportWriter(temp.newFolder()); - Properties props = new Properties(); - props.setProperty(COM_FOO, "bar"); - props.setProperty(SONAR_SKIP, "true"); - when(system2.properties()).thenReturn(props); - DefaultInputModule rootModule = new DefaultInputModule(ProjectDefinition.create() - .setBaseDir(temp.newFolder()) - .setWorkDir(temp.newFolder()) - .setProperty("sonar.projectKey", "foo") - .setProperty(COM_FOO, "bar") - .setProperty(SONAR_SKIP, "true")); - when(store.allModules()).thenReturn(singletonList(rootModule)); - when(hierarchy.root()).thenReturn(rootModule); - - publisher.init(writer); - - List<String> lines = FileUtils.readLines(writer.getFileStructure().analysisLog(), StandardCharsets.UTF_8); - assertThat(lines).containsExactly("Environment variables:", - "System properties:", - " - com.foo=bar", - "SonarQube plugins:", - "Global server settings:", - "Project server settings:", - "Project scanner properties:", - " - sonar.projectKey=foo", - " - sonar.skip=true"); - } - - @Test - public void shouldNotDumpEnvTwice() throws Exception { - logTester.setLevel(LoggerLevel.DEBUG); - ScannerReportWriter writer = new ScannerReportWriter(temp.newFolder()); - - Map<String, String> env = new HashMap<>(); - env.put(FOO, "BAR"); - env.put(BIZ, "BAZ"); - when(system2.envVariables()).thenReturn(env); - DefaultInputModule rootModule = new DefaultInputModule(ProjectDefinition.create() - .setBaseDir(temp.newFolder()) - .setWorkDir(temp.newFolder()) - .setProperty("sonar.projectKey", "foo") - .setProperty("env." + FOO, "BAR")); - when(store.allModules()).thenReturn(singletonList(rootModule)); - when(hierarchy.root()).thenReturn(rootModule); - publisher.init(writer); - - String content = FileUtils.readFileToString(writer.getFileStructure().analysisLog(), StandardCharsets.UTF_8); - assertThat(content).containsOnlyOnce(FOO); - assertThat(content).containsOnlyOnce(BIZ); - assertThat(content).containsSubsequence(BIZ, FOO); - - - content = FileUtils.readFileToString(writer.getFileStructure().analysisLog(), StandardCharsets.UTF_8); - assertThat(content).containsOnlyOnce(FOO); - assertThat(content).containsOnlyOnce(BIZ); - assertThat(content).doesNotContain("env." + FOO); - } - - @Test public void shouldNotDumpSensitiveModuleProperties() throws Exception { ScannerReportWriter writer = new ScannerReportWriter(temp.newFolder()); DefaultInputModule rootModule = new DefaultInputModule(ProjectDefinition.create() @@ -314,8 +252,7 @@ public class AnalysisContextReportPublisherTest { publisher.init(writer); List<String> lines = FileUtils.readLines(writer.getFileStructure().analysisLog(), StandardCharsets.UTF_8); - assertThat(lines).containsExactly("Environment variables:", - "System properties:", + assertThat(lines).containsExactly( "SonarQube plugins:", "Global server settings:", "Project server settings:", |