[alsa-devel] [PATCH] amidi: add delay option
Clemens Ladisch
clemens at ladisch.de
Fri Aug 12 09:10:17 CEST 2016
Felipe F. Tonello wrote:
> This patch adds a new options to amidi tool to add a delay (in milliseconds)
> to each MIDI message.
>
> This is very useful when sending firmware updates to a remote device via SysEx
> or any other use that requires this delay in between messages.
> + case 0xf4:
> + case 0xf5:
> + return 0; /* ignore */
> + case 0xf7:
> + return 0; /* ignore */
Silent data loss is bad.
> + case 0x00 ... 0x7f:
> + return rstate_len ?: rstate_len - 1;
rstate_len - 1 == -1
> + int len = message_length(*data);
> +
> + /* check for variable length */
> + if (len == -1) {
> + int i = 0;
> + while (data[i++] != 0xf7);
Possible buffer overflow.
> + if (len > 0 &&
> + (err = snd_rawmidi_write(output, data, len)) < 0) {
Same here.
The most robust way to find message boundaries probably would be a state
machine. However, there is actually no requirement to find all message
boundaries; the _actual_ requirement is to insert pauses between SysEx
messages. So don't bother to try to parse everything; just search for
F0 or F7.
Regards,
Clemens
More information about the Alsa-devel
mailing list