mirror of
https://github.com/RIOT-OS/RIOT.git
synced 2025-12-28 16:01:18 +01:00
gnrc_sock_[udp|ip]: store return value before release
sock_[udp|ip]_recv returns `pkt->size` after pkt was released via `gnrc_pktbuf_release(pkt)`. This can result in wrong values returned by this functions and thus is not according to its sepecification. Storing this values before releasing pkt returning the stored values should fix this.
This commit is contained in:
parent
98f42eeea8
commit
e9047063ca
@ -120,8 +120,9 @@ ssize_t sock_ip_recv(sock_ip_t *sock, void *data, size_t max_len,
|
||||
return -EPROTO;
|
||||
}
|
||||
memcpy(data, pkt->data, pkt->size);
|
||||
res = (int)pkt->size;
|
||||
gnrc_pktbuf_release(pkt);
|
||||
return (int)pkt->size;
|
||||
return res;
|
||||
}
|
||||
|
||||
ssize_t sock_ip_send(sock_ip_t *sock, const void *data, size_t len,
|
||||
|
||||
@ -215,8 +215,9 @@ ssize_t sock_udp_recv(sock_udp_t *sock, void *data, size_t max_len,
|
||||
return -EPROTO;
|
||||
}
|
||||
memcpy(data, pkt->data, pkt->size);
|
||||
res = (int)pkt->size;
|
||||
gnrc_pktbuf_release(pkt);
|
||||
return (int)pkt->size;
|
||||
return res;
|
||||
}
|
||||
|
||||
ssize_t sock_udp_send(sock_udp_t *sock, const void *data, size_t len,
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user