From b20dd800f60d0e0c7edc4e5b0577f07ad6173f05 Mon Sep 17 00:00:00 2001 From: Arman Bilge Date: Tue, 31 May 2022 06:27:03 +0000 Subject: [PATCH 1/2] Remove fake insecure random dependency --- build.sbt | 10 ---------- 1 file changed, 10 deletions(-) diff --git a/build.sbt b/build.sbt index 9dac23df..4cd2320e 100644 --- a/build.sbt +++ b/build.sbt @@ -119,16 +119,6 @@ lazy val runtime = CrossProject( .jvmSettings( Test / fork := true ) - .jsSettings( - scalaJSStage := FastOptStage, - // While not exactlu ideal, this is only used in the invoker to assign a - // unique id to ensure measurements have unique ids. It's never exposed to - // the user and doesn't touch anything sensitve, so we should have no - // issues here. Still, I don't like having this, so we should try to - // replace it. - libraryDependencies += ("org.scala-js" %%% "scalajs-fake-insecure-java-securerandom" % "1.0.0") - .cross(CrossVersion.for3Use2_13) - ) lazy val `runtimeJVM` = runtime.jvm lazy val `runtimeJS` = runtime.js From f9a562b1015306beac4f53e1b273989000e85cee Mon Sep 17 00:00:00 2001 From: Arman Bilge Date: Tue, 31 May 2022 06:45:04 +0000 Subject: [PATCH 2/2] Re-implement randomUUID() on Scala.js --- runtime/js/src/main/scala/scoverage/Platform.scala | 11 +++++++++++ runtime/jvm/src/main/scala/scoverage/Platform.scala | 3 +++ runtime/shared/src/main/scala/scoverage/Invoker.scala | 2 +- 3 files changed, 15 insertions(+), 1 deletion(-) diff --git a/runtime/js/src/main/scala/scoverage/Platform.scala b/runtime/js/src/main/scala/scoverage/Platform.scala index a7deb165..70f7bb07 100644 --- a/runtime/js/src/main/scala/scoverage/Platform.scala +++ b/runtime/js/src/main/scala/scoverage/Platform.scala @@ -17,4 +17,15 @@ object Platform { lazy val Source = SupportSource + def insecureRandomUUID() = { + import scala.util.Random + var msb = Random.nextLong() + var lsb = Random.nextLong() + msb &= 0xffffffffffff0fffL // clear version + msb |= 0x0000000000004000L // set to version 4 + lsb &= 0x3fffffffffffffffL // clear variant + lsb |= 0x8000000000000000L // set to IETF variant + new java.util.UUID(msb, lsb) + } + } diff --git a/runtime/jvm/src/main/scala/scoverage/Platform.scala b/runtime/jvm/src/main/scala/scoverage/Platform.scala index 35c4ebdb..f8e66d43 100644 --- a/runtime/jvm/src/main/scala/scoverage/Platform.scala +++ b/runtime/jvm/src/main/scala/scoverage/Platform.scala @@ -16,4 +16,7 @@ object Platform { type FileFilter = SupportFileFilter lazy val Source = SupportSource + + def insecureRandomUUID() = java.util.UUID.randomUUID() + } diff --git a/runtime/shared/src/main/scala/scoverage/Invoker.scala b/runtime/shared/src/main/scala/scoverage/Invoker.scala index 482749a0..f7615137 100644 --- a/runtime/shared/src/main/scala/scoverage/Invoker.scala +++ b/runtime/shared/src/main/scala/scoverage/Invoker.scala @@ -8,7 +8,7 @@ import scoverage.Platform._ /** @author Stephen Samuel */ object Invoker { - private val runtimeUUID = java.util.UUID.randomUUID() + private val runtimeUUID = Platform.insecureRandomUUID() private val MeasurementsPrefix = "scoverage.measurements." private val threadFiles = new ThreadLocal[mutable.HashMap[String, FileWriter]]