avformat/nal: take into account removed zero bytes when calculating buffer size in nal_parse_units()

Fixes issue #23010

Signed-off-by: James Almer <jamrial@gmail.com>
This commit is contained in:
James Almer
2026-05-05 16:25:57 -03:00
parent 2f4ad2497e
commit 2948acd528
+5 -5
View File
@@ -87,10 +87,10 @@ static int nal_parse_units(AVIOContext *pb, NALUList *list,
break;
nal_end = ff_nal_find_startcode(nal_start, end);
size_t nalu_size = nal_end - nal_start;
while (nalu_size > 0 && nal_start[nalu_size - 1] == 0)
--nalu_size;
if (pb) {
ptrdiff_t nalu_size = nal_end - nal_start;
while (nalu_size > 0 && nal_start[nalu_size - 1] == 0)
--nalu_size;
avio_wb32(pb, nalu_size);
avio_write(pb, nal_start, nalu_size);
} else if (list->nb_nalus >= nalu_limit) {
@@ -102,9 +102,9 @@ static int nal_parse_units(AVIOContext *pb, NALUList *list,
return AVERROR(ENOMEM);
list->nalus = tmp;
tmp[list->nb_nalus++] = (NALU){ .offset = nal_start - p,
.size = nal_end - nal_start };
.size = nalu_size };
}
size += 4 + nal_end - nal_start;
size += 4 + nalu_size;
nal_start = nal_end;
}
return size;