Index: media/video/capture/win/sink_input_pin_win.cc |
diff --git a/media/video/capture/win/sink_input_pin_win.cc b/media/video/capture/win/sink_input_pin_win.cc |
index 795dc75e96ac2fe82551fd0f58b71d5523c3b138..08e76a72792d0f488cf970373c18f4b22114e3f5 100644 |
--- a/media/video/capture/win/sink_input_pin_win.cc |
+++ b/media/video/capture/win/sink_input_pin_win.cc |
@@ -68,8 +68,7 @@ bool SinkInputPin::GetValidMediaType(int index, AM_MEDIA_TYPE* media_type) { |
pvi->bmiHeader.biBitCount = 12; // bit per pixel |
pvi->bmiHeader.biWidth = requested_info_header_.biWidth; |
pvi->bmiHeader.biHeight = requested_info_header_.biHeight; |
- pvi->bmiHeader.biSizeImage = |
- GetArea(requested_info_header_) * 3 / 2; |
+ pvi->bmiHeader.biSizeImage = GetArea(requested_info_header_) * 3 / 2; |
media_type->subtype = kMediaSubTypeI420; |
break; |
} |
@@ -151,6 +150,12 @@ bool SinkInputPin::IsMediaTypeValid(const AM_MEDIA_TYPE* media_type) { |
HRESULT SinkInputPin::Receive(IMediaSample* sample) { |
const int length = sample->GetActualDataLength(); |
uint8* buffer = NULL; |
+ |
+ if (length <= 0) { |
+ DLOG(WARNING) << "Media sample length is 0 or less."; |
+ return S_FALSE; |
+ } |
+ |
if (FAILED(sample->GetPointer(&buffer))) |
return S_FALSE; |