]> granicus.if.org Git - rtmpdump/commitdiff
Fix decoding of Long Strings
authorhyc <hyc@400ebc74-4327-4243-bc38-086b20814532>
Thu, 4 Mar 2010 07:48:55 +0000 (07:48 +0000)
committerhyc <hyc@400ebc74-4327-4243-bc38-086b20814532>
Thu, 4 Mar 2010 07:48:55 +0000 (07:48 +0000)
git-svn-id: svn://svn.mplayerhq.hu/rtmpdump/trunk@284 400ebc74-4327-4243-bc38-086b20814532

amf.c
amf.h

diff --git a/amf.c b/amf.c
index 70432a5e4e57e8f90f13facd06d1efc6ae4527aa..9f322c3907b1040067d734ddb6c89154e6827ce9 100644 (file)
--- a/amf.c
+++ b/amf.c
@@ -67,6 +67,13 @@ AMF_DecodeString(const char *data, AVal * bv)
   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, const char *pBuffer, int nSize,
        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;
diff --git a/amf.h b/amf.h
index c94c6b5e87e9ab23ee0e76d577dece12a8bc8a46..ce4b4424bbbcb84a77342c4ef9738637d2b8b36b 100644 (file)
--- a/amf.h
+++ b/amf.h
@@ -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);