Mercurial > libavformat.hg
comparison rtmppkt.c @ 5378:c22a1e94e80f libavformat
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.
author | kostya |
---|---|
date | Sun, 22 Nov 2009 09:03:06 +0000 |
parents | a00cc1aac80d |
children | f042e114451f |
comparison
equal
deleted
inserted
replaced
5377:9313acce85fc | 5378:c22a1e94e80f |
---|---|
231 const uint8_t *name, uint8_t *dst, int dst_size) | 231 const uint8_t *name, uint8_t *dst, int dst_size) |
232 { | 232 { |
233 int namelen = strlen(name); | 233 int namelen = strlen(name); |
234 int len; | 234 int len; |
235 | 235 |
236 while (*data != AMF_DATA_TYPE_OBJECT && data < data_end) { | |
237 len = ff_amf_tag_size(data, data_end); | |
238 if (len < 0) | |
239 len = data_end - data; | |
240 data += len; | |
241 } | |
236 if (data_end - data < 3) | 242 if (data_end - data < 3) |
237 return -1; | 243 return -1; |
238 if (*data++ != AMF_DATA_TYPE_OBJECT) | 244 data++; |
239 return -1; | |
240 for (;;) { | 245 for (;;) { |
241 int size = bytestream_get_be16(&data); | 246 int size = bytestream_get_be16(&data); |
242 if (!size) | 247 if (!size) |
243 break; | 248 break; |
244 if (data + size >= data_end || data + size < data) | 249 if (data + size >= data_end || data + size < data) |