Fix APF programs to not generate a failing compare of size 0

Don't generate JNEBS instruction for 0 bytes as it always fails the
ASSERT_FORWARD_IN_PROGRAM(pc + cmp_imm - 1) check where cmp_imm is
the number of bytes to compare.
ApfFilter currently attempts to generate JNEBS for 0 bytes for the
non-lifetime piece between the valid and preferred lifetimes in the
prefix option.
From my testing this fixes RA filtering on bullhead on GoogleGuest.

Bug: 27768019
Change-Id: Id409da55d02767799fb5e3f9d0e9f72ac94d497f
diff --git a/services/core/java/com/android/server/connectivity/ApfFilter.java b/services/core/java/com/android/server/connectivity/ApfFilter.java
index 0014665..824db65 100644
--- a/services/core/java/com/android/server/connectivity/ApfFilter.java
+++ b/services/core/java/com/android/server/connectivity/ApfFilter.java
@@ -411,11 +411,17 @@
             for (int i = 0; i < mNonLifetimes.size(); i++) {
                 // Generate code to match the packet bytes
                 Pair<Integer, Integer> nonLifetime = mNonLifetimes.get(i);
-                gen.addLoadImmediate(Register.R0, nonLifetime.first);
-                gen.addJumpIfBytesNotEqual(Register.R0,
-                        Arrays.copyOfRange(mPacket.array(), nonLifetime.first,
-                                           nonLifetime.first + nonLifetime.second),
-                        nextFilterLabel);
+                // Don't generate JNEBS instruction for 0 bytes as it always fails the
+                // ASSERT_FORWARD_IN_PROGRAM(pc + cmp_imm - 1) check where cmp_imm is
+                // the number of bytes to compare. nonLifetime is zero between the
+                // valid and preferred lifetimes in the prefix option.
+                if (nonLifetime.second != 0) {
+                    gen.addLoadImmediate(Register.R0, nonLifetime.first);
+                    gen.addJumpIfBytesNotEqual(Register.R0,
+                            Arrays.copyOfRange(mPacket.array(), nonLifetime.first,
+                                               nonLifetime.first + nonLifetime.second),
+                            nextFilterLabel);
+                }
                 // Generate code to test the lifetimes haven't gone down too far
                 if ((i + 1) < mNonLifetimes.size()) {
                     Pair<Integer, Integer> nextNonLifetime = mNonLifetimes.get(i + 1);