Riot: рдХреИрдВрдмрд░ рдкрд╛рд░реНрд╕рд░ рдореЗрдВ рд▓рдЯрдХрд╛ рд╣реБрдЖ рд╣реИ

рдХреЛ рдирд┐рд░реНрдорд┐рдд 10 рдЕрдХреНрддреВре░ 2017  ┬╖  5рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ  ┬╖  рд╕реНрд░реЛрдд: RIOT-OS/RIOT

@PyroPeter рдФрд░ рдореИрдВрдиреЗ afl рдХреЗ рд╕рд╛рде рд╕реАрдмреЛрд░ рдкрд╛рд░реНрд╕рд░ рдХреЛ рдмрдирд╛рдпрд╛ рдФрд░ рдРрд╕рд╛ рдХрд░рддреЗ рд╕рдордп рдХреБрдЫ рдХреАрдбрд╝реЗ рдкрд╛рдПред # 7707 рдФрд░ # 7706 рджреЗрдЦреЗрдВред рдЗрд╕рдХреЗ рдЕрддрд┐рд░рд┐рдХреНрдд рд╣рдореЗрдВ рдХрд╛рдлреА рдХреБрдЫ рдЗрдирдкреБрдЯ рдорд┐рд▓реЗ, рдЬреЛ рдХрд┐ рдХреЛрдбрд┐рдВрдЧ рдкрд╛рд░реНрд╕рд┐рдВрдЧ рдХреЛрдб рдореЗрдВ рд╣реИрдВрдЧ рд╣реЛ рдЧрдПред рдПрдХ рддрд╛рд░рдмреЙрд▓ рдпреБрдХреНрдд рдЗрдирдкреБрдЯ рдлрд╛рдЗрд▓ рдЬреЛ рдЯреНрд░рд┐рдЧрд░ рдкрд╛рд░реНрд╕рд░ рдореЗрдВ рдШреВрдорддрд╛ рд╣реИ рд╡рд╣ рдпрд╣рд╛рдВ рдкрд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ: http://user.informatik.uni-bremen.de/~tempel/riot-cbor-hangs.tar.xz

рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА

BTW: рдпрд╣ рдПрдХ рдЯреНрд░реЛрд▓ рдХреА рддрд░рд╣ рд▓рдЧ рд╕рдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдореИрдВ рдИрдорд╛рдирджрд╛рд░реА рд╕реЗ рд╕реБрдЭрд╛рд╡ рджреВрдВрдЧрд╛ рдХрд┐ рдЖрдк рдЗрд╕ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдкрд╛рд░реНрд╕рд░ рдХреЛ рд╣рдЯрд╛рдиреЗ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВ: рдпрд╣ рдорд╛рдирдХ рдХреЛ рдареАрдХ рд╕реЗ рд▓рд╛рдЧреВ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рдХреЛрдб рдХреА рдЧреБрдгрд╡рддреНрддрд╛ рднрдпрд╛рдирдХ рд╣реИ рдФрд░ рд╕рдмрд╕реЗ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдмрд╛рдд рдпрд╣ рд╣реИ рдХрд┐ рдпрд╣ рдмрдЧ рд╕реЗ рднрд░рд╛ рд╣реИ рдФрд░ рд▓рдЧрддрд╛ рдирд╣реАрдВ рд╣реИ рдПрдХ рдЕрдиреБрдЪрд░ рдЬреЛ рдЗрд╕ рдкрд░ рд╕рдХреНрд░рд┐рдп рд░реВрдк рд╕реЗ рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рд╣реИред

рд╕рднреА 5 рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

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 рд╕рдВрдмрдВрдзрд┐рдд рдореБрджреНрджреЗ рдПрдХрддреНрд░ рдХрд┐рдП рд╣реИрдВред рдЖрдЗрдП рд╡рд╣рд╛рдВ рдЪрд░реНрдЪрд╛ рдХрд░реЗрдВ рдХрд┐ рдЙрд╕ рдореЙрдбреНрдпреВрд▓ рдХреЗ рд╕рд╛рде рдХреИрд╕реЗ рдЪрд▓реЗрдВред

рдХреНрдпрд╛ рдпрд╣ рдкреГрд╖реНрда рдЙрдкрдпреЛрдЧреА рдерд╛?
0 / 5 - 0 рд░реЗрдЯрд┐рдВрдЧреНрд╕

рд╕рдВрдмрдВрдзрд┐рдд рдореБрджреНрджреЛрдВ

sinkarharshad picture sinkarharshad  ┬╖  7рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

pietrotedeschi picture pietrotedeschi  ┬╖  4рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

gschorcht picture gschorcht  ┬╖  7рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

jdavid picture jdavid  ┬╖  5рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

jcarrano picture jcarrano  ┬╖  7рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