From: Norbert Federa Date: Tue, 17 Oct 2017 17:28:54 +0000 (+0200) Subject: codec/h264: fix potential segfault and mf_init X-Git-Tag: 2.0.0-rc1~64^2 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=456ce96618ee4b0e58c33811d47062a47bc80a58;p=platform%2Fupstream%2Ffreerdp.git codec/h264: fix potential segfault and mf_init --- diff --git a/libfreerdp/codec/h264.c b/libfreerdp/codec/h264.c index 7777310..357465d 100644 --- a/libfreerdp/codec/h264.c +++ b/libfreerdp/codec/h264.c @@ -468,7 +468,7 @@ BOOL h264_context_init(H264_CONTEXT* h264) for (i = 0; i < MAX_SUBSYSTEMS; i++) { H264_CONTEXT_SUBSYSTEM* subsystem = subSystems[i]; - if (!subsystem->Init) + if (!subsystem || !subsystem->Init) break; if (subsystem->Init(h264)) diff --git a/libfreerdp/codec/h264_mf.c b/libfreerdp/codec/h264_mf.c index 7037ca7..69a149b 100644 --- a/libfreerdp/codec/h264_mf.c +++ b/libfreerdp/codec/h264_mf.c @@ -517,10 +517,12 @@ static BOOL mf_init(H264_CONTEXT* h264) "MFCreateMediaType"); sys->MFCreateDXGIDeviceManager = (pfnMFCreateDXGIDeviceManager) GetProcAddress( sys->mfplat, "MFCreateDXGIDeviceManager"); - + /** + * Note: MFCreateDXGIDeviceManager is supported starting from Windows 8. + * Don't fail below if GetProcAddress returned NULL. + */ if (!sys->MFStartup || !sys->MFShutdown || !sys->MFCreateSample - || !sys->MFCreateMemoryBuffer || - !sys->MFCreateMediaType || !sys->MFCreateDXGIDeviceManager) + || !sys->MFCreateMemoryBuffer || !sys->MFCreateMediaType) goto error; CoInitializeEx(NULL, COINIT_APARTMENTTHREADED);