@@ -190,16 +190,19 @@ int thread_dhcp_client_get_global_address(int8_t interface, uint8_t dhcp_addr[st
190
190
}
191
191
192
192
srv_data_ptr = libdhcvp6_nontemporalAddress_server_data_allocate (interface , dhcp_client .libDhcp_instance , mac64 , DHCPV6_DUID_HARDWARE_EUI64_TYPE , prefix , dhcp_addr );
193
+ if (!srv_data_ptr ) {
194
+ tr_error ("OOM srv_data_ptr" );
195
+ return -1 ;
196
+ }
193
197
194
198
payload_len = libdhcpv6_solication_message_length (DHCPV6_DUID_HARDWARE_EUI64_TYPE , true, 0 );
195
199
payload_ptr = ns_dyn_mem_temporary_alloc (payload_len );
196
-
197
- if (payload_ptr == NULL || srv_data_ptr == NULL ) {
198
- ns_dyn_mem_free (payload_ptr );
200
+ if (!payload_ptr ) {
199
201
libdhcvp6_nontemporalAddress_server_data_free (srv_data_ptr );
200
- tr_error ("Out of memory " );
202
+ tr_error ("OOM payload_ptr " );
201
203
return -1 ;
202
204
}
205
+
203
206
dhcp_client .global_address_cb = error_cb ; //TODO Only supporting one instance globaly if we need more for different instances needs code.
204
207
srv_data_ptr -> GlobalAddress = true;
205
208
// Build solicit
@@ -214,7 +217,13 @@ int thread_dhcp_client_get_global_address(int8_t interface, uint8_t dhcp_addr[st
214
217
215
218
// send solicit
216
219
srv_data_ptr -> transActionId = dhcp_service_send_req (dhcp_client .service_instance , 0 , srv_data_ptr , dhcp_addr , payload_ptr , payload_len , dhcp_solicit_resp_cb );
217
- return srv_data_ptr -> transActionId ? 0 : -1 ;
220
+ if (srv_data_ptr -> transActionId == 0 ) {
221
+ ns_dyn_mem_free (payload_ptr );
222
+ libdhcvp6_nontemporalAddress_server_data_free (srv_data_ptr );
223
+ return -1 ;
224
+ }
225
+
226
+ return 0 ;
218
227
}
219
228
220
229
void thread_dhcp_client_global_address_renew (int8_t interface )
0 commit comments