|
|
|
@ -405,8 +405,10 @@ static int amf_parse_object(AVFormatContext *s, AVStream *astream, |
|
|
|
|
num_val = avio_r8(ioc); |
|
|
|
|
break; |
|
|
|
|
case AMF_DATA_TYPE_STRING: |
|
|
|
|
if (amf_get_string(ioc, str_val, sizeof(str_val)) < 0) |
|
|
|
|
if (amf_get_string(ioc, str_val, sizeof(str_val)) < 0) { |
|
|
|
|
av_log(s, AV_LOG_ERROR, "AMF_DATA_TYPE_STRING parsing failed\n"); |
|
|
|
|
return -1; |
|
|
|
|
} |
|
|
|
|
break; |
|
|
|
|
case AMF_DATA_TYPE_OBJECT: |
|
|
|
|
if ((vstream || astream) && key && |
|
|
|
@ -421,8 +423,10 @@ static int amf_parse_object(AVFormatContext *s, AVStream *astream, |
|
|
|
|
if (amf_parse_object(s, astream, vstream, str_val, max_pos, |
|
|
|
|
depth + 1) < 0) |
|
|
|
|
return -1; // if we couldn't skip, bomb out.
|
|
|
|
|
if (avio_r8(ioc) != AMF_END_OF_OBJECT) |
|
|
|
|
if (avio_r8(ioc) != AMF_END_OF_OBJECT) { |
|
|
|
|
av_log(s, AV_LOG_ERROR, "Missing AMF_END_OF_OBJECT in AMF_DATA_TYPE_OBJECT\n"); |
|
|
|
|
return -1; |
|
|
|
|
} |
|
|
|
|
break; |
|
|
|
|
case AMF_DATA_TYPE_NULL: |
|
|
|
|
case AMF_DATA_TYPE_UNDEFINED: |
|
|
|
@ -438,7 +442,10 @@ static int amf_parse_object(AVFormatContext *s, AVStream *astream, |
|
|
|
|
depth + 1) < 0) |
|
|
|
|
return -1; |
|
|
|
|
if (avio_r8(ioc) != AMF_END_OF_OBJECT) |
|
|
|
|
if (avio_r8(ioc) != AMF_END_OF_OBJECT) { |
|
|
|
|
av_log(s, AV_LOG_ERROR, "Missing AMF_END_OF_OBJECT in AMF_DATA_TYPE_MIXEDARRAY\n"); |
|
|
|
|
return -1; |
|
|
|
|
} |
|
|
|
|
break; |
|
|
|
|
case AMF_DATA_TYPE_ARRAY: |
|
|
|
|
{ |
|
|
|
@ -455,6 +462,7 @@ static int amf_parse_object(AVFormatContext *s, AVStream *astream, |
|
|
|
|
avio_skip(ioc, 8 + 2); // timestamp (double) and UTC offset (int16)
|
|
|
|
|
break; |
|
|
|
|
default: // unsupported type, we couldn't skip
|
|
|
|
|
av_log(s, AV_LOG_ERROR, "unsupported amf type %d\n", amf_type); |
|
|
|
|
return -1; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|