From 723acf9364f045da6d4e93a23694b74d1b94dafd Mon Sep 17 00:00:00 2001 From: Mohit Date: Wed, 26 Jul 2023 12:56:39 -0700 Subject: [PATCH] Fix Adal decrypt crash (#1748) * Fix Adal decrypt crash * change log and version * Fix test --- .../aad/adal/StorageHelperTests.java | 12 +++-------- .../com/microsoft/aad/adal/StorageHelper.java | 21 +++++++++++++------ adal/versioning/version.properties | 2 +- changelog.txt | 4 ++++ 4 files changed, 23 insertions(+), 16 deletions(-) diff --git a/adal/src/androidTest/java/com/microsoft/aad/adal/StorageHelperTests.java b/adal/src/androidTest/java/com/microsoft/aad/adal/StorageHelperTests.java index e9bc87120..2989e1e9e 100644 --- a/adal/src/androidTest/java/com/microsoft/aad/adal/StorageHelperTests.java +++ b/adal/src/androidTest/java/com/microsoft/aad/adal/StorageHelperTests.java @@ -32,6 +32,7 @@ import androidx.test.filters.Suppress; import androidx.test.platform.app.InstrumentationRegistry; +import org.junit.Assert; import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; @@ -128,15 +129,8 @@ public void testDecryptInvalidInput() throws IOException, GeneralSecurityException { final Context context = InstrumentationRegistry.getInstrumentation().getTargetContext(); final StorageHelper storageHelper = new StorageHelper(context); - assertThrowsException( - IllegalArgumentException.class, - "is not valid, it must be greater of equal to 0", - new AndroidTestHelper.ThrowableRunnable() { - @Override - public void run() throws GeneralSecurityException, IOException, AuthenticationException { - storageHelper.decrypt("E1bad64"); - } - }); + + Assert.assertEquals("E1bad64", storageHelper.decrypt("E1bad64")); assertThrowsException( IllegalArgumentException.class, diff --git a/adal/src/main/java/com/microsoft/aad/adal/StorageHelper.java b/adal/src/main/java/com/microsoft/aad/adal/StorageHelper.java index f19b651e5..fdd17a634 100644 --- a/adal/src/main/java/com/microsoft/aad/adal/StorageHelper.java +++ b/adal/src/main/java/com/microsoft/aad/adal/StorageHelper.java @@ -254,14 +254,23 @@ public String decrypt(final String encryptedBlob) int encodeVersionLength = encryptedBlob.charAt(0) - 'a'; if (encodeVersionLength <= 0) { - throw new IllegalArgumentException(String.format( - "Encode version length: '%s' is not valid, it must be greater of equal to 0", - encodeVersionLength)); + final String message = String.format( + "Encode version length: '%s' is not valid, it must be greater of equal to 0. " + + "Assuming string is not encrypted. Returning input blob.", + encodeVersionLength + ); + Logger.w(TAG + methodName, message); + return encryptedBlob; } + if (!encryptedBlob.substring(1, 1 + encodeVersionLength).equals(ENCODE_VERSION)) { - throw new IllegalArgumentException(String.format( - "Encode version received was: '%s', Encode version supported is: '%s'", encryptedBlob, - ENCODE_VERSION)); + final String message = String.format( + "Unsupported encode version received. Encode version supported is: %s. " + + "Assuming string is not encrypted. Returning input blob.", + ENCODE_VERSION + ); + Logger.w(TAG + methodName, message); + return encryptedBlob; } final byte[] bytes = Base64 diff --git a/adal/versioning/version.properties b/adal/versioning/version.properties index 6b43ecb46..de41f9ecf 100644 --- a/adal/versioning/version.properties +++ b/adal/versioning/version.properties @@ -1,3 +1,3 @@ #Wed Aug 01 15:24:11 PDT 2018 -versionName=4.6.0 +versionName=4.6.1 versionCode=1 diff --git a/changelog.txt b/changelog.txt index 89292a61e..4549c934d 100644 --- a/changelog.txt +++ b/changelog.txt @@ -1,3 +1,7 @@ +Version 4.6.1 +------------- +- [PATCH] Fix crash due to IllegalArgumentException in StorageHelper.decrypt (#1748) + Version 4.6.0 ------------- - [MINOR] Remove dependency from common's storagehelper #1725