@PyroPeter рдФрд░ рдореИрдВрдиреЗ afl рдХреЗ рд╕рд╛рде рд╕реАрдмреЛрд░ рдкрд╛рд░реНрд╕рд░ рдХреЛ рдмрдирд╛рдпрд╛ рдФрд░ рдРрд╕рд╛ рдХрд░рддреЗ рд╕рдордп рдХреБрдЫ рдХреАрдбрд╝реЗ рдкрд╛рдПред # 7707 рдФрд░ # 7706 рджреЗрдЦреЗрдВред рдЗрд╕рдХреЗ рдЕрддрд┐рд░рд┐рдХреНрдд рд╣рдореЗрдВ рдХрд╛рдлреА рдХреБрдЫ рдЗрдирдкреБрдЯ рдорд┐рд▓реЗ, рдЬреЛ рдХрд┐ рдХреЛрдбрд┐рдВрдЧ рдкрд╛рд░реНрд╕рд┐рдВрдЧ рдХреЛрдб рдореЗрдВ рд╣реИрдВрдЧ рд╣реЛ рдЧрдПред рдПрдХ рддрд╛рд░рдмреЙрд▓ рдпреБрдХреНрдд рдЗрдирдкреБрдЯ рдлрд╛рдЗрд▓ рдЬреЛ рдЯреНрд░рд┐рдЧрд░ рдкрд╛рд░реНрд╕рд░ рдореЗрдВ рдШреВрдорддрд╛ рд╣реИ рд╡рд╣ рдпрд╣рд╛рдВ рдкрд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ: http://user.informatik.uni-bremen.de/~tempel/riot-cbor-hangs.tar.xz
BTW: рдпрд╣ рдПрдХ рдЯреНрд░реЛрд▓ рдХреА рддрд░рд╣ рд▓рдЧ рд╕рдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдореИрдВ рдИрдорд╛рдирджрд╛рд░реА рд╕реЗ рд╕реБрдЭрд╛рд╡ рджреВрдВрдЧрд╛ рдХрд┐ рдЖрдк рдЗрд╕ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдкрд╛рд░реНрд╕рд░ рдХреЛ рд╣рдЯрд╛рдиреЗ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВ: рдпрд╣ рдорд╛рдирдХ рдХреЛ рдареАрдХ рд╕реЗ рд▓рд╛рдЧреВ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рдХреЛрдб рдХреА рдЧреБрдгрд╡рддреНрддрд╛ рднрдпрд╛рдирдХ рд╣реИ рдФрд░ рд╕рдмрд╕реЗ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдмрд╛рдд рдпрд╣ рд╣реИ рдХрд┐ рдпрд╣ рдмрдЧ рд╕реЗ рднрд░рд╛ рд╣реИ рдФрд░ рд▓рдЧрддрд╛ рдирд╣реАрдВ рд╣реИ рдПрдХ рдЕрдиреБрдЪрд░ рдЬреЛ рдЗрд╕ рдкрд░ рд╕рдХреНрд░рд┐рдп рд░реВрдк рд╕реЗ рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рд╣реИред
@nmeum , рдХреНрдпрд╛ рдЖрдк RFC рдЕрдиреБрдкрд╛рд▓рди рдХреЗ рд╕рд╛рде рдХреЛрдб рдХреА рдЧреБрдгрд╡рддреНрддрд╛ рдХреЗ рдореБрджреНрджреЛрдВ рдФрд░ рд╕рдорд╕реНрдпрд╛рдУрдВ рдкрд░ рдереЛрдбрд╝рд╛ рдФрд░ рд╡рд┐рд╕реНрддрд╛рд░ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ?
RFC рдЕрдиреБрдкрд╛рд▓рди рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ: рдкрд╛рд░реНрд╕рд░ рдареАрдХ рд╕реЗ рдХреИрдВрдмреНрд░рд┐рдЬ рдЯреЗрд╕реНрдЯрд╡реЗрдЯрд░реНрд╕ рдХреЗ рдмрд╣реБрдордд рдХреЛ рдкрд╛рд░реНрд╕ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред рдХреЛрдб рдХреА рдЧреБрдгрд╡рддреНрддрд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ: рд╣рдордиреЗ рдлрд╝рдЬрд╝рд┐рдВрдЧ рдХреЗ рджреНрд╡рд╛рд░рд╛ рдФрд░ рдЙрдиреНрд╣реЗрдВ рдареАрдХ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЛрдб рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЬрд╛рдиреЗ рд╕реЗ рдХрдИ рд╕рдорд╕реНрдпрд╛рдПрдБ рдкрд╛рдИрдВ, рдпрд╣ рдЕрднреА рдмрд╣реБрдд рдкреЙрд▓рд┐рд╢ рдирд╣реАрдВ рд▓рдЧрд╛ред
рдпрд╣рд╛рдБ рдПрдХ рдкреИрдЪ рдлрд┐рдХреНрд╕рд┐рдВрдЧ рд╣реИ (рдпрд╛ рдХрдо рд╕реЗ рдХрдо рдЙрдирдореЗрдВ рд╕реЗ рдХреБрдЫ) рдЬреЛ рд╕рдореАрдк рдХреЗ рдкрд╛рд░реНрд╕рд░ рдореЗрдВ рд╣реИрдВ:
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
рдЖрд╣реНрд╡рд╛рди рдХрд┐рдпрд╛ред
рдпрдХреАрди рдирд╣реАрдВ рд╣реИ рдХрд┐ рдкреИрдЪ рдЗрд╖реНрдЯрддрдо рд╣реИ, рд▓реЗрдХрд┐рди рдХрдо рд╕реЗ рдХрдо рдпрд╣ рдЕрдм рд▓рдЯрдХрд╛ рдирд╣реАрдВ рд╣реИ ...
рдореИрдВрдиреЗ # 7800 рдореЗрдВ рд╕рднреА cbor
рд╕рдВрдмрдВрдзрд┐рдд рдореБрджреНрджреЗ рдПрдХрддреНрд░ рдХрд┐рдП рд╣реИрдВред рдЖрдЗрдП рд╡рд╣рд╛рдВ рдЪрд░реНрдЪрд╛ рдХрд░реЗрдВ рдХрд┐ рдЙрд╕ рдореЙрдбреНрдпреВрд▓ рдХреЗ рд╕рд╛рде рдХреИрд╕реЗ рдЪрд▓реЗрдВред
рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА
BTW: рдпрд╣ рдПрдХ рдЯреНрд░реЛрд▓ рдХреА рддрд░рд╣ рд▓рдЧ рд╕рдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдореИрдВ рдИрдорд╛рдирджрд╛рд░реА рд╕реЗ рд╕реБрдЭрд╛рд╡ рджреВрдВрдЧрд╛ рдХрд┐ рдЖрдк рдЗрд╕ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдкрд╛рд░реНрд╕рд░ рдХреЛ рд╣рдЯрд╛рдиреЗ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВ: рдпрд╣ рдорд╛рдирдХ рдХреЛ рдареАрдХ рд╕реЗ рд▓рд╛рдЧреВ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рдХреЛрдб рдХреА рдЧреБрдгрд╡рддреНрддрд╛ рднрдпрд╛рдирдХ рд╣реИ рдФрд░ рд╕рдмрд╕реЗ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдмрд╛рдд рдпрд╣ рд╣реИ рдХрд┐ рдпрд╣ рдмрдЧ рд╕реЗ рднрд░рд╛ рд╣реИ рдФрд░ рд▓рдЧрддрд╛ рдирд╣реАрдВ рд╣реИ рдПрдХ рдЕрдиреБрдЪрд░ рдЬреЛ рдЗрд╕ рдкрд░ рд╕рдХреНрд░рд┐рдп рд░реВрдк рд╕реЗ рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рд╣реИред