diff --git a/tests/tests/security/res/raw/bug_37093318.xmf b/tests/tests/security/res/raw/bug_37093318.xmf
new file mode 100644
index 0000000..e42c863
--- /dev/null
+++ b/tests/tests/security/res/raw/bug_37093318.xmf
Binary files differ
diff --git a/tests/tests/security/src/android/security/cts/StagefrightTest.java b/tests/tests/security/src/android/security/cts/StagefrightTest.java
index 8f9d49e..6740d98 100644
--- a/tests/tests/security/src/android/security/cts/StagefrightTest.java
+++ b/tests/tests/security/src/android/security/cts/StagefrightTest.java
@@ -20,10 +20,9 @@
  * Simone "evilsocket" Margaritelli
  * Joshua "jduck" Drake
  */
+
 package android.security.cts;
 
-import android.test.AndroidTestCase;
-import android.util.Log;
 import android.content.Context;
 import android.content.res.AssetFileDescriptor;
 import android.content.res.Resources;
@@ -35,16 +34,17 @@
 import android.media.MediaFormat;
 import android.media.MediaMetadataRetriever;
 import android.media.MediaPlayer;
-import android.opengl.GLES20;
 import android.opengl.GLES11Ext;
+import android.opengl.GLES20;
 import android.os.Looper;
 import android.os.SystemClock;
 import android.platform.test.annotations.SecurityTest;
+import android.security.cts.R;
+import android.test.AndroidTestCase;
 import android.test.InstrumentationTestCase;
 import android.util.Log;
 import android.view.Surface;
 import android.webkit.cts.CtsTestServer;
-
 import java.io.FileInputStream;
 import java.io.IOException;
 import java.nio.ByteBuffer;
@@ -53,8 +53,6 @@
 import java.util.concurrent.locks.Condition;
 import java.util.concurrent.locks.ReentrantLock;
 
-import android.security.cts.R;
-
 
 /**
  * Verify that the device is not vulnerable to any known Stagefright
@@ -451,6 +449,10 @@
         doStagefrightTest(R.raw.bug_67737022);
     }
 
+    @SecurityTest
+    public void testStagefright_bug_37093318() throws Exception {
+        doStagefrightTest(R.raw.bug_37093318, (4 * 60 * 1000));
+    }
 
     private void doStagefrightTest(final int rid) throws Exception {
         doStagefrightTestMediaPlayer(rid);
@@ -468,6 +470,19 @@
         server.shutdown();
     }
 
+    private void doStagefrightTest(final int rid, int timeout) throws Exception {
+        runWithTimeout(new Runnable() {
+            @Override
+            public void run() {
+                try {
+                    doStagefrightTest(rid);
+                } catch (Exception e) {
+                    fail(e.toString());
+                }
+            }
+        }, timeout);
+    }
+
     private void doStagefrightTestANR(final int rid) throws Exception {
         doStagefrightTestMediaPlayerANR(rid, null);
     }
