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

751 Commits

Author SHA1 Message Date
Marian Buschsieweke
cec85cfc88
Merge pull request #20945 from maribu/sys/net/gcoap/replace-super-insane-hack-with-less-insane-hack
sys/net/gcoap: reduce insanity of hack
2024-11-08 20:03:37 +00:00
Marian Buschsieweke
d10ab413a0
Merge pull request #20952 from benpicco/nanocoap-block_robust
nanocoap/sock: re-try if wrong block was received
2024-11-05 17:24:17 +00:00
Benjamin Valentin
9b25c033de nanocoap/sock: re-try if wrong block was received 2024-11-05 18:06:31 +01:00
Marian Buschsieweke
c70075b073
Merge pull request #20950 from maribu/sys/net/nanocoap/coap_get_response_hdr_len
sys/net/nanocoap: add and use coap_get_response_hdr_len()
2024-11-05 13:09:51 +00:00
Marian Buschsieweke
68beb52f14
sys/net/nanocoap: add and use coap_get_response_hdr_len()
Before, handlers writing blockwise transfer assumed that the response
header length will match the request header length. This is true for
UDP, but not for TCP: The CoAP over TCP header contains a Len field,
that gets extended for larger messages. Since the reply often is indeed
larger than the request, this is indeed often the case for CoAP over
TCP.

Note: Right now, no CoAP over TCP implementation is upstream. However,
      getting rid of incorrect assumptions now will make life easier
      later on.
2024-11-05 10:46:02 +01:00
Marian Buschsieweke
2c93dc9c3b
sys/net/nanocoap: fix coap_build_reply_header()
In case no payload is added, `coap_build_reply_header()` would return
`sizeof(coap_hdr_t) + token_length` regardless of the actual header
length returned by `coap_build_hdr()`. These can be different if
RFC 8974 extended tokens are enabled (module `nanocoap_token_ext`
used): If an extended token length field is used, its size is not
considered.

Co-authored-by: benpicco <benpicco@googlemail.com>
2024-11-04 21:18:07 +01:00
Marian Buschsieweke
765dc3a299
sys/net/gcoap: reduce insanity of hack
gcoap contains a hack where a `coap_pkt_t` is pulled out of thin air,
parts of the members are left uninitialized and a function is called on
that mostly uninitialized data while crossing fingers hard that the
result will be correct. (With the current implementation of the used
function this hack does actually work.)

Estimated level of insanity: 😱😱😱😱😱

This adds to insane functions to get the length of a token and the
length of a header of a CoAP packet while crossing fingers hard that
the packet is valid and that the functions do not overread.

Estimated level of insanity: 😱😱😱

The newly introduced insane functions are used to replace the old
insane hack, resulting in an estimated reduction of insanity of 😱😱.

Side note: This actually does fix a bug, as the old code did not take
           into account the length of the extended TKL field in case of
           RFC 8974 being used. But that is a bug in the abused API,
           and not in the caller abusing the API.
2024-11-01 16:32:59 +01:00
Teufelchen
b376bec667
Merge pull request #20847 from benpicco/event_assert
sys/event: add assertion that event has a handler
2024-10-25 08:11:51 +00:00
benpicco
ae36fa4b37
Merge pull request #20921 from Vjorald/cord-doc
sys/net/app/cord: update doc
2024-10-24 16:59:01 +00:00
mguetschow
fbde0209d1
Merge pull request #20933 from benpicco/sys/net/application_layer/gcoap-ipv4
gcoap: fix build with IPv4
2024-10-24 09:28:23 +00:00
benpicco
87c825dd82
Merge pull request #20915 from fabian18/pr/gcoap_forward_proxy_timeout
gcoap/forward_proxy: handle timeout case
2024-10-23 21:58:57 +00:00
Benjamin Valentin
ce6d753aa1 gcoap: fix build with IPv4 2024-10-22 14:04:20 +02:00
Vjorald
d2600f8eff cord/doc: Remove the label (Not Yet Implemented) and the group part
Co-authored-by: chrysn <chrysn@fsfe.org>
2024-10-18 23:55:07 +02:00
Vjorald
d4fb64cfbc cord/doc: Update references to RFC 9176 2024-10-18 23:52:35 +02:00
benpicco
bada659375
Merge pull request #20918 from maribu/sys/net/nanocoap/coap_pkt_set_code
sys/nanocoap: add coap_pkt_set_code()
2024-10-17 16:02:19 +00:00
Marian Buschsieweke
f16875b6ec
sys/nanocoap: add coap_pkt_set_code()
This adds a small convenience function to set the CoAP code of a packet
and converts users of coap_hdr_set_code() where applicable.
2024-10-17 14:56:54 +02:00
Marian Buschsieweke
835571c0a7
sys/net/nanocoap: fix UB when building hdr
Some calls to `coap_build_hdr()` were done with the target buffer for
the header and the source buffer for the token overlapping:
They reuse the buffer that held the request to assemble the response in.
We cannot use `memcpy()` in this case to copy the token into the target
buffer, as source and destination would (fully) overlap.

This commit makes reusing the request buffer for the response a special
case: `memcpy()` is only used to copy the token if source and
destination address of the token differ.

