diff --git a/hostsidetests/securitybulletin/AndroidTest.xml b/hostsidetests/securitybulletin/AndroidTest.xml
index 2addd0b..3b93a7a 100644
--- a/hostsidetests/securitybulletin/AndroidTest.xml
+++ b/hostsidetests/securitybulletin/AndroidTest.xml
@@ -200,11 +200,6 @@
         <option name="push" value="CVE-2019-2025->/data/local/tmp/CVE-2019-2025" />
 
         <!--__________________-->
-        <!-- Bulletin 2019-09 -->
-        <!-- Please add tests solely from this bulletin below to avoid merge conflict -->
-        <option name="push" value="CVE-2019-9313->/data/local/tmp/CVE-2019-9313" />
-
-        <!--__________________-->
         <!-- Bulletin 2020-03 -->
         <!-- Please add tests solely from this bulletin below to avoid merge conflict -->
         <option name="push" value="CVE-2020-0069->/data/local/tmp/CVE-2020-0069" />
diff --git a/hostsidetests/securitybulletin/securityPatch/CVE-2019-9313/Android.bp b/hostsidetests/securitybulletin/securityPatch/CVE-2019-9313/Android.bp
deleted file mode 100644
index 0a19bec..0000000
--- a/hostsidetests/securitybulletin/securityPatch/CVE-2019-9313/Android.bp
+++ /dev/null
@@ -1,53 +0,0 @@
-/*
- * Copyright (C) 2020 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.
- *
- */
-
-cc_test {
-    name: "CVE-2019-9313",
-
-    defaults: ["cts_hostsidetests_securitybulletin_defaults"],
-
-    srcs: [
-        "poc.cpp",
-        ":cts_hostsidetests_securitybulletin_memutils_track",
-    ],
-
-    include_dirs: [
-        "frameworks/native/include/media/openmax",
-        "frameworks/av/media/libstagefright",
-        "frameworks/native/include/media/hardware",
-        "frameworks/av/media/libstagefright/codecs/mp3dec/include",
-        "frameworks/av/media/libstagefright/codecs/mp3dec/src",
-        "frameworks/av/media/libmedia/include",
-        "frameworks/av/media/libstagefright/xmlparser/include",
-    ],
-
-    shared_libs: [
-        "libstagefright",
-        "libstagefright_omx",
-        "libbinder",
-        "libmedia_omx_client",
-        "libutils",
-        "libcutils",
-    ],
-
-    cflags: [
-        "-Wall",
-        "-Werror",
-        "-DCHECK_UNINITIALIZED_MEMORY",
-        "-DENABLE_SELECTIVE_OVERLOADING",
-    ],
-}
diff --git a/hostsidetests/securitybulletin/securityPatch/CVE-2019-9313/poc.cpp b/hostsidetests/securitybulletin/securityPatch/CVE-2019-9313/poc.cpp
deleted file mode 100644
index 44fac42..0000000
--- a/hostsidetests/securitybulletin/securityPatch/CVE-2019-9313/poc.cpp
+++ /dev/null
@@ -1,52 +0,0 @@
-/**
- * Copyright (C) 2020 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.
- */
-
-#include "../includes/omxUtils.h"
-#include "../includes/common.h"
-#include "../includes/memutils_track.h"
-#include "omx/include/media/stagefright/omx/1.0/Omx.h"
-#include "codecs/mp3dec/src/s_tmp3dec_file.h"
-#include "media/omx/1.0/WOmx.h"
-
-char enable_selective_overload = ENABLE_NONE;
-bool is_tracking_required(size_t size) {
-    return (size == sizeof(tmp3dec_file));
-}
-
-int main() {
-
-#if _32_BIT
-    android::ProcessState::self()->startThreadPool();
-    using namespace ::android::hardware::media::omx::V1_0;
-    sp < IOmx > omx = new implementation::Omx();
-    if (!omx) {
-        return EXIT_FAILURE;
-    }
-    sp < IOMX > mOMX = new utils::LWOmx(omx);
-    if (!mOMX) {
-        return EXIT_FAILURE;
-    }
-    sp < IOMXNode > mOMXNode = nullptr;
-    enable_selective_overload = ENABLE_MALLOC_CHECK;
-    mOMX->allocateNode("OMX.google.mp3.decoder", NULL, &mOMXNode);
-    enable_selective_overload = ENABLE_NONE;
-    if (is_memory_uninitialized()) {
-        return EXIT_VULNERABLE;
-    }
-#endif /* _32_BIT */
-
-    return EXIT_SUCCESS;
-}
diff --git a/hostsidetests/securitybulletin/src/android/security/cts/TestMedia.java b/hostsidetests/securitybulletin/src/android/security/cts/TestMedia.java
index 3c7e6a0..c403fcf 100644
--- a/hostsidetests/securitybulletin/src/android/security/cts/TestMedia.java
+++ b/hostsidetests/securitybulletin/src/android/security/cts/TestMedia.java
@@ -41,16 +41,6 @@
      ******************************************************************************/
 
     /**
-     * b/112005441
-     * Vulnerability Behaviour: EXIT_VULNERABLE (113)
-     */
-    @SecurityTest(minPatchLevel = "2019-09")
-    @Test
-    public void testPocCVE_2019_9313() throws Exception {
-        AdbUtils.runPocAssertNoCrashesNotVulnerable("CVE-2019-9313", null, getDevice());
-    }
-
-    /**
      * b/112159345
      * Vulnerability Behaviour: SIGSEGV in self
      **/
