freemodbus: potential loss of significant bits and auto merge issues

* Original commit: espressif/esp-idf@9457555173
This commit is contained in:
aleks
2021-02-08 09:25:25 +01:00
parent ddd3e3394b
commit ee9f8620d7
2 changed files with 2 additions and 2 deletions

View File

@ -184,7 +184,7 @@ eMBFuncReadHoldingRegister( UCHAR * pucFrame, USHORT * usLen )
usRegAddress++; usRegAddress++;
usRegCount = ( USHORT )( pucFrame[MB_PDU_FUNC_READ_REGCNT_OFF] << 8 ); usRegCount = ( USHORT )( pucFrame[MB_PDU_FUNC_READ_REGCNT_OFF] << 8 );
usRegCount = ( USHORT )( pucFrame[MB_PDU_FUNC_READ_REGCNT_OFF + 1] ); usRegCount |= ( USHORT )( pucFrame[MB_PDU_FUNC_READ_REGCNT_OFF + 1] );
/* Check if the number of registers to read is valid. If not /* Check if the number of registers to read is valid. If not
* return Modbus illegal data value exception. * return Modbus illegal data value exception.

View File

@ -384,7 +384,7 @@ static esp_err_t mbc_tcp_master_set_request(char* name, mb_param_mode_t mode, mb
continue; // The length of strings is different then check next record in the table continue; // The length of strings is different then check next record in the table
} }
// Compare the name of parameter with parameter key from table // Compare the name of parameter with parameter key from table
uint8_t comp_result = memcmp((const char*)name, (const char*)reg_ptr->param_key, (size_t)param_key_len); int comp_result = memcmp((const void*)name, (const void*)reg_ptr->param_key, (size_t)param_key_len);
if (comp_result == 0) { if (comp_result == 0) {
// The correct line is found in the table and reg_ptr points to the found parameter description // The correct line is found in the table and reg_ptr points to the found parameter description
request->slave_addr = reg_ptr->mb_slave_addr; request->slave_addr = reg_ptr->mb_slave_addr;