@@ -88,17 +88,18 @@ ATHandler::ATHandler(FileHandle *fh, EventQueue &queue, int timeout, const char
88
88
clear_error ();
89
89
90
90
if (output_delimiter) {
91
- _output_delimiter_length = strlen (output_delimiter);
92
- _output_delimiter = new char [_output_delimiter_length];
93
- for (unsigned i=0 ; i<_output_delimiter_length; i++) {
94
- _output_delimiter[i] = output_delimiter[i];
91
+ _output_delimiter = new char [strlen (output_delimiter) + 1 ];
92
+ if (!_output_delimiter) {
93
+ MBED_ASSERT (0 );
94
+ } else {
95
+ memcpy (_output_delimiter, output_delimiter, strlen (output_delimiter) + 1 );
95
96
}
96
97
} else {
97
- _output_delimiter = NULL ;
98
- _output_delimiter_length = 0 ;
98
+ _output_delimiter = NULL ;
99
99
}
100
100
101
101
reset_buffer ();
102
+ memset (_recv_buff, 0 , sizeof (_recv_buff));
102
103
memset (_info_resp_prefix, 0 , sizeof (_info_resp_prefix));
103
104
104
105
_current_scope = NotSet;
@@ -481,7 +482,9 @@ ssize_t ATHandler::read_string(char *buf, size_t size, bool read_even_stop_tag)
481
482
break ;
482
483
} else if (c == ' \" ' ) {
483
484
match_pos = 0 ;
484
- len--;
485
+ if (len > 0 ) {
486
+ len--;
487
+ }
485
488
continue ;
486
489
} else if (_stop_tag->len && c == _stop_tag->tag [match_pos]) {
487
490
match_pos++;
@@ -694,11 +697,9 @@ void ATHandler::set_3gpp_error(int err, DeviceErrorType error_type)
694
697
695
698
void ATHandler::at_error (bool error_code_expected, DeviceErrorType error_type)
696
699
{
697
- int32_t err = -1 ;
698
-
699
700
if (error_code_expected && (error_type == DeviceErrorTypeErrorCMS || error_type == DeviceErrorTypeErrorCME)) {
700
701
set_scope (InfoType);
701
- err = read_int ();
702
+ int32_t err = read_int ();
702
703
703
704
if (err != -1 ) {
704
705
set_3gpp_error (err, error_type);
@@ -1052,7 +1053,7 @@ void ATHandler::cmd_stop()
1052
1053
return ;
1053
1054
}
1054
1055
// Finish with CR
1055
- (void )write (_output_delimiter, _output_delimiter_length );
1056
+ (void )write (_output_delimiter, strlen (_output_delimiter) );
1056
1057
}
1057
1058
1058
1059
size_t ATHandler::write_bytes (const uint8_t *data, size_t len)
0 commit comments