OSDN Git Service

Fix information disclosure in mediadrmserver
authorJeff Tinker <jtinker@google.com>
Mon, 9 Oct 2017 18:52:18 +0000 (11:52 -0700)
committerJeff Tinker <jtinker@google.com>
Tue, 10 Oct 2017 04:42:39 +0000 (21:42 -0700)
Test:poc provided in bug
bug:62872384
Change-Id: I3d104a2a64a0cb81e9fd5b04c4def1fbee64da2d

media/libmedia/IDrm.cpp

index 1904839..b30ab85 100644 (file)
@@ -454,8 +454,13 @@ IMPLEMENT_META_INTERFACE(Drm, "android.drm.IDrm");
 
 void BnDrm::readVector(const Parcel &data, Vector<uint8_t> &vector) const {
     uint32_t size = data.readInt32();
-    vector.insertAt((size_t)0, size);
-    data.read(vector.editArray(), size);
+    if (vector.insertAt((size_t)0, size) < 0) {
+        vector.clear();
+    }
+    if (data.read(vector.editArray(), size) != NO_ERROR) {
+        vector.clear();
+        android_errorWriteWithInfoLog(0x534e4554, "62872384", -1, NULL, 0);
+    }
 }
 
 void BnDrm::writeVector(Parcel *reply, Vector<uint8_t> const &vector) const {