diff options
author | evitayan <evitayan@google.com> | 2020-05-09 23:06:43 -0700 |
---|---|---|
committer | evitayan <evitayan@google.com> | 2020-05-11 17:28:12 -0700 |
commit | 86a62495ae7bf51e49f69c1da74ec746c0713057 (patch) | |
tree | b97377b28a909fb44869e6580f817d18979eaeb7 | |
parent | 76fc5ba2847444b7c43cf7f93eb3236f483ec2c1 (diff) | |
download | ike-86a62495ae7bf51e49f69c1da74ec746c0713057.tar.gz |
Fix bug in outbound fragment integrity checksum
Fix the bug that the outbound fragment integrity checksum
is not correct
Bug: 156306543
Test: FrameworksIkeTests. CtsIkeTestCases
Test: Manually test against Strongswan server
Change-Id: I6b3ce36cd36bf9f1d79fc22b22f0ce7a70b3ed2e
-rw-r--r-- | src/java/com/android/internal/net/ipsec/ike/message/IkeMessage.java | 14 |
1 files changed, 6 insertions, 8 deletions
diff --git a/src/java/com/android/internal/net/ipsec/ike/message/IkeMessage.java b/src/java/com/android/internal/net/ipsec/ike/message/IkeMessage.java index 1c5f1f6b..3da649ac 100644 --- a/src/java/com/android/internal/net/ipsec/ike/message/IkeMessage.java +++ b/src/java/com/android/internal/net/ipsec/ike/message/IkeMessage.java @@ -503,10 +503,12 @@ public final class IkeMessage { int fragNum = i + 1; // 1-based + int fragFirstInnerPayload = + i == 0 ? firstInnerPayload : IkePayload.PAYLOAD_TYPE_NO_NEXT; IkeSkfPayload skfPayload = new IkeSkfPayload( - ikeHeader, - firstInnerPayload, + skfHeader, + fragFirstInnerPayload, unencryptedData, integrityMac, encryptCipher, @@ -515,11 +517,7 @@ public final class IkeMessage { fragNum, totalFragments); - packetList[i] = - encodeHeaderAndBody( - skfHeader, - skfPayload, - i == 0 ? firstInnerPayload : IkePayload.PAYLOAD_TYPE_NO_NEXT); + packetList[i] = encodeHeaderAndBody(skfHeader, skfPayload, fragFirstInnerPayload); getIkeLog() .d( "IkeMessage", @@ -528,7 +526,7 @@ public final class IkeMessage { + "/" + totalFragments + "): " - + getIkeLog().pii(packetList[0])); + + getIkeLog().pii(packetList[i])); } return packetList; |