diff --git a/tests/tests/security/res/raw/bug_17262540.ico b/tests/tests/security/res/raw/bug_17262540.ico
deleted file mode 100644
index 49730df..0000000
--- a/tests/tests/security/res/raw/bug_17262540.ico
+++ /dev/null
Binary files differ
diff --git a/tests/tests/security/res/raw/bug_17265466.ico b/tests/tests/security/res/raw/bug_17265466.ico
deleted file mode 100644
index 527d657..0000000
--- a/tests/tests/security/res/raw/bug_17265466.ico
+++ /dev/null
Binary files differ
diff --git a/tests/tests/security/src/android/security/cts/SkiaICORecursiveDecodingTest.java b/tests/tests/security/src/android/security/cts/SkiaICORecursiveDecodingTest.java
deleted file mode 100644
index 8fc1a24..0000000
--- a/tests/tests/security/src/android/security/cts/SkiaICORecursiveDecodingTest.java
+++ /dev/null
@@ -1,48 +0,0 @@
-/*
- * Copyright (C) 2016 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package android.security.cts;
-
-import android.graphics.Bitmap;
-import android.graphics.BitmapFactory;
-import android.test.AndroidTestCase;
-
-import java.io.InputStream;
-
-import com.android.cts.security.R;
-
-public class SkiaICORecursiveDecodingTest extends AndroidTestCase {
-
-    public void test_android_bug_17262540() {
-        doSkiaIcoRecursiveDecodingTest(R.raw.bug_17262540);
-    }
-
-    public void test_android_bug_17265466() {
-        doSkiaIcoRecursiveDecodingTest(R.raw.bug_17265466);
-    }
-
-    /**
-     * Verifies that the device prevents recursive decoding of malformed ICO files
-     */
-    public void doSkiaIcoRecursiveDecodingTest(int resId) {
-        InputStream exploitImage = mContext.getResources().openRawResource(resId);
-        /**
-         * The decodeStream method results in SIGSEGV (Segmentation fault) on unpatched devices
-         * while decoding the exploit image which will lead to process crash
-         */
-        Bitmap bitmap = BitmapFactory.decodeStream(exploitImage);
-    }
-}
\ No newline at end of file
