From 300f9d0bf281ebe36f172d3f9cdd89ef2a89a46e Mon Sep 17 00:00:00 2001 From: Erik Kline Date: Mon, 11 Sep 2017 16:33:27 +0900 Subject: [PATCH] Check for IControllOffload.getServer() returning null 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) --- .../server/connectivity/tethering/OffloadHardwareInterface.java | 4 ++++ ...android_server_connectivity_tethering_OffloadHardwareInterface.cpp | 4 +++- 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/services/core/java/com/android/server/connectivity/tethering/OffloadHardwareInterface.java b/services/core/java/com/android/server/connectivity/tethering/OffloadHardwareInterface.java index 553fd8c453a0..76195c4ac7d4 100644 --- a/services/core/java/com/android/server/connectivity/tethering/OffloadHardwareInterface.java +++ b/services/core/java/com/android/server/connectivity/tethering/OffloadHardwareInterface.java @@ -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)", diff --git a/services/core/jni/com_android_server_connectivity_tethering_OffloadHardwareInterface.cpp b/services/core/jni/com_android_server_connectivity_tethering_OffloadHardwareInterface.cpp index f9cbd1601290..9a17635721b8 100644 --- a/services/core/jni/com_android_server_connectivity_tethering_OffloadHardwareInterface.cpp +++ b/services/core/jni/com_android_server_connectivity_tethering_OffloadHardwareInterface.cpp @@ -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; -- 2.11.0