Fix handling invalid header length am: 6444ca61c2 am: a53702a4d3

Original change: https://android-review.googlesource.com/c/platform/external/obex/+/3152137

Change-Id: I63849bb1338cca2651a8cabdb462deece028d2be
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
diff --git a/src/com/android/obex/ObexHelper.java b/src/com/android/obex/ObexHelper.java
index e00ed75..5b61cd0 100644
--- a/src/com/android/obex/ObexHelper.java
+++ b/src/com/android/obex/ObexHelper.java
@@ -211,12 +211,23 @@
                         length = ((0xFF & headerArray[index]) << 8) +
                                  (0xFF & headerArray[index + 1]);
                         index += 2;
-                        if (length <= OBEX_BYTE_SEQ_HEADER_LEN ||
-                                length - OBEX_BYTE_SEQ_HEADER_LEN > headerArray.length - index) {
+
+                        // An empty Name header
+                        if (headerID == HeaderSet.NAME && length == OBEX_BYTE_SEQ_HEADER_LEN) {
+                            headerImpl.setEmptyNameHeader();
+                            continue;
+                        }
+
+                        if (length <= OBEX_BYTE_SEQ_HEADER_LEN) {
                             Log.e(TAG, "Remote sent an OBEX packet with " +
                                     "incorrect header length = " + length);
                             break;
                         }
+                        if (length - OBEX_BYTE_SEQ_HEADER_LEN > headerArray.length - index) {
+                            Log.e(TAG, "Remote sent an OBEX packet with " +
+                                    "incorrect header length = " + length);
+                            throw new IOException("Incorrect header length");
+                        }
                         length -= OBEX_BYTE_SEQ_HEADER_LEN;
                         value = new byte[length];
                         System.arraycopy(headerArray, index, value, 0, length);