Skip to content

Commit 2f335e7

Browse files
committed
Fix Uninitialized NULL Pointer Dereference Bug in Firmata I2C Message Processing
1 parent ebd19be commit 2f335e7

File tree

1 file changed

+8
-0
lines changed

1 file changed

+8
-0
lines changed

examples/StandardFirmata/StandardFirmata.ino

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -488,6 +488,10 @@ void sysexCallback(byte command, byte argc, byte *argv)
488488

489489
switch (command) {
490490
case I2C_REQUEST:
491+
if (argc < 2) {
492+
Firmata.sendString("I2C request requires address and configuration");
493+
return;
494+
}
491495
mode = argv[1] & I2C_READ_WRITE_MODE_MASK;
492496
if (argv[1] & I2C_10BIT_ADDRESS_MODE_MASK) {
493497
Firmata.sendString("10-bit addressing not supported");
@@ -508,6 +512,10 @@ void sysexCallback(byte command, byte argc, byte *argv)
508512

509513
switch (mode) {
510514
case I2C_WRITE:
515+
if (argc <= 2) {
516+
Firmata.sendString("I2C write requires data payload");
517+
return;
518+
}
511519
Wire.beginTransmission(slaveAddress);
512520
for (byte i = 2; i < argc; i += 2) {
513521
data = argv[i] + (argv[i + 1] << 7);

0 commit comments

Comments
 (0)