Skip to content

Commit a758598

Browse files
committed
fix: resolve potential collision with threat identifiers
1 parent de12a24 commit a758598

File tree

7 files changed

+51
-37
lines changed

7 files changed

+51
-37
lines changed

CHANGELOG.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,10 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
2020
- Added API for `allChecksFinished` callback into new `RaspExecutionStateEventActions` object
2121
- Added matched permissions to `SuspiciousAppInfo` object when malware detection reason is `suspiciousPermission`
2222

23+
#### Fixed
24+
25+
- Resolved potential collision in threat identifiers
26+
2327
### Android
2428

2529
#### Added

android/src/main/java/com/freeraspreactnative/FreeraspReactNativeModule.kt

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,6 @@ import android.os.Build
44
import android.os.Handler
55
import android.os.HandlerThread
66
import android.os.Looper
7-
import android.util.Log
87
import com.aheaditec.talsec_security.security.api.SuspiciousAppInfo
98
import com.aheaditec.talsec_security.security.api.Talsec
109
import com.aheaditec.talsec_security.security.api.TalsecConfig

android/src/main/java/com/freeraspreactnative/events/BaseRaspEvent.kt

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,4 @@ internal interface BaseRaspEvent {
44
val value: Int
55
val channelName: String
66
val channelKey: String
7-
87
}
9-
10-

android/src/main/java/com/freeraspreactnative/events/RaspExecutionStateEvent.kt

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,18 @@
11
package com.freeraspreactnative.events
22

33
import com.facebook.react.bridge.Arguments
4+
import com.freeraspreactnative.utils.RandomGenerator.generateRandomIdentifiers
45

