Skip to content

Commit e062233

Browse files
author
Mika Tervonen
authored
Merge pull request #25 from ARMmbed/pointer-check
Check validity of transaction pointer when sending data
2 parents 7a11be1 + f903edb commit e062233

File tree

3 files changed

+15
-3
lines changed

3 files changed

+15
-3
lines changed

source/coap_message_handler.c

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -160,6 +160,16 @@ int8_t coap_message_handler_destroy(coap_msg_handler_t *handle){
160160
return 0;
161161
}
162162

163+
coap_transaction_t *coap_message_handler_transaction_valid(coap_transaction_t *tr_ptr)
164+
{
165+
ns_list_foreach(coap_transaction_t, cur_ptr, &request_list) {
166+
if (cur_ptr == tr_ptr) {
167+
return tr_ptr;
168+
}
169+
}
170+
return NULL;
171+
}
172+
163173
coap_transaction_t *coap_message_handler_find_transaction(uint8_t *address_ptr, uint16_t port)
164174
{
165175
if( !address_ptr )

source/coap_service_api.c

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -123,18 +123,18 @@ static void own_free(void *ptr)
123123
static uint8_t coap_tx_function(uint8_t *data_ptr, uint16_t data_len, sn_nsdl_addr_s *address_ptr, void *param)
124124
{
125125
coap_service_t *this;
126-
coap_transaction_t *transaction_ptr = param;
126+
coap_transaction_t *transaction_ptr = coap_message_handler_transaction_valid(param);
127127
ns_address_t dest_addr;
128128

129129
if (!transaction_ptr || !data_ptr) {
130-
return 0;
130+
return -1;
131131
}
132132

133133
tr_debug("Service %d, CoAP TX Function", transaction_ptr->service_id);
134134

135135
this = service_find(transaction_ptr->service_id);
136136
if (!this) {
137-
return 0;
137+
return -1;
138138
}
139139

140140
memcpy(&(dest_addr.address), address_ptr->addr_ptr, 16);

source/include/coap_message_handler.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -65,6 +65,8 @@ extern coap_msg_handler_t *coap_message_handler_init(void *(*used_malloc_func_pt
6565

6666
extern int8_t coap_message_handler_destroy(coap_msg_handler_t *handle);
6767

68+
extern coap_transaction_t *coap_message_handler_transaction_valid(coap_transaction_t *tr_ptr);
69+
6870
extern coap_transaction_t *coap_message_handler_find_transaction(uint8_t *address_ptr, uint16_t port);
6971

7072
extern int16_t coap_message_handler_coap_msg_process(coap_msg_handler_t *handle, int8_t socket_id, uint8_t source_addr_ptr[static 16], uint16_t port,

0 commit comments

Comments
 (0)