An alternative fix would have been to use `memmove()` unconditionally.
But `memmove()` does not make any assumption about the layout of target
and source buffer, while we know that the token either will already be
at the right position (when reusing the request buffer for the response)
or be in a non-overlapping buffer (when generating a fresh token). This
approach is more efficient than `memmove()`.
2024-10-17 14:02:06 +02:00
Fabian Hüßler
224fdb2294 gcoap/farward_proxy: handle timeout case 2024-10-16 16:10:28 +02:00
Marian Buschsieweke
71b91a1d0e
sys/net/gcoap_forward_proxy: fix compilation issues 2024-10-14 14:30:20 +02:00
mguetschow
a54ba26285
Merge pull request #20893 from benpicco/THREAD_CREATE_STACKTEST-cleanup
treewide: clean up remnants of THREAD_CREATE_STACKTEST
2024-10-08 09:55:52 +00:00
Benjamin Valentin
97128eef48 treewide: clean up remnants of THREAD_CREATE_STACKTEST 2024-10-07 17:31:31 +02:00
Teufelchen1
f88285de75 net/dhcpv6: Improve option parsing in dhcpv6 advertise 2024-10-02 09:47:22 +02:00
benpicco
9bdb697edb
Merge pull request #20857 from benpicco/dns_msg-fix_skip
dns_msg: skip RDLENGTH_LENGTH field when skipping record
2024-09-27 15:57:17 +00:00
Marian Buschsieweke
1fa7db2eda
Merge pull request #20855 from benpicco/coap_block_finish-fix
nanocoap: always write at least 1 byte in coap_block2_finish()
2024-09-12 15:01:19 +00:00
Benjamin Valentin
344d4b80bf sock_dns: add debug output 2024-09-12 11:00:41 +02:00
Benjamin Valentin
bc2ad626f3 dns_msg: rename addrlen -> rdlen 2024-09-12 11:00:41 +02:00
Benjamin Valentin
305b5db4eb dns_msg: add debug output 2024-09-12 11:00:41 +02:00
Benjamin Valentin
74356c9737 dns_msg: skip RDLENGTH_LENGTH field when skipping record
fixes #20355
2024-09-12 11:00:41 +02:00
Fabian Hüßler
95b46ee2a5 sys/net/application_layer/nanocoap: add nanocoap_sock_get_non 2024-09-10 16:43:44 +02:00
Benjamin Valentin
66fe083d9b nanocoap: always write at least 1 byte in coap_block2_finish()
The CoAP block option gets written twice:
First a 'dummy' value is written by `coap_opt_add_block2()`, later this gets
overwritten by the real option value by coap_block2_finish().

The problem arises when the size of the option changes.
If the option ends up smaller than the dummy, we have garbage bytes after the
real option value, corrupting the packet.

To mitigate this, always write at least one option byte (which will be a 0 byte)
to ensure the dummy data is overwritten.

fixes #20686
2024-09-07 16:11:23 +02:00
Benjamin Valentin
16c447afb1 gcoap: make use of event_callback_post() 2024-08-29 17:35:54 +02:00
benpicco
022630c043
Merge pull request #20836 from benpicco/sys/gcoap-thread_name
gcoap: the name of the gcoap thread should be gcoap
2024-08-27 08:56:50 +00:00
Benjamin Valentin
f95dc978fa gcoap: the name of the gcoap thread should be gcoap 2024-08-26 15:44:26 +02:00
Fabian Hüßler
a181c7b543 sys/gcoap: add public function to find a resource by path 2024-08-21 17:49:48 +02:00
Fabian Hüßler
c1535d25ba nanocoap: constify coap_match_path() API 2024-08-21 17:49:48 +02:00
Fabian Hüßler
08f6ec49c4 gcoap: lock CoAP state mutex in observe API 2024-08-21 17:49:48 +02:00
Fabian Hüßler
a2a7f41a59 gcoap: send Observe notifications from request address 2024-08-21 17:34:18 +02:00
Fabian Hüßler
04d95ab0e8 gcoap: debug for _find_req_memo_by_token() 2024-08-21 17:34:18 +02:00
Fabian Hüßler
0614db9cd5 sys/net/application_layer/gcoap: fix Observe notifications correlation 2024-07-31 23:01:17 +02:00
Martine Lenders
11ea4a359d
Merge pull request #20801 from Teufelchen1/fix/dhcpv6
net/dhcpv6: Improve option handling in dhcpv6 advertise
2024-07-31 07:51:42 +00:00
Bennet Blischke
cc9855b3ae net/dhcpv6: Improve option handling in dhcpv6 advertise 2024-07-30 19:21:09 +02:00
Teufelchen
1e6164fd68
Merge pull request #20549 from chrysn-pull-requests/gcoap-asan
gcoap: Avoid reading beyond defined input buffer
2024-07-30 10:13:41 +00:00
Benjamin Valentin
312a550f1a treewide: remove THREAD_CREATE_STACKTEST from thread creation 2024-07-29 11:45:58 +02:00
benpicco
4ba7c46e4d
Merge pull request #20711 from fabian18/pr/gcoap_aux_local_in_req_send
gcoap: propagate local tx aux to gcoap_req_send() and in _handler_req()
2024-07-05 12:07:38 +00:00
benpicco
78da4bc1c7
Merge pull request #20725 from fabian18/pr/nanocoap_sock_fix_ctx_release
nanocoap/sock: fix state handling for mismatching message ID in `nanocoap_sock_request_cb()`
2024-06-07 16:19:13 +00:00
Fabian Hüßler
5145b29b55 nanocoap/sock: fix context release 2024-06-06 11:24:41 +02:00
Fabian Hüßler
f50dd7dade gcoap/forward_proxy: set payload length in forwarded PDU 2024-05-31 12:04:48 +02:00
Fabian Hüßler
c12375eec4 gcoap/forward_proxy: reply from request destination address 2024-05-31 12:04:48 +02:00
Fabian Hüßler
f4b1306460 gcoap: pass aux local to _handle_req() 2024-05-31 12:04:48 +02:00
Fabian Hüßler
40fb250ae4 treewide: adapt to gcoap_req_send aux local API change 2024-05-31 12:04:48 +02:00