Add a test for WPACKET_fill_lengths()
[openssl.git] / test / wpackettest.c
index 52c98271da26bef8b32f4ed856ff42c60d580aad..3ab293e0e98c8d43cc7bade97921c9d894d685cf 100644 (file)
@@ -254,6 +254,27 @@ static int test_WPACKET_start_sub_packet(void)
         return 0;
     }
 
         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;
 }
 
     return 1;
 }