diff options
author | Alex Blasche <alexander.blasche@theqtcompany.com> | 2015-12-18 14:12:29 +0100 |
---|---|---|
committer | Alex Blasche <alexander.blasche@theqtcompany.com> | 2015-12-18 13:24:02 +0000 |
commit | 2bb7b51463767233e4490dd25433c6c183da9192 (patch) | |
tree | 59e4e305cc474fd7a5ad7f5d2600322fec9e137d /src | |
parent | 8e8e27abaeb6fbf5bc9fdf6ca937aff74d21244c (diff) |
Don't attempt to write an invalid QCanBusFrame
Change-Id: I9b73c9bdfe933a74302b4871aa40d5a025496b8c
Reviewed-by: Rolf Eike Beer <eb@emlix.com>
Reviewed-by: Alex Blasche <alexander.blasche@theqtcompany.com>
Diffstat (limited to 'src')
-rw-r--r-- | src/plugins/canbus/peakcan/peakcanbackend.cpp | 5 | ||||
-rw-r--r-- | src/plugins/canbus/socketcan/socketcanbackend.cpp | 5 | ||||
-rw-r--r-- | src/plugins/canbus/tinycan/tinycanbackend.cpp | 5 |
3 files changed, 15 insertions, 0 deletions
diff --git a/src/plugins/canbus/peakcan/peakcanbackend.cpp b/src/plugins/canbus/peakcan/peakcanbackend.cpp index 41d8763..3bea3f0 100644 --- a/src/plugins/canbus/peakcan/peakcanbackend.cpp +++ b/src/plugins/canbus/peakcan/peakcanbackend.cpp @@ -517,6 +517,11 @@ bool PeakCanBackend::writeFrame(const QCanBusFrame &newData) if (state() != QCanBusDevice::ConnectedState) return false; + if (!newData.isValid()) { + setError(tr("Cannot write invalid QCanBusFrame"), QCanBusDevice::WriteError); + return false; + } + if (newData.frameType() != QCanBusFrame::DataFrame && newData.frameType() != QCanBusFrame::RemoteRequestFrame) { setError(tr("Unable to write a frame with unacceptable type"), diff --git a/src/plugins/canbus/socketcan/socketcanbackend.cpp b/src/plugins/canbus/socketcan/socketcanbackend.cpp index 49d641f..0105dae 100644 --- a/src/plugins/canbus/socketcan/socketcanbackend.cpp +++ b/src/plugins/canbus/socketcan/socketcanbackend.cpp @@ -319,6 +319,11 @@ bool SocketCanBackend::writeFrame(const QCanBusFrame &newData) if (state() != ConnectedState) return false; + if (!newData.isValid()) { + setError(tr("Cannot write invalid QCanBusFrame"), QCanBusDevice::WriteError); + return false; + } + canid_t canId = newData.frameId(); if (newData.hasExtendedFrameFormat()) canId |= CAN_EFF_FLAG; diff --git a/src/plugins/canbus/tinycan/tinycanbackend.cpp b/src/plugins/canbus/tinycan/tinycanbackend.cpp index 4924141..669c153 100644 --- a/src/plugins/canbus/tinycan/tinycanbackend.cpp +++ b/src/plugins/canbus/tinycan/tinycanbackend.cpp @@ -541,6 +541,11 @@ bool TinyCanBackend::writeFrame(const QCanBusFrame &newData) if (state() != QCanBusDevice::ConnectedState) return false; + if (!newData.isValid()) { + setError(tr("Cannot write invalid QCanBusFrame"), QCanBusDevice::WriteError); + return false; + } + if (newData.frameType() != QCanBusFrame::DataFrame && newData.frameType() != QCanBusFrame::RemoteRequestFrame && newData.frameType() != QCanBusFrame::ErrorFrame) { |