Validate custom pointer icons aren't null.

am: 35068079c8

Change-Id: I68c8a45c8bd207b82a9d82d6f2fd5c7fb85b098c
This commit is contained in:
Michael Wright
2017-01-19 02:16:45 +00:00
committed by android-build-merger
3 changed files with 10 additions and 1 deletions

View File

@@ -78,6 +78,9 @@ status_t android_view_PointerIcon_load(JNIEnv* env, jobject pointerIconObj, jobj
status_t android_view_PointerIcon_getLoadedIcon(JNIEnv* env, jobject pointerIconObj,
PointerIcon* outPointerIcon) {
if (!pointerIconObj) {
return BAD_VALUE;
}
outPointerIcon->style = env->GetIntField(pointerIconObj, gPointerIconClassInfo.mType);
outPointerIcon->hotSpotX = env->GetFloatField(pointerIconObj, gPointerIconClassInfo.mHotSpotX);
outPointerIcon->hotSpotY = env->GetFloatField(pointerIconObj, gPointerIconClassInfo.mHotSpotY);

View File

@@ -25,6 +25,7 @@ import android.view.Display;
import com.android.internal.inputmethod.InputMethodSubtypeHandle;
import com.android.internal.os.SomeArgs;
import com.android.internal.R;
import com.android.internal.util.Preconditions;
import com.android.internal.util.XmlUtils;
import com.android.server.DisplayThread;
import com.android.server.LocalServices;
@@ -1705,6 +1706,7 @@ public class InputManagerService extends IInputManager.Stub
// Binder call
@Override
public void setCustomPointerIcon(PointerIcon icon) {
Preconditions.checkNotNull(icon);
nativeSetCustomPointerIcon(mPtr, icon);
}

View File

@@ -1462,7 +1462,11 @@ static void nativeSetCustomPointerIcon(JNIEnv* env, jclass /* clazz */,
NativeInputManager* im = reinterpret_cast<NativeInputManager*>(ptr);
PointerIcon pointerIcon;
android_view_PointerIcon_getLoadedIcon(env, iconObj, &pointerIcon);
status_t result = android_view_PointerIcon_getLoadedIcon(env, iconObj, &pointerIcon);
if (result) {
jniThrowRuntimeException(env, "Failed to load custom pointer icon.");
return;
}
SpriteIcon spriteIcon;
pointerIcon.bitmap.copyTo(&spriteIcon.bitmap, kN32_SkColorType);