Prevent Companion crash if input data is smaller than required (#4309)
This commit is contained in:
committed by
Bertrand Songis
parent
2fbe5a78d1
commit
d1547dd32d
@@ -68,6 +68,10 @@ class DataField {
|
||||
int Import(const QByteArray & input)
|
||||
{
|
||||
QBitArray bits = bytesToBits(input);
|
||||
if ((unsigned int)bits.size() < size()) {
|
||||
qDebug() << QString("Error importing %1: size to small %2/%3").arg(getName()).arg(input.size()).arg(size());
|
||||
return -1;
|
||||
}
|
||||
ImportBits(bits);
|
||||
return 0;
|
||||
}
|
||||
|
||||
@@ -40,6 +40,8 @@ class OpenTxGeneralData: public TransformedField {
|
||||
public:
|
||||
OpenTxGeneralData(GeneralSettings & generalData, Board::Type board, unsigned int version, unsigned int variant=0);
|
||||
|
||||
virtual const char * getName() { return internalField.getName(); }
|
||||
|
||||
protected:
|
||||
virtual void beforeExport();
|
||||
virtual void afterImport();
|
||||
@@ -107,7 +109,7 @@ class OpenTxModelData: public TransformedField {
|
||||
public:
|
||||
OpenTxModelData(ModelData & modelData, Board::Type board, unsigned int version, unsigned int variant);
|
||||
|
||||
const char * getName() { return name; }
|
||||
virtual const char * getName() { return internalField.getName(); }
|
||||
|
||||
protected:
|
||||
virtual void beforeExport();
|
||||
|
||||
@@ -171,7 +171,9 @@ template <class T, class M>
|
||||
bool OpenTxEepromInterface::loadFromByteArray(T & dest, const QByteArray & data, uint8_t version, uint32_t variant)
|
||||
{
|
||||
M manager(dest, board, version, variant);
|
||||
manager.Import(data);
|
||||
if (manager.Import(data) != 0) {
|
||||
return false;
|
||||
}
|
||||
// manager.Dump(); // Dumps the structure so that it's easy to check with firmware datastructs.h
|
||||
return true;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user