diff --git a/test/wpackettest.c b/test/wpackettest.c index 52c98271da26bef8b32f4ed856ff42c60d580aad..3ab293e0e98c8d43cc7bade97921c9d894d685cf 100644 --- a/test/wpackettest.c +++ b/test/wpackettest.c @@ -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; }