[rtmpdump] r284 - in trunk: amf.c amf.h

hyc subversion at mplayerhq.hu
Thu Mar 4 08:48:56 CET 2010


Author: hyc
Date: Thu Mar  4 08:48:55 2010
New Revision: 284

Log:
Fix decoding of Long Strings

Modified:
   trunk/amf.c
   trunk/amf.h

Modified: trunk/amf.c
==============================================================================
--- trunk/amf.c	Thu Mar  4 08:25:29 2010	(r283)
+++ trunk/amf.c	Thu Mar  4 08:48:55 2010	(r284)
@@ -67,6 +67,13 @@ AMF_DecodeString(const char *data, AVal 
   bv->av_val = (bv->av_len > 0) ? (char *) data + 2 : NULL;
 }
 
+void
+AMF_DecodeLongString(const char *data, AVal * bv)
+{
+  bv->av_len = AMF_DecodeInt32(data);
+  bv->av_val = (bv->av_len > 0) ? (char *) data + 4 : NULL;
+}
+
 double
 AMF_DecodeNumber(const char *data)
 {
@@ -718,7 +725,7 @@ AMFProp_Decode(AMFObjectProperty * prop,
 	unsigned int nStringSize = AMF_DecodeInt32(pBuffer);
 	if (nSize < (long) nStringSize + 4)
 	  return -1;
-	AMF_DecodeString(pBuffer, &prop->p_vu.p_aval);
+	AMF_DecodeLongString(pBuffer, &prop->p_vu.p_aval);
 	nSize -= (4 + nStringSize);
 	prop->p_type = AMF_STRING;
 	break;

Modified: trunk/amf.h
==============================================================================
--- trunk/amf.h	Thu Mar  4 08:25:29 2010	(r283)
+++ trunk/amf.h	Thu Mar  4 08:48:55 2010	(r284)
@@ -99,6 +99,7 @@ extern "C"
   unsigned int AMF_DecodeInt24(const char *data);
   unsigned int AMF_DecodeInt32(const char *data);
   void AMF_DecodeString(const char *data, AVal * str);
+  void AMF_DecodeLongString(const char *data, AVal * str);
   bool AMF_DecodeBoolean(const char *data);
   double AMF_DecodeNumber(const char *data);
 


More information about the rtmpdump mailing list