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:
| M | src/plugins/midi_extractor.c | | | 7 | +++++++ |
| M | src/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;