@PyroPeter ΠΈ Ρ ΠΏΡΠΎΠ²Π΅Π»ΠΈ ΡΠ°Π·Π·ΠΈΠ½Π³ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ Π°Π½Π°Π»ΠΈΠ·Π°ΡΠΎΡΠ° cbor Ρ ΠΏΠΎΠΌΠΎΡΡΡ afl ΠΈ ΠΏΡΠΈ ΡΡΠΎΠΌ ΠΎΠ±Π½Π°ΡΡΠΆΠΈΠ»ΠΈ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΎΡΠΈΠ±ΠΎΠΊ. Π‘ΠΌ. β 7707 ΠΈ β 7706. ΠΡΠΎΠΌΠ΅ ΡΠΎΠ³ΠΎ, ΠΌΡ ΠΎΠ±Π½Π°ΡΡΠΆΠΈΠ»ΠΈ Π΄ΠΎΠ²ΠΎΠ»ΡΠ½ΠΎ ΠΌΠ½ΠΎΠ³ΠΎ Π²Ρ ΠΎΠ΄ΠΎΠ², ΠΊΠΎΡΠΎΡΡΠ΅ Π²ΡΠ·ΡΠ²Π°Π»ΠΈ Π·Π°Π²ΠΈΡΠ°Π½ΠΈΡ Π² ΠΊΠΎΠ΄Π΅ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ Π°Π½Π°Π»ΠΈΠ·Π° cbor. ΠΡΡ ΠΈΠ², ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΠΈΠΉ Π²Ρ ΠΎΠ΄Π½ΡΠ΅ ΡΠ°ΠΉΠ»Ρ, Π·Π°ΠΏΡΡΠΊΠ°ΡΡΠΈΠ΅ Π·Π°Π²ΠΈΡΠ°Π½ΠΈΡ Π² ΠΏΠ°ΡΡΠ΅ΡΠ΅ cbor, ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΉΡΠΈ Π·Π΄Π΅ΡΡ: http://user.informatik.uni-bremen.de/~tempel/riot-cbor-hangs.tar.xz
ΠΡΡΠ°ΡΠΈ: ΡΡΠΎ ΠΌΠΎΠΆΠ΅Ρ Π·Π²ΡΡΠ°ΡΡ ΠΊΠ°ΠΊ ΡΡΠΎΠ»Π»Ρ, Π½ΠΎ Ρ ΡΠ΅ΡΡΠ½ΠΎ ΠΏΡΠ΅Π΄Π»Π°Π³Π°Ρ Π²Π°ΠΌ ΡΠ°ΡΡΠΌΠΎΡΡΠ΅ΡΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΠΏΠΎΠ»Π½ΠΎΠ³ΠΎ ΡΠ΄Π°Π»Π΅Π½ΠΈΡ ΡΡΠΎΠ³ΠΎ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ Π°Π½Π°Π»ΠΈΠ·Π°ΡΠΎΡΠ° cbor: ΠΎΠ½ Π½Π΅ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎ ΡΠ΅Π°Π»ΠΈΠ·ΡΠ΅Ρ ΡΡΠ°Π½Π΄Π°ΡΡ, ΠΊΠ°ΡΠ΅ΡΡΠ²ΠΎ ΠΊΠΎΠ΄Π° ΡΠΆΠ°ΡΠ½ΠΎΠ΅ ΠΈ, ΡΡΠΎ Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ Π²Π°ΠΆΠ½ΠΎ, ΠΎΠ½ ΠΏΠΎΠ»ΠΎΠ½ ΠΎΡΠΈΠ±ΠΎΠΊ ΠΈ, ΠΏΠΎΡ ΠΎΠΆΠ΅, Π½Π΅ ΠΈΠΌΠ΅Π΅Ρ ΡΠΎΠΏΡΠΎΠ²ΠΎΠΆΠ΄Π°ΡΡΠΈΠΉ, ΠΊΠΎΡΠΎΡΡΠΉ Π°ΠΊΡΠΈΠ²Π½ΠΎ Π½Π°Π΄ ΡΡΠΈΠΌ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ.
@nmeum , Π½Π΅ ΠΌΠΎΠ³Π»ΠΈ Π±Ρ Π²Ρ ΠΏΠΎΠ΄ΡΠΎΠ±Π½Π΅Π΅ ΡΠ°ΡΡΠΊΠ°Π·Π°ΡΡ ΠΎ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ°Ρ ΠΊΠ°ΡΠ΅ΡΡΠ²Π° ΠΊΠΎΠ΄Π° ΠΈ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ°Ρ Ρ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΠΈΠ΅ΠΌ RFC?
ΠΡΠ½ΠΎΡΠΈΡΠ΅Π»ΡΠ½ΠΎ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΠΈΡ RFC: ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈΠΉ Π°Π½Π°Π»ΠΈΠ·Π°ΡΠΎΡ Π½Π΅ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎ Π°Π½Π°Π»ΠΈΠ·ΠΈΡΡΠ΅Ρ Π±ΠΎΠ»ΡΡΠΈΠ½ΡΡΠ²ΠΎ ΡΠ΅ΡΡΠΎΠ²ΡΡ Π²Π΅ΠΊΡΠΎΡΠΎΠ² cbor . Π§ΡΠΎ ΠΊΠ°ΡΠ°Π΅ΡΡΡ ΠΊΠ°ΡΠ΅ΡΡΠ²Π° ΠΊΠΎΠ΄Π°: ΠΌΡ ΠΎΠ±Π½Π°ΡΡΠΆΠΈΠ»ΠΈ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΏΡΠΎΠ±Π»Π΅ΠΌ, ΠΏΡΠΎΡΡΠΎ ΠΏΡΠΎΠ²Π΅Π΄Ρ ΡΠ°Π·Π·ΠΈΠ½Π³ ΠΈ ΠΏΡΠΎΡΠΌΠΎΡΡΠ΅Π² ΠΊΠΎΠ΄, ΡΡΠΎΠ±Ρ ΠΈΡΠΏΡΠ°Π²ΠΈΡΡ ΠΈΡ , ΡΡΠΎ ΠΏΡΠΎΡΡΠΎ Π½Π΅ Π²ΡΠ³Π»ΡΠ΄Π΅Π»ΠΎ ΠΎΡΠ΅Π½Ρ ΠΎΡΡΠΎΡΠ΅Π½Π½ΡΠΌ.
ΠΠΎΡ ΠΏΠ°ΡΡ, ΠΈΡΠΏΡΠ°Π²Π»ΡΡΡΠΈΠΉ Π·Π°Π²ΠΈΡΠ°Π½ΠΈΡ (ΠΈΠ»ΠΈ, ΠΏΠΎ ΠΊΡΠ°ΠΉΠ½Π΅ΠΉ ΠΌΠ΅ΡΠ΅, Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ ΠΈΠ· Π½ΠΈΡ ) Π² ΠΏΠ°ΡΡΠ΅ΡΠ΅ cbor:
diff --git a/cbor-afl/cbor.c b/cbor-afl/cbor.c
index fa1aa27..c97457e 100644
--- a/cbor-afl/cbor.c
+++ b/cbor-afl/cbor.c
@@ -989,12 +989,17 @@ static size_t cbor_stream_decode_at(cbor_stream_t *stream, size_t offset, int in
while (is_indefinite ? !cbor_at_break(stream, offset) : i < map_length) {
size_t key_read_bytes, value_read_bytes;
+
offset += key_read_bytes = cbor_stream_decode_at(stream, offset, indent + 1); /* key */
- offset += value_read_bytes = cbor_stream_decode_at(stream, offset, indent + 2); /* value */
+ if (key_read_bytes == 0) {
+ DEBUG("Failed to read key at position %d\n", i);
+ return 0;
+ }
- if (key_read_bytes == 0 || value_read_bytes == 0) {
- DEBUG("Failed to read key-value pair at position %d\n", i);
- break;
+ offset += value_read_bytes = cbor_stream_decode_at(stream, offset, indent + 2); /* value */
+ if (value_read_bytes == 0) {
+ DEBUG("Failed to read value at position %d\n", i);
+ return 0;
}
read_bytes += key_read_bytes + value_read_bytes;
ΠΡΠΎΠ±Π»Π΅ΠΌΠ°, ΠΏΠΎΡ
ΠΎΠΆΠ΅, Π·Π°ΠΊΠ»ΡΡΠ°Π»Π°ΡΡ Π² ΡΠΎΠΌ, ΡΡΠΎ ΠΏΠ°ΡΡΠ΅Ρ Π½Π΅ ΠΏΡΠΎΠ²Π΅ΡΡΠ» Π½Π°Π»ΠΈΡΠΈΠ΅ ΠΎΡΠΈΠ±ΠΎΠΊ ΠΏΠΎΡΠ»Π΅ Π°Π½Π°Π»ΠΈΠ·Π° Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ ΠΊΠ»ΡΡΠ΅ΠΉ Π² ΠΊΠ°ΡΡΠ°Ρ
. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ, Π΄Π°ΠΆΠ΅ Π΅ΡΠ»ΠΈ ΠΊΠ»ΡΡ Π½Π΅ Π±ΡΠ» Π½Π°ΠΉΠ΄Π΅Π½, ΠΎΠ½ Π²ΡΠ΅ ΡΠ°Π²Π½ΠΎ Π²ΡΠ·ΡΠ²Π°Π» cbor_stream_decode_at
Π΄Π»Ρ ΠΏΠΎΠΈΡΠΊΠ° Π·Π½Π°ΡΠ΅Π½ΠΈΡ Π΄Π»Ρ Π½Π΅ΡΡΡΠ΅ΡΡΠ²ΡΡΡΠ΅Π³ΠΎ ΠΊΠ»ΡΡΠ°.
ΠΠ΅ ΡΠ²Π΅ΡΠ΅Π½, ΡΡΠΎ ΠΏΠ°ΡΡ ΠΎΠΏΡΠΈΠΌΠ°Π»Π΅Π½, Π½ΠΎ, ΠΏΠΎ ΠΊΡΠ°ΠΉΠ½Π΅ΠΉ ΠΌΠ΅ΡΠ΅, ΠΎΠ½ Π±ΠΎΠ»ΡΡΠ΅ Π½Π΅ Π·Π°Π²ΠΈΡΠ°Π΅Ρ ...
Π― ΡΠΎΠ±ΡΠ°Π» Π²ΡΠ΅ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ, ΡΠ²ΡΠ·Π°Π½Π½ΡΠ΅ Ρ cbor
Π² # 7800. ΠΠ°Π²Π°ΠΉΡΠ΅ ΠΎΠ±ΡΡΠ΄ΠΈΠΌ ΡΠ°ΠΌ, ΠΊΠ°ΠΊ ΠΏΡΠΎΠ΄ΠΎΠ»ΠΆΠΈΡΡ ΡΠ°Π±ΠΎΡΡ Ρ ΡΡΠΈΠΌ ΠΌΠΎΠ΄ΡΠ»Π΅ΠΌ.
Π‘Π°ΠΌΡΠΉ ΠΏΠΎΠ»Π΅Π·Π½ΡΠΉ ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΠΉ
ΠΡΡΠ°ΡΠΈ: ΡΡΠΎ ΠΌΠΎΠΆΠ΅Ρ Π·Π²ΡΡΠ°ΡΡ ΠΊΠ°ΠΊ ΡΡΠΎΠ»Π»Ρ, Π½ΠΎ Ρ ΡΠ΅ΡΡΠ½ΠΎ ΠΏΡΠ΅Π΄Π»Π°Π³Π°Ρ Π²Π°ΠΌ ΡΠ°ΡΡΠΌΠΎΡΡΠ΅ΡΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΠΏΠΎΠ»Π½ΠΎΠ³ΠΎ ΡΠ΄Π°Π»Π΅Π½ΠΈΡ ΡΡΠΎΠ³ΠΎ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ Π°Π½Π°Π»ΠΈΠ·Π°ΡΠΎΡΠ° cbor: ΠΎΠ½ Π½Π΅ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎ ΡΠ΅Π°Π»ΠΈΠ·ΡΠ΅Ρ ΡΡΠ°Π½Π΄Π°ΡΡ, ΠΊΠ°ΡΠ΅ΡΡΠ²ΠΎ ΠΊΠΎΠ΄Π° ΡΠΆΠ°ΡΠ½ΠΎΠ΅ ΠΈ, ΡΡΠΎ Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ Π²Π°ΠΆΠ½ΠΎ, ΠΎΠ½ ΠΏΠΎΠ»ΠΎΠ½ ΠΎΡΠΈΠ±ΠΎΠΊ ΠΈ, ΠΏΠΎΡ ΠΎΠΆΠ΅, Π½Π΅ ΠΈΠΌΠ΅Π΅Ρ ΡΠΎΠΏΡΠΎΠ²ΠΎΠΆΠ΄Π°ΡΡΠΈΠΉ, ΠΊΠΎΡΠΎΡΡΠΉ Π°ΠΊΡΠΈΠ²Π½ΠΎ Π½Π°Π΄ ΡΡΠΈΠΌ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ.