OSDN Git Service

Check for IControllOffload.getServer() returning null
authorErik Kline <ek@google.com>
Mon, 11 Sep 2017 07:33:27 +0000 (16:33 +0900)
committerErik Kline <ek@google.com>
Tue, 12 Sep 2017 04:36:19 +0000 (13:36 +0900)
Test: as follows
    - built
    - flashed
    - booted
    - runtest frameworks-net passes
Bug: 29337859
Bug: 65529504

Merged-In: I5a57a9fd14dc53eaf1722fbc9a972f4f73280497
Merged-In: Ib2d1862367145260ac83f14d181646eb827538f8
Change-Id: I671487344000f1f2db92b8e4a693c096b680830c
(cherry picked from commit 87b3bfd5f2d3d0ccfc3ee1279b496d4ff289e38f)

services/core/java/com/android/server/connectivity/tethering/OffloadHardwareInterface.java
services/core/jni/com_android_server_connectivity_tethering_OffloadHardwareInterface.cpp

index 553fd8c..76195c4 100644 (file)
@@ -109,6 +109,10 @@ public class OffloadHardwareInterface {
                 mLog.e("tethering offload control not supported: " + e);
                 return false;
             }
+            if (mOffloadControl == null) {
+                mLog.e("tethering IOffloadControl.getService() returned null");
+                return false;
+            }
         }
 
         final String logmsg = String.format("initOffloadControl(%s)",
index f9cbd16..9a17635 100644 (file)
@@ -113,7 +113,7 @@ static jboolean android_server_connectivity_tethering_OffloadHardwareInterface_c
     hidl_handle h1(handleFromFileDescriptor(std::move(fd1))),
                 h2(handleFromFileDescriptor(std::move(fd2)));
 
-    bool rval;
+    bool rval(false);
     hidl_string msg;
     const auto status = configInterface->setHandles(h1, h2,
             [&rval, &msg](bool success, const hidl_string& errMsg) {
@@ -123,6 +123,8 @@ static jboolean android_server_connectivity_tethering_OffloadHardwareInterface_c
     if (!status.isOk() || !rval) {
         ALOGE("IOffloadConfig::setHandles() error: '%s' / '%s'",
               status.description().c_str(), msg.c_str());
+        // If status is somehow not ok, make sure rval captures this too.
+        rval = false;
     }
 
     return rval;