Skip to content

Commit 9f209c5

Browse files
author
Arto Kinnunen
committed
Review corrections
-Check pointer before writing to it. It allows application to ask only some of the stagger values. -Change type of data_amount in get_stagger_estimate_to_address to be uint16_t.
1 parent db2c970 commit 9f209c5

File tree

2 files changed

+20
-7
lines changed

2 files changed

+20
-7
lines changed

features/netsocket/InternetSocket.cpp

Lines changed: 14 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -120,6 +120,10 @@ int InternetSocket::get_latency_estimate_to_address(const SocketAddress &address
120120
nsapi_latency_req_t ns_api_latency_req;
121121
unsigned opt_len = sizeof(nsapi_latency_req_t);
122122

123+
if (!latency) {
124+
return NSAPI_ERROR_PARAMETER;
125+
}
126+
123127
// Set up address
124128
memcpy(ns_api_latency_req.addr, address.get_ip_bytes(), 16);
125129

@@ -132,7 +136,7 @@ int InternetSocket::get_latency_estimate_to_address(const SocketAddress &address
132136
return ret;
133137
}
134138

135-
int InternetSocket::get_stagger_estimate_to_address(const SocketAddress &address, uint32_t data_amount, uint16_t *stagger_min, uint16_t *stagger_max, uint16_t *stagger_rand)
139+
int InternetSocket::get_stagger_estimate_to_address(const SocketAddress &address, uint16_t data_amount, uint16_t *stagger_min, uint16_t *stagger_max, uint16_t *stagger_rand)
136140
{
137141
nsapi_error_t ret;
138142
nsapi_stagger_req_t nsapi_stagger;
@@ -145,9 +149,15 @@ int InternetSocket::get_stagger_estimate_to_address(const SocketAddress &address
145149
ret = this->getsockopt(NSAPI_SOCKET, NSAPI_STAGGER, (void *)&nsapi_stagger, &opt_len);
146150
if (ret == NSAPI_ERROR_OK) {
147151
// success, stagger found
148-
*stagger_min = nsapi_stagger.stagger_min;
149-
*stagger_max = nsapi_stagger.stagger_max;
150-
*stagger_rand = nsapi_stagger.stagger_rand;
152+
if (stagger_min) {
153+
*stagger_min = nsapi_stagger.stagger_min;
154+
}
155+
if (stagger_max) {
156+
*stagger_max = nsapi_stagger.stagger_max;
157+
}
158+
if (stagger_rand) {
159+
*stagger_rand = nsapi_stagger.stagger_rand;
160+
}
151161
}
152162

153163
return ret;

features/netsocket/InternetSocket.h

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -90,7 +90,9 @@ class InternetSocket : public Socket {
9090
*
9191
* @param address Destination address to estimate latency.
9292
* @param latency Returned latency value in milliseconds.
93-
* @return NSAPI_ERROR_OK on success, negative error code on failure (@see InternetSocket::getsockopt).
93+
* @return NSAPI_ERROR_OK on success.
94+
* @return NSAPI_ERROR_PARAMETER if the provided pointer is invalid.
95+
* @return negative error code on other failures (@see InternetSocket::getsockopt).
9496
*/
9597
int get_latency_estimate_to_address(const SocketAddress &address, uint32_t *latency);
9698

@@ -101,9 +103,10 @@ class InternetSocket : public Socket {
101103
* @param stagger_min Minimum stagger value in seconds.
102104
* @param stagger_max Maximum stagger value in seconds.
103105
* @param stagger_rand Randomized stagger value in seconds.
104-
* @return NSAPI_ERROR_OK on success, negative error code on failure (@see InternetSocket::getsockopt).
106+
* @return NSAPI_ERROR_OK on success.
107+
* @return negative error code on other failures (@see InternetSocket::getsockopt).
105108
*/
106-
int get_stagger_estimate_to_address(const SocketAddress &address, uint32_t data_amount, uint16_t *stagger_min, uint16_t *stagger_max, uint16_t *stagger_rand);
109+
int get_stagger_estimate_to_address(const SocketAddress &address, uint16_t data_amount, uint16_t *stagger_min, uint16_t *stagger_max, uint16_t *stagger_rand);
107110

108111
/** Bind the socket to a port on which to receive data.
109112
*

0 commit comments

Comments
 (0)