Fix issue 1/7 from LMX of Qihoo 360 Codesafe Team
authorHoward Chu <hyc@highlandsun.com>
Wed, 23 Dec 2015 17:51:39 +0000 (17:51 +0000)
committerHoward Chu <hyc@highlandsun.com>
Wed, 23 Dec 2015 19:09:27 +0000 (19:09 +0000)
AMFProp_GetObject must make sure the prop is actually an object

librtmp/amf.c

index 1c5f99f..b783d35 100644 (file)
@@ -33,6 +33,7 @@
 #include "bytes.h"
 
 static const AMFObjectProperty AMFProp_Invalid = { {0, 0}, AMF_INVALID };
+static const AMFObject AMFObj_Invalid = { 0, 0 };
 static const AVal AV_empty = { 0, 0 };
 
 /* Data is Big-Endian */
@@ -340,13 +341,19 @@ AMFProp_GetBoolean(AMFObjectProperty *prop)
 void
 AMFProp_GetString(AMFObjectProperty *prop, AVal *str)
 {
-  *str = prop->p_vu.p_aval;
+  if (prop->p_type == AMF_STRING)
+    *str = prop->p_vu.p_aval;
+  else
+    *str = AV_empty;
 }
 
 void
 AMFProp_GetObject(AMFObjectProperty *prop, AMFObject *obj)
 {
-  *obj = prop->p_vu.p_object;
+  if (prop->p_type == AMF_OBJECT)
+    *obj = prop->p_vu.p_object;
+  else
+    *obj = AMFObj_Invalid;
 }
 
 int