[FFmpeg-devel] [PATCH 8/8] avcodec/codec_internal: Include codec_tags only when they are needed
Andreas Rheinhardt
andreas.rheinhardt at outlook.com
Fri Mar 18 15:39:56 EET 2022
Michael Niedermayer:
> On Fri, Mar 18, 2022 at 02:13:16PM +0100, Michael Niedermayer wrote:
>> On Fri, Mar 18, 2022 at 11:52:54AM +0100, Andreas Rheinhardt wrote:
>>> They are only needed for the fuzzer, so check for CONFIG_OSSFUZZ.
>>> This decreases sizeof(FFCodec), which is important given that
>>> FFCodecs reside in .data.rel.ro in case of ELF with
>>> position-independent code which is always loaded and can't be shared
>>> between processes.
>>>
>>
>> They are currently only used by the fuzzer, if there is no other
>> use, iam not sure. But i agree shareable memory would be better for them
>>
>>
>> [...]
>>> diff --git a/tools/target_dec_fuzzer.c b/tools/target_dec_fuzzer.c
>>> index 288aa63313..77f4bb8dd8 100644
>>> --- a/tools/target_dec_fuzzer.c
>>> +++ b/tools/target_dec_fuzzer.c
>>> @@ -279,12 +279,14 @@ int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) {
>>> ctx->sample_rate = bytestream2_get_le32(&gbc) & 0x7FFFFFFF;
>>> ctx->ch_layout.nb_channels = (unsigned)bytestream2_get_le32(&gbc) % FF_SANE_NB_CHANNELS;
>>> ctx->block_align = bytestream2_get_le32(&gbc) & 0x7FFFFFFF;
>>> +#if CONFIG_OSSFUZZ
>>> ctx->codec_tag = bytestream2_get_le32(&gbc);
>>> if (c->codec_tags) {
>>> int n;
>>> for (n = 0; c->codec_tags[n] != FF_CODEC_TAGS_END; n++);
>>> ctx->codec_tag = c->codec_tags[ctx->codec_tag % n];
>>> }
>>> +#endif
>>> keyframes = bytestream2_get_le64(&gbc);
>>> request_channel_layout = bytestream2_get_le64(&gbc);
>>>
>>
>> how does the fuzzer work without the fuzzer ?
>
> or is the idea to build test this even without oss-fuzz somehow?
>
Yes, this #if CONFIG_OSSFUZZ is just intended to make it still compile
in this case.
- Andreas
More information about the ffmpeg-devel
mailing list