h266parse: clear cache values with memset

Fixes a stack overflow on Windows/MSVC.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8588>
This commit is contained in:
Carlos Bentzen 2025-03-04 22:08:46 +01:00 committed by GStreamer Marge Bot
parent e2e6daf362
commit ee6618d9ba

View file

@ -675,9 +675,7 @@ gst_h266_parse_process_nal (GstH266Parse * h266parse, GstH266NalUnit * nalu)
switch (nal_type) { switch (nal_type) {
case GST_H266_NAL_VPS: case GST_H266_NAL_VPS:
/* *INDENT-OFF* */ memset (vps, 0, sizeof (*vps));
*vps = (GstH266VPS) { 0, };
/* *INDENT-ON* */
pres = gst_h266_parser_parse_vps (nalparser, nalu, vps); pres = gst_h266_parser_parse_vps (nalparser, nalu, vps);
if (pres != GST_H266_PARSER_OK) { if (pres != GST_H266_PARSER_OK) {
GST_WARNING_OBJECT (h266parse, "failed to parse VPS"); GST_WARNING_OBJECT (h266parse, "failed to parse VPS");
@ -702,9 +700,7 @@ gst_h266_parse_process_nal (GstH266Parse * h266parse, GstH266NalUnit * nalu)
h266parse->header = TRUE; h266parse->header = TRUE;
break; break;
case GST_H266_NAL_SPS: case GST_H266_NAL_SPS:
/* *INDENT-OFF* */ memset (sps, 0, sizeof (*sps));
*sps = (GstH266SPS) { 0, };
/* *INDENT-ON* */
/* reset state, everything else is obsolete */ /* reset state, everything else is obsolete */
h266parse->state &= GST_H266_PARSE_STATE_GOT_PPS; h266parse->state &= GST_H266_PARSE_STATE_GOT_PPS;
@ -734,9 +730,7 @@ gst_h266_parse_process_nal (GstH266Parse * h266parse, GstH266NalUnit * nalu)
h266parse->state |= GST_H266_PARSE_STATE_GOT_SPS; h266parse->state |= GST_H266_PARSE_STATE_GOT_SPS;
break; break;
case GST_H266_NAL_PPS: case GST_H266_NAL_PPS:
/* *INDENT-OFF* */ memset (pps, 0, sizeof (*pps));
*pps = (GstH266PPS) { 0, };
/* *INDENT-ON* */
/* expected state: got-sps */ /* expected state: got-sps */
h266parse->state &= GST_H266_PARSE_STATE_GOT_SPS; h266parse->state &= GST_H266_PARSE_STATE_GOT_SPS;
if (!GST_H266_PARSE_STATE_VALID (h266parse, GST_H266_PARSE_STATE_GOT_SPS)) if (!GST_H266_PARSE_STATE_VALID (h266parse, GST_H266_PARSE_STATE_GOT_SPS))
@ -773,9 +767,7 @@ gst_h266_parse_process_nal (GstH266Parse * h266parse, GstH266NalUnit * nalu)
break; break;
case GST_H266_NAL_PREFIX_APS: case GST_H266_NAL_PREFIX_APS:
case GST_H266_NAL_SUFFIX_APS: case GST_H266_NAL_SUFFIX_APS:
/* *INDENT-OFF* */ memset (aps, 0, sizeof (*aps));
*aps = (GstH266APS) { 0, };
/* *INDENT-ON* */
/* expected state: got-sps and pps */ /* expected state: got-sps and pps */
if (!GST_H266_PARSE_STATE_VALID (h266parse, if (!GST_H266_PARSE_STATE_VALID (h266parse,
GST_H266_PARSE_STATE_VALID_SPS_PPS)) GST_H266_PARSE_STATE_VALID_SPS_PPS))
@ -810,9 +802,7 @@ gst_h266_parse_process_nal (GstH266Parse * h266parse, GstH266NalUnit * nalu)
break; break;
case GST_H266_NAL_PH: case GST_H266_NAL_PH:
{ {
/* *INDENT-OFF* */ memset (ph, 0, sizeof (*ph));
*ph = (GstH266PicHdr) { 0, };
/* *INDENT-ON* */
/* expected state: got-sps and pps */ /* expected state: got-sps and pps */
if (!GST_H266_PARSE_STATE_VALID (h266parse, if (!GST_H266_PARSE_STATE_VALID (h266parse,
GST_H266_PARSE_STATE_VALID_SPS_PPS)) GST_H266_PARSE_STATE_VALID_SPS_PPS))