IABTechLab / iabgpp-java

Apache License 2.0
11 stars 12 forks source link

CA privacy string breaking #42

Open holstein-rathlou opened 8 months ago

holstein-rathlou commented 8 months ago

While learning how to use your code, I was testing it on the following example GPP string: DBABjw~CPXxRfAPXxRfAAfKABENB-CgAAAAAAAAAAYgAAAAAAAA~1YNN, downloaded from here. I try to create a new GPPString from this by saying: val gppModel = new GppModel(iabgpp) and the code then breaks with the following message:

[error]    com.iab.gpp.encoder.error.DecodingException: Unable to decode VendorExpressConsent (AbstractEncodableSegmentedBitStringSection.java:79)
[error] com.iab.gpp.encoder.section.AbstractEncodableSegmentedBitStringSection.decodeSegmentsFromBitStrings(AbstractEncodableSegmentedBitStringSection.java:79)
[error] com.iab.gpp.encoder.section.TcfCaV1.decode(TcfCaV1.java:173)
[error] com.iab.gpp.encoder.section.TcfCaV1.<init>(TcfCaV1.java:40)
[error] com.iab.gpp.encoder.GppModel.decode(GppModel.java:237)
[error] com.iab.gpp.encoder.GppModel.<init>(GppModel.java:33)
[error] com.liveintent.dwh.privacy.jobs.PrivacyRequestOptOutJobSpec.$anonfun$new$3(PrivacyRequestOptOutJobSpec.scala:47)
[error] com.iab.gpp.encoder.datatype.EncodableOptimizedFixedRange.substring(EncodableOptimizedFixedRange.java:70)
[error] com.iab.gpp.encoder.section.AbstractEncodableSegmentedBitStringSection.decodeSegmentsFromBitStrings(AbstractEncodableSegmentedBitStringSection.java:75)
[error] com.iab.gpp.encoder.section.TcfCaV1.decode(TcfCaV1.java:173)
[error] com.iab.gpp.encoder.section.TcfCaV1.<init>(TcfCaV1.java:40)
[error] com.iab.gpp.encoder.GppModel.decode(GppModel.java:237)
[error] com.iab.gpp.encoder.GppModel.<init>(GppModel.java:33)
[error] com.liveintent.dwh.privacy.jobs.PrivacyRequestOptOutJobSpec.$anonfun$new$3(PrivacyRequestOptOutJobSpec.scala:47)
[error] CAUSED BY
[error]  java.lang.StringIndexOutOfBoundsException: begin 199, end 1000, length 264 (EncodableOptimizedFixedRange.java:70)
[error] com.iab.gpp.encoder.datatype.EncodableOptimizedFixedRange.substring(EncodableOptimizedFixedRange.java:70)
[error] com.iab.gpp.encoder.section.AbstractEncodableSegmentedBitStringSection.decodeSegmentsFromBitStrings(AbstractEncodableSegmentedBitStringSection.java:75)
[error] com.iab.gpp.encoder.section.TcfCaV1.decode(TcfCaV1.java:173)
[error] com.iab.gpp.encoder.section.TcfCaV1.<init>(TcfCaV1.java:40)
[error] com.iab.gpp.encoder.GppModel.decode(GppModel.java:237)
[error] com.iab.gpp.encoder.GppModel.<init>(GppModel.java:33)

I cannot recreate the error through an encoding, and subsequent decoding, of a Canada Privacy string.