@@ -681,8 +681,7 @@ void DMXSerialClass2::_processRDMMessage(byte CmdClass, uint16_t Parameter, bool
681
681
nackReason = E120_NR_SUB_DEVICE_OUT_OF_RANGE;
682
682
} else {
683
683
// return the manufacturer label
684
- _rdm.packet .DataLength = strlen (_initData->manufacturerLabel );
685
- _rdm.packet .DataLength = min (_rdm.packet .DataLength , DMXSERIAL_MAX_RDM_STRING_LENGTH);
684
+ _rdm.packet .DataLength = strnlen (_initData->manufacturerLabel , DMXSERIAL_MAX_RDM_STRING_LENGTH);
686
685
memcpy (_rdm.packet .Data , _initData->manufacturerLabel , _rdm.packet .DataLength );
687
686
handled = true ;
688
687
}
@@ -701,8 +700,7 @@ void DMXSerialClass2::_processRDMMessage(byte CmdClass, uint16_t Parameter, bool
701
700
nackReason = E120_NR_SUB_DEVICE_OUT_OF_RANGE;
702
701
} else {
703
702
// return the DEVICE MODEL DESCRIPTION
704
- _rdm.packet .DataLength = strlen (_initData->deviceModel );
705
- _rdm.packet .DataLength = min (_rdm.packet .DataLength , DMXSERIAL_MAX_RDM_STRING_LENGTH);
703
+ _rdm.packet .DataLength = strnlen (_initData->deviceModel , DMXSERIAL_MAX_RDM_STRING_LENGTH);
706
704
memcpy (_rdm.packet .Data , _initData->deviceModel , _rdm.packet .DataLength );
707
705
handled = true ;
708
706
}
@@ -732,8 +730,7 @@ void DMXSerialClass2::_processRDMMessage(byte CmdClass, uint16_t Parameter, bool
732
730
// No sub-devices supported
733
731
nackReason = E120_NR_SUB_DEVICE_OUT_OF_RANGE;
734
732
} else {
735
- _rdm.packet .DataLength = strlen (deviceLabel);
736
- _rdm.packet .DataLength = min (_rdm.packet .DataLength , DMXSERIAL_MAX_RDM_STRING_LENGTH);
733
+ _rdm.packet .DataLength = strnlen (deviceLabel, DMXSERIAL_MAX_RDM_STRING_LENGTH);
737
734
memcpy (_rdm.packet .Data , deviceLabel, _rdm.packet .DataLength );
738
735
handled = true ;
739
736
}
@@ -749,8 +746,7 @@ void DMXSerialClass2::_processRDMMessage(byte CmdClass, uint16_t Parameter, bool
749
746
nackReason = E120_NR_SUB_DEVICE_OUT_OF_RANGE;
750
747
} else {
751
748
// return the SOFTWARE_VERSION_LABEL
752
- _rdm.packet .DataLength = strlen (_softwareLabel);
753
- _rdm.packet .DataLength = min (_rdm.packet .DataLength , DMXSERIAL_MAX_RDM_STRING_LENGTH);
749
+ _rdm.packet .DataLength = strnlen (_softwareLabel, DMXSERIAL_MAX_RDM_STRING_LENGTH);
754
750
memcpy (_rdm.packet .Data , _softwareLabel, _rdm.packet .DataLength );
755
751
handled = true ;
756
752
}
@@ -847,9 +843,7 @@ void DMXSerialClass2::_processRDMMessage(byte CmdClass, uint16_t Parameter, bool
847
843
// Out of range sensor
848
844
nackReason = E120_NR_DATA_OUT_OF_RANGE;
849
845
} else {
850
- _rdm.packet .DataLength = strlen (_initData->sensors [sensorNr].description );
851
- _rdm.packet .DataLength = min (_rdm.packet .DataLength , DMXSERIAL_MAX_RDM_STRING_LENGTH);
852
- _rdm.packet .DataLength = 13 + _rdm.packet .DataLength ;
846
+ _rdm.packet .DataLength = 13 + strnlen (_initData->sensors [sensorNr].description , DMXSERIAL_MAX_RDM_STRING_LENGTH);
853
847
_rdm.packet .Data [0 ] = sensorNr;
854
848
_rdm.packet .Data [1 ] = _initData->sensors [sensorNr].type ;
855
849
_rdm.packet .Data [2 ] = _initData->sensors [sensorNr].unit ;
0 commit comments