Add a test for WPACKET_fill_lengths()
authorMatt Caswell <matt@openssl.org>
Mon, 23 Jan 2017 15:09:25 +0000 (15:09 +0000)
committerMatt Caswell <matt@openssl.org>
Mon, 30 Jan 2017 10:18:24 +0000 (10:18 +0000)
Reviewed-by: Rich Salz <rsalz@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/2259)

test/wpackettest.c

index 52c98271da26bef8b32f4ed856ff42c60d580aad..3ab293e0e98c8d43cc7bade97921c9d894d685cf 100644 (file)
@@ -254,6 +254,27 @@ static int test_WPACKET_start_sub_packet(void)
         return 0;
     }
 
+    /* Nested sub-packets with lengths filled before finish */
+    if (!WPACKET_init(&pkt, buf)
+            || !WPACKET_start_sub_packet_u8(&pkt)
+            || !WPACKET_put_bytes_u8(&pkt, 0xff)
+            || !WPACKET_start_sub_packet_u8(&pkt)
+            || !WPACKET_put_bytes_u8(&pkt, 0xff)
+            || !WPACKET_get_length(&pkt, &len)
+            || len != 1
+            || !WPACKET_close(&pkt)
+            || !WPACKET_get_length(&pkt, &len)
+            || len != 3
+            || !WPACKET_close(&pkt)
+            || !WPACKET_fill_lengths(&pkt)
+            || !WPACKET_get_total_written(&pkt, &written)
+            ||  written != sizeof(nestedsub)
+            ||  memcmp(buf->data, &nestedsub, written) != 0
+            || !WPACKET_finish(&pkt)) {
+        testfail("test_WPACKET_start_sub_packet():5 failed\n", &pkt);
+        return 0;
+    }
+
     return 1;
 }