Coverity issues fixed

pull/11224/head
Antti Kauppila 2019-08-14 16:22:05 +03:00
parent 0a73eda9d4
commit 84063bf222
9 changed files with 46 additions and 15 deletions

View File

@ -110,6 +110,11 @@ int hex_str_to_char_str(const char *str, uint16_t len, char *buf)
return 1;
}
void hex_to_char(const char *hex, char &buf)
{
buf = CellularUtil_stub::char_ptr[CellularUtil_stub::char_pos++];
}
void uint_to_binary_str(uint32_t num, char *str, int str_size, int bit_cnt)
{

View File

@ -49,12 +49,14 @@ ESP8266::ESP8266(PinName tx, PinName rx, bool debug, PinName rts, PinName cts)
_parser(&_serial),
_packets(0),
_packets_end(&_packets),
_sock_active_id(-1),
_heap_usage(0),
_connect_error(0),
_disconnect(false),
_fail(false),
_sock_already(false),
_closed(false),
_error(false),
_busy(false),
_reset_check(_rmutex),
_reset_done(false),
@ -97,6 +99,10 @@ ESP8266::ESP8266(PinName tx, PinName rx, bool debug, PinName rts, PinName cts)
_sock_i[i].tcp_data_avbl = 0;
_sock_i[i].tcp_data_rcvd = 0;
}
_scan_r.res = NULL;
_scan_r.limit = 0;
_scan_r.cnt = 0;
}
bool ESP8266::at_available()
@ -328,8 +334,8 @@ nsapi_error_t ESP8266::connect(const char *ap, const char *passPhrase)
_smutex.lock();
set_timeout(ESP8266_CONNECT_TIMEOUT);
_parser.send("AT+CWJAP_CUR=\"%s\",\"%s\"", ap, passPhrase);
if (!_parser.recv("OK\n")) {
bool res = _parser.send("AT+CWJAP_CUR=\"%s\",\"%s\"", ap, passPhrase);
if (!res || !_parser.recv("OK\n")) {
if (_fail) {
if (_connect_error == 1) {
ret = NSAPI_ERROR_CONNECTION_TIMEOUT;

View File

@ -94,6 +94,7 @@ ESP8266Interface::ESP8266Interface(PinName tx, PinName rx, bool debug, PinName r
_if_blocking(true),
_if_connected(_cmutex),
_initialized(false),
_connect_retval(NSAPI_ERROR_OK),
_conn_stat(NSAPI_STATUS_DISCONNECTED),
_conn_stat_cb(NULL),
_global_event_queue(mbed_event_queue()), // Needs to be set before attaching event() to SIGIO
@ -298,7 +299,7 @@ int ESP8266Interface::set_credentials(const char *ssid, const char *pass, nsapi_
if (pass_length >= ESP8266_PASSPHRASE_MIN_LENGTH
&& pass_length <= ESP8266_PASSPHRASE_MAX_LENGTH) {
memset(ap_pass, 0, sizeof(ap_pass));
strncpy(ap_pass, pass, sizeof(ap_pass));
strncpy(ap_pass, pass, ESP8266_PASSPHRASE_MAX_LENGTH);
} else {
return NSAPI_ERROR_PARAMETER;
}

View File

@ -698,7 +698,7 @@ ssize_t ATHandler::read_hex_string(char *buf, size_t size)
} else {
hexbuf[read_idx % 2] = c;
if (read_idx % 2 == 1) {
hex_str_to_char_str(hexbuf, 2, buf + buf_idx);
hex_to_char(hexbuf, *(buf + buf_idx));
}
}
}
@ -923,7 +923,7 @@ void ATHandler::resp(const char *prefix, bool check_urc)
while (!get_last_error()) {
match(CRLF, CRLF_LENGTH);
(void)match(CRLF, CRLF_LENGTH);
if (match(OK, OK_LENGTH)) {
set_scope(RespType);
@ -1281,6 +1281,7 @@ void ATHandler::cmd_start_stop(const char *cmd, const char *cmd_chr, const char
nsapi_error_t ATHandler::at_cmd_str(const char *cmd, const char *cmd_chr, char *resp_buf, size_t buf_size, const char *format, ...)
{
MBED_ASSERT(strlen(cmd) < BUFF_SIZE);
lock();
handle_start(cmd, cmd_chr);

View File

@ -188,7 +188,7 @@ void AT_CellularSMS::cmt_urc()
{
tr_debug("CMT_URC called");
//+CMT: <oa>,[<alpha>],<scts>[,<tooa>,<fo>,<pid>,<dcs>,<sca>,<tosca>,<length>]<CR><LF><data>
_at.consume_to_stop_tag();
(void)_at.consume_to_stop_tag();
// call user defined callback function
if (_cb) {
_cb();
@ -1205,7 +1205,7 @@ uint16_t AT_CellularSMS::unpack_7_bit_gsm_to_str(const char *str, int len, char
char tmp1;
if (padding_bits) {
hex_str_to_char_str(str, 2, &tmp);
hex_to_char(str, tmp);
buf[decodedCount] = gsm_to_ascii[(tmp >> padding_bits) & 0x7F];
strCount++;
decodedCount++;
@ -1213,19 +1213,19 @@ uint16_t AT_CellularSMS::unpack_7_bit_gsm_to_str(const char *str, int len, char
while (strCount < len) {
shift = (strCount - padding_bits) % 7;
hex_str_to_char_str(str + strCount * 2, 2, &tmp);
hex_to_char(str + strCount * 2, tmp);
if (shift == 0) {
buf[decodedCount] = gsm_to_ascii[tmp & 0x7F];
} else if (shift == 6) {
hex_str_to_char_str(str + (strCount - 1) * 2, 2, &tmp1);
hex_to_char(str + (strCount - 1) * 2, tmp1);
buf[decodedCount] = gsm_to_ascii[(((tmp1 >> 2)) | (tmp << 6)) & 0x7F];
if (decodedCount + 1 < msg_len) {
hex_str_to_char_str(str + strCount * 2, 2, &tmp);
hex_to_char(str + strCount * 2, tmp);
decodedCount++;
buf[decodedCount] = gsm_to_ascii[(tmp >> 1) & 0x7F];
}
} else {
hex_str_to_char_str(str + (strCount - 1) * 2, 2, &tmp1);
hex_to_char(str + (strCount - 1) * 2, tmp1);
buf[decodedCount] = gsm_to_ascii[(((tmp1 >> (8 - shift))) | ((tmp << shift))) & 0x7F];
}

View File

@ -271,15 +271,22 @@ int hex_str_to_char_str(const char *str, uint16_t len, char *buf)
{
int strcount = 0;
for (int i = 0; i + 1 < len; i += 2) {
int upper = hex_str_to_int(str + i, 1);
int lower = hex_str_to_int(str + i + 1, 1);
buf[strcount] = ((upper << 4) & 0xF0) | (lower & 0x0F);
char tmp;
hex_to_char(str + i, tmp);
buf[strcount] = tmp;
strcount++;
}
return strcount;
}
void hex_to_char(const char *hex, char &buf)
{
int upper = hex_str_to_int(hex, 1);
int lower = hex_str_to_int(hex + 1, 1);
buf = ((upper << 4) & 0xF0) | (lower & 0x0F);
}
void uint_to_binary_str(uint32_t num, char *str, int str_size, int bit_cnt)
{
if (!str || str_size < bit_cnt) {

View File

@ -105,6 +105,13 @@ int hex_str_to_int(const char *hex_string, int hex_string_length);
*/
int hex_str_to_char_str(const char *str, uint16_t len, char *buf);
/** Converts the given hex string to char
*
* @param str A hex value that is converted to char
* @param buf A char variable where result conversion is stored
*/
void hex_to_char(const char *hex, char &buf);
/** Converts the given uint to binary string. Fills the given str starting from [0] with the number of bits defined by bit_cnt
* For example uint_to_binary_string(9, str, 10) would fill str "0000001001"
* For example uint_to_binary_string(9, str, 3) would fill str "001"

View File

@ -478,6 +478,7 @@ nsapi_size_or_error_t QUECTEL_M26_CellularStack::socket_sendto_impl(CellularSock
_at.resp_start("+QISACK:");
sent_len_before = _at.read_int();
sent_acked = _at.read_int();
(void)sent_acked;
sent_nacked = _at.read_int();
_at.resp_stop();

View File

@ -162,6 +162,7 @@ void LWIP::tcpip_init_irq(void *eh)
LWIP::LWIP()
{
default_interface = NULL;
tcpip_thread_id = NULL;
// Seed lwip random
lwip_seed_random();
@ -208,7 +209,9 @@ nsapi_error_t LWIP::add_dns_server(const SocketAddress &address, const char *int
const ip_addr_t *ip_addr_move;
ip_addr_t ip_addr;
convert_mbed_addr_to_lwip(&ip_addr, &addr);
if (!convert_mbed_addr_to_lwip(&ip_addr, &addr)) {
return NSAPI_ERROR_PARAMETER;
}
if (ip_addr_isany(&ip_addr)) {
return NSAPI_ERROR_NO_ADDRESS;