1
0
mirror of https://github.com/RIOT-OS/RIOT.git synced 2024-12-29 04:50:03 +01:00
Commit Graph

487 Commits

Author SHA1 Message Date
Sören Tempel
f073dcdb3d gnrc_dhcpv6_client: Fix out-of-bounds access during option parsing
The _parse_reply function iterates over the DHCPv6 message options
twice but only performs sanity checks on the option length in the
first iteration. As such, both loop iterations need to be identical.
Unfortunately, there aren't without this commit as (1) they use
different maximum length values and (2) the first iteration stops
parsing as soon as it encounters a zero option while the second
doesn't. As such, it is possible for out-of-bounds read to be
performed by the second loop iteration. This commit fixes this.
2022-07-11 22:55:33 +02:00
Sören Tempel
4dcb8edcc8 asymcute: Fix deadlocks in REGACK, SUBACK and UNSUBACK handler
The handlers for these MQTT message lock the connection mutex on
function entry. During automated testing of asymcute, I discovered
return paths for these function which do not unlock the connection
mutex. This results in a deadlock which prevents asymcute from
sending any further messages.
2022-07-01 00:55:07 +02:00
Benjamin Valentin
8c4e5629d1 nanocoap_sock: fix debug output 2022-06-21 23:06:33 +02:00
Benjamin Valentin
11e40a9d61 nanocoap_sock: fix wrong assertion
The assertion is a bit overeager.
In case of receiving a wrong message ID, we re-try receive without
entering the STATE_REQUEST_SEND state again, so it is expected that
we get a non-NULL ctx/response from sock_udp_recv_buf().

What this assert should actually check is that we don't get a non-NULL
ctx after calling sock_udp_recv_buf() with a non-NULL ctx.

So make this explicit to not falsely fail the assertion.
2022-06-16 18:54:16 +02:00
benpicco
0a16f8266a
Merge pull request #17962 from benpicco/nanocoap_vfs-put
nanocoap_vfs: add nanocoap_vfs_put()
2022-06-16 11:53:36 +02:00
Benjamin Valentin
bb42f6a2f4 nanocoap_vfs: add nanocoap_vfs_put() 2022-06-08 17:19:03 +02:00
Benjamin Valentin
7029572ca7 sys/net/telnet: add telnet_server_disconnect() 2022-06-08 13:01:23 +02:00
benpicco
31b8518d20
Merge pull request #17965 from benpicco/coap_get_blockopt-uint8
nanocoap: use uint8_t for szx value
2022-05-25 14:00:04 +02:00
Benjamin Valentin
87359bb70a nanocoap_vfs: add nanocoap_vfs_get() 2022-05-24 09:32:57 +02:00
Benjamin Valentin
c6ba5d9180 gcoap_fileserver: use uint8_t for szx value 2022-05-23 23:43:21 +02:00
Benjamin Valentin
00221818b6 nanocoap: use uint8_t for szx value
The value is an exponent, 8 bits totally suffice here
2022-05-23 23:41:21 +02:00
chrysn
185dfea07f gcoap_fileserver: New module to serve VFS via CoAP 2022-05-22 16:36:21 +02:00
Benjamin Valentin
7c75852316 nanocoap_sock: clean up state management 2022-05-18 11:41:58 +02:00
benpicco
7c62c8983d
Merge pull request #17958 from benpicco/nanocoap-blockwise_put
nanocoap_sock: add nanocoap_sock_block_request()
2022-05-18 10:40:24 +02:00
Benjamin Valentin
b99d4b58bd nanocoap_sock: add nanocoap_sock_block_request() 2022-05-17 23:07:23 +02:00
Benjamin Valentin
f2279e43ae nanocoap_sock: support sending CoAP packet with payload snips 2022-05-17 23:07:23 +02:00
Martine Lenders
dbed2b48ea
nanocoap_cache: add helper function to check if entry is stale 2022-05-13 12:14:55 +02:00
Martine Lenders
310ed649ae
gcoap: reflect truncation with caching 2022-05-13 12:14:55 +02:00
Martine Lenders
70d0d7f624
gcoap_forward_proxy: only leave upstream validation for caching
Most of the caching operation was moved to the client code. Since the
forward proxy is using that code for upstream messaging, interacting
with the cache directly is not necessary anymore.

