When searching for AMF object field value, try to find that object first

instead of assuming it should occur right at given position.
This helps finding human-readable error descriptions in RTMP server replies.

Originally committed as revision 20575 to svn://svn.ffmpeg.org/ffmpeg/trunk
release/0.6
Kostya Shishkov 16 years ago
parent fe52395878
commit 87ca1b8f7f
  1. 9
      libavformat/rtmppkt.c

@ -233,10 +233,15 @@ int ff_amf_get_field_value(const uint8_t *data, const uint8_t *data_end,
int namelen = strlen(name); int namelen = strlen(name);
int len; int len;
while (*data != AMF_DATA_TYPE_OBJECT && data < data_end) {
len = ff_amf_tag_size(data, data_end);
if (len < 0)
len = data_end - data;
data += len;
}
if (data_end - data < 3) if (data_end - data < 3)
return -1; return -1;
if (*data++ != AMF_DATA_TYPE_OBJECT) data++;
return -1;
for (;;) { for (;;) {
int size = bytestream_get_be16(&data); int size = bytestream_get_be16(&data);
if (!size) if (!size)

Loading…
Cancel
Save