1
0
Fork 0
mirror of https://github.com/betaflight/betaflight.git synced 2025-07-25 17:25:20 +03:00

Merge pull request #9089 from jflyper/bfdev-serial-blackbox-handle-buffer-overflow-properly

Serial blackbox: check TX buffer space before calling serialWrite
This commit is contained in:
Michael Keller 2019-10-27 15:29:51 +13:00 committed by GitHub
commit 0fd4dec942
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23

View file

@ -127,15 +127,23 @@ void blackboxWrite(uint8_t value)
#endif #endif
case BLACKBOX_DEVICE_SERIAL: case BLACKBOX_DEVICE_SERIAL:
default: default:
{
int txBytesFree = serialTxBytesFree(blackboxPort);
#ifdef DEBUG_BB_OUTPUT #ifdef DEBUG_BB_OUTPUT
bbBits += 2; bbBits += 2;
if (serialTxBytesFree(blackboxPort) == 0) { DEBUG_SET(DEBUG_BLACKBOX_OUTPUT, 3, txBytesFree);
++bbDrops;
DEBUG_SET(DEBUG_BLACKBOX_OUTPUT, 2, bbDrops);
return;
}
#endif #endif
serialWrite(blackboxPort, value);
if (txBytesFree == 0) {
#ifdef DEBUG_BB_OUTPUT
++bbDrops;
DEBUG_SET(DEBUG_BLACKBOX_OUTPUT, 2, bbDrops);
#endif
return;
}
serialWrite(blackboxPort, value);
}
break; break;
} }
@ -181,7 +189,7 @@ int blackboxWriteString(const char *s)
default: default:
pos = (uint8_t*) s; pos = (uint8_t*) s;
while (*pos) { while (*pos) {
serialWrite(blackboxPort, *pos); blackboxWrite(*pos);
pos++; pos++;
} }