The only cache-related thing necessary for the proxy is validating ETags
from upstream. However, that can be done by just looking at the ETags
from the upstream response (which may or may not have come from the
cache).
2022-05-13 12:14:55 +02:00
Martine Lenders
728c7d6088
gcoap: add nanocoap_cache support for clients 2022-05-13 12:14:54 +02:00
Martine Lenders
cbbde07cc6
gcoap: add helper function to get request header from a request memo 2022-05-12 15:22:05 +02:00
Martine Lenders
73bcd83543
nanocoap_cache, forward_proxy: add ETag validation support 2022-05-12 13:22:41 +02:00
Cenk Gündoğan
c5eb53095d
gcoap: integrate nanocoap cache 2022-05-10 18:43:57 +02:00
Cenk Gündoğan
8750605d26
nanocoap: add cache for response messages 2022-05-10 18:43:56 +02:00
Marian Buschsieweke
eadd282cf4
Merge pull request #18026 from benpicco/gcoap_add_fix
gcoap: ensure response address is the same as request address
2022-05-10 10:49:56 +02:00
Marian Buschsieweke
3dad6740da
Merge pull request #17990 from benpicco/nanocoap-void
nanocoap: use void * for payload bytes
2022-05-10 10:49:05 +02:00
Benjamin Valentin
e621afb2dc gcoap: ensure response address is the same as request address
If a node has multiple addresses we must reply to a request with the
same address on which the request was received.
2022-05-10 09:24:56 +02:00
Benjamin Valentin
0847c18a18 nanocoap: use size_t for payload_len 2022-05-03 11:32:20 +02:00
Benjamin Valentin
cabb2c912d nanocoap: use void * for payload bytes 2022-05-03 11:32:20 +02:00
Benjamin Valentin
d03c6390c8 nanocoap_sock: release rx buffer on RESET
We must not return without calling sock_udp_recv_buf() again.
2022-05-03 03:53:56 +02:00
Benjamin Valentin
04a8a36734 nanocoap_sock: only abort nanocoap_sock_get_blockwise() on negative error
Some user callbacks might just return the result of some other operation
that returns written bytes or negative error.

Let's not break those, only consider negative callback returns an error.
2022-04-29 21:29:36 +02:00
eecac6945b nanocoap: Add handler for resource-based subtrees
This adds a coap_handler_t function that can be used to parse new
subtrees. The subtree information is included in the context pointer of
the call and must be of type coap_resource_subtree_t. This object then
contains the pointer and length of a different coap_resource_t instance.
2022-04-23 10:12:18 +02:00
Benjamin Valentin
bb4c597681 nanocoap_sock: document (ab)use of sock_udp_recv_buf(), add asssert() 2022-04-22 11:34:19 +02:00
Benjamin Valentin
b20f89976d nanocoap_sock: pass on error code from user callback 2022-04-22 10:35:52 +02:00
Benjamin Valentin
85833ab58c nanocoap_sock: clean up the request function 2022-04-22 10:35:52 +02:00
Benjamin Valentin
bd7fe3bc5c nanocoap_sock: calculate deadline from interval
So we don't have to wait a full interval again if we got a wrong
message without resend.
2022-04-22 10:35:52 +02:00
Benjamin Valentin
e2fe9d0268 nanocoap_sock: compare response token 2022-04-22 10:35:52 +02:00
Benjamin Valentin
c22b1242ae nanocoap_sock: ensure ctx is reset before receiving new frame 2022-04-22 10:35:52 +02:00
Benjamin Valentin
3ac258ccdf nanocoap_sock: set more false if response was not blockwise 2022-04-22 10:12:27 +02:00
Benjamin Valentin
a5bc3cc069 nanocoap_sock: pass on error code 2022-04-22 10:12:27 +02:00
benpicco
c032e40fba
Merge pull request #17976 from benpicco/coap_get_token
nanocoap: add coap_get_token()
2022-04-22 10:08:30 +02:00
Francisco
7307923703
Merge pull request #17960 from benpicco/sock_urlpath
nanocoap_sock: add nanocoap_sock_url_connect()
2022-04-22 08:26:12 +02:00
Benjamin Valentin
5c1ff580d6 nanocoap_sock: don't decrement retries twice 2022-04-21 15:39:25 +02:00
Benjamin Valentin
845a757eed nanocoap: don't set lastonum if no option was added 2022-04-21 15:39:25 +02:00
Benjamin Valentin
76e2500b7d nanocoap_sock: use random message IDs 2022-04-21 15:39:25 +02:00
Benjamin Valentin
c4f6249992 nanocoap: make use of coap_get_token() 2022-04-21 15:34:31 +02:00
Benjamin Valentin
3d0c1d09c4 gcoap: make use of coap_get_token() 2022-04-21 15:34:31 +02:00
Benjamin Valentin
8d391a4f5f nanocoap_sock: use random timeout 2022-04-21 15:03:31 +02:00
Benjamin Valentin
2ea6c81217 nanocoap_sock: add nanocoap_sock_url_connect() 2022-04-18 01:53:23 +02:00
benpicco
2acbb5ebea
Merge pull request #17947 from fjmolinas/pr_proxy_use_gcoap_port
sys/net/application_layer/gcoap: use COAP_PORT
2022-04-14 16:05:28 +02:00