libextractor

GNU libextractor
Log | Files | Refs | Submodules | README | LICENSE

commit a1762678e981a33a3c0f1ddc7ee2040f349415e4
parent 2e994884cc62fe321a5bdc7791d992306b28ce91
Author: Christian Grothoff <christian@grothoff.org>
Date:   Tue, 30 Jun 2026 18:44:14 +0200

check libsmf buffer layout is as expected

Diffstat:
Msrc/plugins/midi_extractor.c | 7+++++++
Msrc/plugins/rpm_extractor.c | 3+++
2 files changed, 10 insertions(+), 0 deletions(-)

diff --git a/src/plugins/midi_extractor.c b/src/plugins/midi_extractor.c @@ -56,6 +56,9 @@ enum EventType * @param ec extraction context provided to the plugin */ void +EXTRACTOR_midi_extract_method (struct EXTRACTOR_ExtractContext *ec); + +void EXTRACTOR_midi_extract_method (struct EXTRACTOR_ExtractContext *ec) { void *buf; @@ -104,7 +107,11 @@ EXTRACTOR_midi_extract_method (struct EXTRACTOR_ExtractContext *ec) { if (! smf_event_is_metadata (event)) break; + if (event->midi_buffer_length < 3) + continue; /* need at least FF type len */ len = event->midi_buffer[2]; + if (event->midi_buffer_length < 3 + (int) len) + continue; /* declared length exceeds available buffer */ if ( (len > 0) && isspace (event->midi_buffer[2 + len])) len--; diff --git a/src/plugins/rpm_extractor.c b/src/plugins/rpm_extractor.c @@ -247,6 +247,9 @@ static struct Matches tests[] = { * @param ec extraction context provided to the plugin */ void +EXTRACTOR_rpm_extract_method (struct EXTRACTOR_ExtractContext *ec); + +void EXTRACTOR_rpm_extract_method (struct EXTRACTOR_ExtractContext *ec) { struct PipeArgs parg;