Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 92f7fab9 authored by Michael Wright's avatar Michael Wright Committed by android-build-merger
Browse files

Validate custom pointer icons aren't null.

am: 35068079

Change-Id: I37fdde3c1ea735c4888760f3aab43caf7711dd0e
parents 12ea12aa 35068079
Loading
Loading
Loading
Loading
+3 −0
Original line number Diff line number Diff line
@@ -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);
+2 −0
Original line number Diff line number Diff line
@@ -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);
    }

+5 −1
Original line number Diff line number Diff line
@@ -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);