tls: check size on "MAC-only, no crypt" code path too
authorDenys Vlasenko <vda.linux@googlemail.com>
Fri, 20 Jan 2017 20:23:10 +0000 (21:23 +0100)
committerDenys Vlasenko <vda.linux@googlemail.com>
Fri, 20 Jan 2017 20:23:10 +0000 (21:23 +0100)
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
networking/tls.c

index fb49b1523927960d7cb16403a1377bf36d3cacdc..80e3bc662368bafb345f5476c569e6c0381e2712 100644 (file)
@@ -810,14 +810,15 @@ static int tls_xread_record(tls_state_t *tls)
                dbg("encrypted size:%u type:0x%02x padding_length:0x%02x\n", sz, p[0], padding_len);
                padding_len++;
                sz -= SHA256_OUTSIZE + padding_len; /* drop MAC and padding */
-               if (sz < 0) {
-                       bb_error_msg_and_die("bad padding size:%u", padding_len);
-               }
+               //if (sz < 0)
+               //      bb_error_msg_and_die("bad padding size:%u", padding_len);
        } else {
                /* if nonzero, then it's TLS_RSA_WITH_NULL_SHA256: drop MAC */
                /* else: no encryption yet on input, subtract zero = NOP */
                sz -= tls->min_encrypted_len_on_read;
        }
+       if (sz < 0)
+               bb_error_msg_and_die("encrypted data too short");
 
        //dump_hex("<< %s\n", tls->inbuf, RECHDR_LEN + sz);