diff --git a/services/core/java/com/android/server/location/contexthub/ContextHubServiceUtil.java b/services/core/java/com/android/server/location/contexthub/ContextHubServiceUtil.java index 1de749bd5b9d1..2cdf75d98659a 100644 --- a/services/core/java/com/android/server/location/contexthub/ContextHubServiceUtil.java +++ b/services/core/java/com/android/server/location/contexthub/ContextHubServiceUtil.java @@ -165,7 +165,18 @@ import java.util.List; aidlNanoAppBinary.flags = nanoAppBinary.getFlags(); aidlNanoAppBinary.targetChreApiMajorVersion = nanoAppBinary.getTargetChreApiMajorVersion(); aidlNanoAppBinary.targetChreApiMinorVersion = nanoAppBinary.getTargetChreApiMinorVersion(); - aidlNanoAppBinary.customBinary = nanoAppBinary.getBinaryNoHeader(); + // This explicit definition is required to avoid erroneous behavior at the binder. + aidlNanoAppBinary.customBinary = new byte[0]; + + // Log exceptions while processing the binary, but continue to pass down the binary + // since the error checking is deferred to the Context Hub. + try { + aidlNanoAppBinary.customBinary = nanoAppBinary.getBinaryNoHeader(); + } catch (IndexOutOfBoundsException e) { + Log.w(TAG, e.getMessage()); + } catch (NullPointerException e) { + Log.w(TAG, "NanoApp binary was null"); + } return aidlNanoAppBinary; }