From 8c21dd8aa994dd2b82949a74d8fa6613e48fd407 Mon Sep 17 00:00:00 2001 From: Faur Ioan-Aurel Date: Fri, 2 Dec 2022 23:12:35 +0200 Subject: [PATCH] Fix: auto close stream open dirs - we also limit the walking depth to just one level. Coder CLI is placed at the root of the tmp dir. - make the walking more resilient to security exceptions --- .../kotlin/com/coder/gateway/sdk/CoderCLIManager.kt | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/src/main/kotlin/com/coder/gateway/sdk/CoderCLIManager.kt b/src/main/kotlin/com/coder/gateway/sdk/CoderCLIManager.kt index 0c2ae625..335d7f6e 100644 --- a/src/main/kotlin/com/coder/gateway/sdk/CoderCLIManager.kt +++ b/src/main/kotlin/com/coder/gateway/sdk/CoderCLIManager.kt @@ -3,6 +3,7 @@ package com.coder.gateway.sdk import com.intellij.openapi.diagnostic.Logger import java.io.InputStream import java.net.URL +import java.nio.file.FileVisitOption import java.nio.file.Files import java.nio.file.Path import java.nio.file.Paths @@ -67,9 +68,14 @@ class CoderCLIManager(url: URL, buildVersion: String) { } fun removeOldCli() { - Files.walk(Path.of(tmpDir)).sorted().map { it.toFile() }.filter { it.name.contains(cliNamePrefix) && !it.name.contains(cliFileName) }.forEach { - logger.info("Removing $it because it is an old coder cli") - it.delete() + val tmpPath = Path.of(tmpDir) + if (Files.isReadable(tmpPath)) { + Files.walk(tmpPath, 1).use { + it.sorted().map { pt -> pt.toFile() }.filter { fl -> fl.name.contains(cliNamePrefix) && !fl.name.contains(cliFileName) }.forEach { fl -> + logger.info("Removing $fl because it is an old coder cli") + fl.delete() + } + } } }