Index: media/formats/webm/webm_cluster_parser.cc |
diff --git a/media/formats/webm/webm_cluster_parser.cc b/media/formats/webm/webm_cluster_parser.cc |
index e206107c8b4f6d75b9b0205e401b3e38a8b8be48..41bc8e30f6a6f959fee610f0db88d773a644e064 100644 |
--- a/media/formats/webm/webm_cluster_parser.cc |
+++ b/media/formats/webm/webm_cluster_parser.cc |
@@ -191,12 +191,6 @@ bool WebMClusterParser::OnUInt(int id, int64 val) { |
case kWebMIdBlockAddID: |
dst = &block_add_id_; |
break; |
- case kWebMIdDiscardPadding: |
- if (discard_padding_set_) |
- return false; |
- discard_padding_set_ = true; |
- discard_padding_ = val; |
- return true; |
default: |
return true; |
} |
@@ -278,7 +272,18 @@ bool WebMClusterParser::OnBinary(int id, const uint8* data, int size) { |
memcpy(block_additional_data_.get() + 8, data, size); |
return true; |
} |
+ case kWebMIdDiscardPadding: { |
+ if (discard_padding_set_ || size <= 0 || size > 8) |
+ return false; |
+ discard_padding_set_ = true; |
+ |
+ // Read in the big-endian integer. |
+ discard_padding_ = static_cast<int8>(data[0]); |
+ for (int i = 1; i < size; ++i) |
+ discard_padding_ = (discard_padding_ << 8) | data[i]; |
+ return true; |
+ } |
default: |
return true; |
} |