Skip to content

Commit 0b511c9

Browse files
committed
Only provide {{auto}} ip-address if sendDefaultPii is enabled
1 parent 2de45eb commit 0b511c9

File tree

6 files changed

+44
-9
lines changed

6 files changed

+44
-9
lines changed

sentry-android-core/src/main/java/io/sentry/android/core/AnrV2EventProcessor.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -575,7 +575,7 @@ private void mergeUser(final @NotNull SentryBaseEvent event) {
575575
if (user.getId() == null) {
576576
user.setId(getDeviceId());
577577
}
578-
if (user.getIpAddress() == null) {
578+
if (user.getIpAddress() == null && options.isSendDefaultPii()) {
579579
user.setIpAddress(IpAddressUtils.DEFAULT_IP_ADDRESS);
580580
}
581581
}

sentry-android-core/src/main/java/io/sentry/android/core/DefaultAndroidEventProcessor.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -156,7 +156,7 @@ private void mergeUser(final @NotNull SentryBaseEvent event) {
156156
if (user.getId() == null) {
157157
user.setId(Installation.id(context));
158158
}
159-
if (user.getIpAddress() == null) {
159+
if (user.getIpAddress() == null && options.isSendDefaultPii()) {
160160
user.setIpAddress(IpAddressUtils.DEFAULT_IP_ADDRESS);
161161
}
162162
}

sentry-android-core/src/test/java/io/sentry/android/core/AnrV2EventProcessorTest.kt

Lines changed: 15 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -85,18 +85,20 @@ class AnrV2EventProcessorTest {
8585
lateinit var context: Context
8686
val options = SentryAndroidOptions().apply {
8787
setLogger(NoOpLogger.getInstance())
88-
isSendDefaultPii = true
8988
}
9089

9190
fun getSut(
9291
dir: TemporaryFolder,
9392
currentSdk: Int = Build.VERSION_CODES.LOLLIPOP,
9493
populateScopeCache: Boolean = false,
9594
populateOptionsCache: Boolean = false,
96-
replayErrorSampleRate: Double? = null
95+
replayErrorSampleRate: Double? = null,
96+
isSendDefaultPii: Boolean = true
9797
): AnrV2EventProcessor {
9898
options.cacheDirPath = dir.newFolder().absolutePath
9999
options.environment = "release"
100+
options.isSendDefaultPii = isSendDefaultPii
101+
100102
whenever(buildInfo.sdkInfoVersion).thenReturn(currentSdk)
101103
whenever(buildInfo.isEmulator).thenReturn(true)
102104

@@ -278,6 +280,7 @@ class AnrV2EventProcessorTest {
278280
// user
279281
assertEquals("bot", processed.user!!.username)
280282
assertEquals("bot@me.com", processed.user!!.id)
283+
assertEquals("{{auto}}", processed.user!!.ipAddress)
281284
// trace
282285
assertEquals("ui.load", processed.contexts.trace!!.operation)
283286
// tags
@@ -304,6 +307,13 @@ class AnrV2EventProcessorTest {
304307
assertEquals("Google Chrome", processed.contexts.browser!!.name)
305308
}
306309

310+
@Test
311+
fun `when backfillable event is enrichable, does not backfill user ip`() {
312+
val hint = HintUtils.createWithTypeCheckHint(BackfillableHint())
313+
val processed = processEvent(hint, isSendDefaultPii = false, populateScopeCache = true)
314+
assertNull(processed.user!!.ipAddress)
315+
}
316+
307317
@Test
308318
fun `when backfillable event is enrichable, backfills serialized options data`() {
309319
val hint = HintUtils.createWithTypeCheckHint(BackfillableHint())
@@ -617,14 +627,16 @@ class AnrV2EventProcessorTest {
617627
hint: Hint,
618628
populateScopeCache: Boolean = false,
619629
populateOptionsCache: Boolean = false,
630+
isSendDefaultPii: Boolean = true,
620631
configureEvent: SentryEvent.() -> Unit = {}
621632
): SentryEvent {
622633
val original = SentryEvent().apply(configureEvent)
623634

624635
val processor = fixture.getSut(
625636
tmpDir,
626637
populateScopeCache = populateScopeCache,
627-
populateOptionsCache = populateOptionsCache
638+
populateOptionsCache = populateOptionsCache,
639+
isSendDefaultPii = isSendDefaultPii
628640
)
629641
return processor.process(original, hint)!!
630642
}

sentry-android-core/src/test/java/io/sentry/android/core/DefaultAndroidEventProcessorTest.kt

Lines changed: 16 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -66,7 +66,8 @@ class DefaultAndroidEventProcessorTest {
6666

6767
lateinit var sentryTracer: SentryTracer
6868

69-
fun getSut(context: Context): DefaultAndroidEventProcessor {
69+
fun getSut(context: Context, isSendDefaultPii: Boolean = false): DefaultAndroidEventProcessor {
70+
options.isSendDefaultPii = isSendDefaultPii
7071
whenever(hub.options).thenReturn(options)
7172
sentryTracer = SentryTracer(TransactionContext("", ""), hub)
7273
return DefaultAndroidEventProcessor(context, buildInfo, options)
@@ -284,8 +285,20 @@ class DefaultAndroidEventProcessorTest {
284285
}
285286

286287
@Test
287-
fun `when event user data does not have ip address set, sets {{auto}} as the ip address`() {
288-
val sut = fixture.getSut(context)
288+
fun `when event user data does not have ip address set, sets no ip address if sendDefaultPii is false`() {
289+
val sut = fixture.getSut(context, isSendDefaultPii = false)
290+
val event = SentryEvent().apply {
291+
user = User()
292+
}
293+
sut.process(event, Hint())
294+
assertNotNull(event.user) {
295+
assertNull(it.ipAddress)
296+
}
297+
}
298+
299+
@Test
300+
fun `when event user data does not have ip address set, sets {{auto}} if sendDefaultPii is true`() {
301+
val sut = fixture.getSut(context, isSendDefaultPii = true)
289302
val event = SentryEvent().apply {
290303
user = User()
291304
}

sentry/src/main/java/io/sentry/MainEventProcessor.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -245,7 +245,7 @@ private void mergeUser(final @NotNull SentryBaseEvent event) {
245245
user = new User();
246246
event.setUser(user);
247247
}
248-
if (user.getIpAddress() == null) {
248+
if (user.getIpAddress() == null && options.isSendDefaultPii()) {
249249
user.setIpAddress(IpAddressUtils.DEFAULT_IP_ADDRESS);
250250
}
251251
}

sentry/src/test/java/io/sentry/MainEventProcessorTest.kt

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -306,6 +306,16 @@ class MainEventProcessorTest {
306306
}
307307
}
308308

309+
@Test
310+
fun `when event does not have ip address set, do not enrich ip address if sendDefaultPii is false`() {
311+
val sut = fixture.getSut(sendDefaultPii = false)
312+
val event = SentryEvent()
313+
sut.process(event, Hint())
314+
assertNotNull(event.user) {
315+
assertNull(it.ipAddress)
316+
}
317+
}
318+
309319
@Test
310320
fun `when event has ip address set, keeps original ip address`() {
311321
val sut = fixture.getSut(sendDefaultPii = true)

0 commit comments

Comments
 (0)