56
internal sealed class RaspExecutionStateEvent(override val value: Int) : BaseRaspEvent {
67
override val channelName: String get() = CHANNEL_NAME
78
override val channelKey: String get() = CHANNEL_KEY
89

9-
data object AllChecksFinished : RaspExecutionStateEvent((10000..999999999).random())
10+
data object AllChecksFinished : RaspExecutionStateEvent(identifiers[2])
1011

1112
companion object Companion {
12-
internal val CHANNEL_NAME = (10000..999999999).random().toString()
13-
internal val CHANNEL_KEY = (10000..999999999).random().toString()
13+
val identifiers = generateRandomIdentifiers(3)
14+
internal val CHANNEL_NAME = identifiers[0].toString()
15+
internal val CHANNEL_KEY = identifiers[1].toString()
1416
internal val ALL_EVENTS = Arguments.fromList(
1517
listOf(
1618
AllChecksFinished

android/src/main/java/com/freeraspreactnative/events/ThreatEvent.kt

Lines changed: 27 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
package com.freeraspreactnative.events
22

33
import com.facebook.react.bridge.Arguments
4-
import com.facebook.react.bridge.WritableArray
4+
import com.freeraspreactnative.utils.RandomGenerator.generateRandomIdentifiers
55

66
/**
77
* Sealed class to represent the error codes.
@@ -14,31 +14,33 @@ internal sealed class ThreatEvent(override val value: Int) : BaseRaspEvent {
1414
override val channelName: String get() = CHANNEL_NAME
1515
override val channelKey: String get() = CHANNEL_KEY
1616

17-
data object AppIntegrity : ThreatEvent((10000..999999999).random())
18-
data object PrivilegedAccess : ThreatEvent((10000..999999999).random())
19-
data object Debug : ThreatEvent((10000..999999999).random())
20-
data object Hooks : ThreatEvent((10000..999999999).random())
21-
data object Passcode : ThreatEvent((10000..999999999).random())
22-
data object Simulator : ThreatEvent((10000..999999999).random())
23-
data object SecureHardwareNotAvailable : ThreatEvent((10000..999999999).random())
24-
data object DeviceBinding : ThreatEvent((10000..999999999).random())
25-
data object UnofficialStore : ThreatEvent((10000..999999999).random())
26-
data object ObfuscationIssues : ThreatEvent((10000..999999999).random())
27-
data object SystemVPN : ThreatEvent((10000..999999999).random())
28-
data object DevMode : ThreatEvent((10000..999999999).random())
29-
data object Malware : ThreatEvent((10000..999999999).random())
30-
data object ADBEnabled : ThreatEvent((10000..999999999).random())
31-
data object Screenshot : ThreatEvent((10000..999999999).random())
32-
data object ScreenRecording : ThreatEvent((10000..999999999).random())
33-
data object MultiInstance : ThreatEvent((10000..999999999).random())
34-
data object TimeSpoofing : ThreatEvent((10000..999999999).random())
35-
data object LocationSpoofing : ThreatEvent((10000..999999999).random())
36-
data object UnsecureWifi : ThreatEvent((10000..999999999).random())
17+
data object AppIntegrity : ThreatEvent(identifiers[3])
18+
data object PrivilegedAccess : ThreatEvent(identifiers[4])
19+
data object Debug : ThreatEvent(identifiers[5])
20+
data object Hooks : ThreatEvent(identifiers[6])
21+
data object Passcode : ThreatEvent(identifiers[7])
22+
data object Simulator : ThreatEvent(identifiers[8])
23+
data object SecureHardwareNotAvailable : ThreatEvent(identifiers[9])
24+
data object DeviceBinding : ThreatEvent(identifiers[10])
25+
data object UnofficialStore : ThreatEvent(identifiers[11])
26+
data object ObfuscationIssues : ThreatEvent(identifiers[12])
27+
data object SystemVPN : ThreatEvent(identifiers[13])
28+
data object DevMode : ThreatEvent(identifiers[14])
29+
data object Malware : ThreatEvent(identifiers[15])
30+
data object ADBEnabled : ThreatEvent(identifiers[16])
31+
data object Screenshot : ThreatEvent(identifiers[17])
32+
data object ScreenRecording : ThreatEvent(identifiers[18])
33+
data object MultiInstance : ThreatEvent(identifiers[19])
34+
data object TimeSpoofing : ThreatEvent(identifiers[20])
35+
data object LocationSpoofing : ThreatEvent(identifiers[21])
36+
data object UnsecureWifi : ThreatEvent(identifiers[22])
3737

38-
companion object Companion {
39-
internal val CHANNEL_NAME = (10000..999999999).random().toString()
40-
internal val CHANNEL_KEY = (10000..999999999).random().toString()
41-
internal val MALWARE_CHANNEL_KEY = (10000..999999999).random().toString()
38+
companion object {
39+
val identifiers = generateRandomIdentifiers(23)
40+
41+
internal val CHANNEL_NAME = identifiers[0].toString()
42+
internal val CHANNEL_KEY = identifiers[1].toString()
43+
internal val MALWARE_CHANNEL_KEY = identifiers[2].toString()
4244

4345
internal val ALL_EVENTS = Arguments.fromList(
4446
listOf(
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
package com.freeraspreactnative.utils
2+
3+
internal object RandomGenerator {
4+
private val generatedNumbers = mutableSetOf<Int>()
5+
6+
internal fun generateRandomIdentifiers(length: Int): List<Int> {
7+
val previousLength = generatedNumbers.size
8+
while (generatedNumbers.size < previousLength + length) {
9+
generatedNumbers.add((10000..999999999).random())
10+
}
11+
return generatedNumbers.toList().takeLast(length)
12+
}
13+
}

android/src/main/java/com/freeraspreactnative/utils/Utils.kt

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ import android.util.Base64
99
import android.util.Log
1010
import com.facebook.react.bridge.ReactContext
1111
import java.io.ByteArrayOutputStream
12+
import androidx.core.graphics.createBitmap
1213

1314

1415
internal object Utils {
@@ -43,11 +44,7 @@ internal object Utils {
4344
}
4445

4546
if (drawable.intrinsicWidth > 0 && drawable.intrinsicHeight > 0) {
46-
val bitmap = Bitmap.createBitmap(
47-
drawable.intrinsicWidth,
48-
drawable.intrinsicHeight,
49-
Bitmap.Config.ARGB_8888
50-
)
47+
val bitmap = createBitmap(drawable.intrinsicWidth, drawable.intrinsicHeight)
5148
val canvas = Canvas(bitmap)
5249
drawable.setBounds(0, 0, canvas.width, canvas.height)
5350
drawable.draw(canvas)

0 commit comments

Comments
 (0)