From 595de46e9d6edfe5ec9f9f5f84bd86193df2d76b Mon Sep 17 00:00:00 2001 From: jp9000 Date: Sat, 25 Jul 2015 09:51:30 -0700 Subject: [PATCH] decklink: Fix crash (null pointer dereference) This is my fault; I made an idiotic assumption about the data and it ended up causing the plugin to crash. This is definitely one of my more embarrassing moments. --- plugins/decklink/decklink-device-instance.cpp | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/plugins/decklink/decklink-device-instance.cpp b/plugins/decklink/decklink-device-instance.cpp index f32609e99..71b554f84 100644 --- a/plugins/decklink/decklink-device-instance.cpp +++ b/plugins/decklink/decklink-device-instance.cpp @@ -140,12 +140,14 @@ HRESULT STDMETHODCALLTYPE DeckLinkDeviceInstance::VideoInputFrameArrived( BMDTimeValue videoDur = 0; BMDTimeValue audioTS = 0; - videoFrame->GetStreamTime(&videoTS, &videoDur, TIME_BASE); - audioPacket->GetPacketTime(&audioTS, TIME_BASE); + if (videoFrame) + videoFrame->GetStreamTime(&videoTS, &videoDur, TIME_BASE); + if (audioPacket) + audioPacket->GetPacketTime(&audioTS, TIME_BASE); - if (videoTS >= 0) + if (videoFrame && videoTS >= 0) HandleVideoFrame(videoFrame, (uint64_t)videoTS); - if (audioTS >= 0) + if (audioPacket && audioTS >= 0) HandleAudioPacket(audioPacket, (uint64_t)audioTS); return S_OK;