Skip to content

Commit

Permalink
winegstreamer: Always check the return value from mf_media_type_from_…
Browse files Browse the repository at this point in the history
…wg_format().

mf_media_type_from_wg_format() may return NULL.

Fix Airborne Kingdom crash at start because WG_AUDIO_FORMAT_UNKNOWN is passed to
mf_media_type_from_wg_format().

Signed-off-by: Zhiyi Zhang <[email protected]>
  • Loading branch information
zzhiyi authored and julliard committed Aug 11, 2022
1 parent 4244b4b commit 6f8990b
Showing 1 changed file with 10 additions and 3 deletions.
13 changes: 10 additions & 3 deletions dlls/winegstreamer/media_source.c
Original file line number Diff line number Diff line change
Expand Up @@ -879,6 +879,12 @@ static HRESULT media_stream_init_desc(struct media_stream *stream)
IMFMediaType *base_type = mf_media_type_from_wg_format(&format);
GUID base_subtype;

if (!base_type)
{
hr = MF_E_INVALIDMEDIATYPE;
goto done;
}

IMFMediaType_GetGUID(base_type, &MF_MT_SUBTYPE, &base_subtype);

stream_types[0] = base_type;
Expand Down Expand Up @@ -911,8 +917,8 @@ static HRESULT media_stream_init_desc(struct media_stream *stream)
WG_AUDIO_FORMAT_F32LE,
};

stream_types[0] = mf_media_type_from_wg_format(&format);
type_count = 1;
if ((stream_types[0] = mf_media_type_from_wg_format(&format)))
type_count = 1;

for (i = 0; i < ARRAY_SIZE(audio_types); i++)
{
Expand All @@ -921,7 +927,8 @@ static HRESULT media_stream_init_desc(struct media_stream *stream)
continue;
new_format = format;
new_format.u.audio.format = audio_types[i];
stream_types[type_count++] = mf_media_type_from_wg_format(&new_format);
if ((stream_types[type_count] = mf_media_type_from_wg_format(&new_format)))
type_count++;
}
}
else
Expand Down

0 comments on commit 6f8990b

Please sign in to comment.