aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorevitayan <evitayan@google.com>2020-05-09 23:06:43 -0700
committerevitayan <evitayan@google.com>2020-05-11 17:28:12 -0700
commit86a62495ae7bf51e49f69c1da74ec746c0713057 (patch)
treeb97377b28a909fb44869e6580f817d18979eaeb7
parent76fc5ba2847444b7c43cf7f93eb3236f483ec2c1 (diff)
downloadike-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.java14
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;