diff options
-rw-r--r-- | src/lib/libssl/bs_cbs.c | 3 | ||||
-rw-r--r-- | src/lib/libssl/src/ssl/bs_cbs.c | 3 | ||||
-rw-r--r-- | src/regress/lib/libssl/bytestring/bytestringtest.c | 38 |
3 files changed, 41 insertions, 3 deletions
diff --git a/src/lib/libssl/bs_cbs.c b/src/lib/libssl/bs_cbs.c index ea31cfc530..d45353a890 100644 --- a/src/lib/libssl/bs_cbs.c +++ b/src/lib/libssl/bs_cbs.c | |||
@@ -1,4 +1,4 @@ | |||
1 | /* $OpenBSD: bs_cbs.c,v 1.15 2015/06/20 01:21:51 doug Exp $ */ | 1 | /* $OpenBSD: bs_cbs.c,v 1.16 2015/06/23 05:58:28 doug Exp $ */ |
2 | /* | 2 | /* |
3 | * Copyright (c) 2014, Google Inc. | 3 | * Copyright (c) 2014, Google Inc. |
4 | * | 4 | * |
@@ -36,6 +36,7 @@ void | |||
36 | CBS_dup(const CBS *cbs, CBS *out) | 36 | CBS_dup(const CBS *cbs, CBS *out) |
37 | { | 37 | { |
38 | CBS_init(out, CBS_data(cbs), CBS_len(cbs)); | 38 | CBS_init(out, CBS_data(cbs), CBS_len(cbs)); |
39 | out->initial_len = cbs->initial_len; | ||
39 | } | 40 | } |
40 | 41 | ||
41 | static int | 42 | static int |
diff --git a/src/lib/libssl/src/ssl/bs_cbs.c b/src/lib/libssl/src/ssl/bs_cbs.c index ea31cfc530..d45353a890 100644 --- a/src/lib/libssl/src/ssl/bs_cbs.c +++ b/src/lib/libssl/src/ssl/bs_cbs.c | |||
@@ -1,4 +1,4 @@ | |||
1 | /* $OpenBSD: bs_cbs.c,v 1.15 2015/06/20 01:21:51 doug Exp $ */ | 1 | /* $OpenBSD: bs_cbs.c,v 1.16 2015/06/23 05:58:28 doug Exp $ */ |
2 | /* | 2 | /* |
3 | * Copyright (c) 2014, Google Inc. | 3 | * Copyright (c) 2014, Google Inc. |
4 | * | 4 | * |
@@ -36,6 +36,7 @@ void | |||
36 | CBS_dup(const CBS *cbs, CBS *out) | 36 | CBS_dup(const CBS *cbs, CBS *out) |
37 | { | 37 | { |
38 | CBS_init(out, CBS_data(cbs), CBS_len(cbs)); | 38 | CBS_init(out, CBS_data(cbs), CBS_len(cbs)); |
39 | out->initial_len = cbs->initial_len; | ||
39 | } | 40 | } |
40 | 41 | ||
41 | static int | 42 | static int |
diff --git a/src/regress/lib/libssl/bytestring/bytestringtest.c b/src/regress/lib/libssl/bytestring/bytestringtest.c index d989868c85..3275e6f2c7 100644 --- a/src/regress/lib/libssl/bytestring/bytestringtest.c +++ b/src/regress/lib/libssl/bytestring/bytestringtest.c | |||
@@ -1,4 +1,4 @@ | |||
1 | /* $OpenBSD: bytestringtest.c,v 1.7 2015/06/23 01:20:24 doug Exp $ */ | 1 | /* $OpenBSD: bytestringtest.c,v 1.8 2015/06/23 05:58:28 doug Exp $ */ |
2 | /* | 2 | /* |
3 | * Copyright (c) 2014, Google Inc. | 3 | * Copyright (c) 2014, Google Inc. |
4 | * | 4 | * |
@@ -751,6 +751,41 @@ err: | |||
751 | return ret; | 751 | return ret; |
752 | } | 752 | } |
753 | 753 | ||
754 | static int | ||
755 | test_cbs_dup(void) | ||
756 | { | ||
757 | CBS data, check; | ||
758 | static const uint8_t input[] = {'f', 'o', 'o', 'b', 'a', 'r'}; | ||
759 | |||
760 | CBS_init(&data, input, sizeof(input)); | ||
761 | CHECK(CBS_len(&data) == 6); | ||
762 | CBS_dup(&data, &check); | ||
763 | CHECK(CBS_len(&check) == 6); | ||
764 | CHECK(CBS_data(&data) == CBS_data(&check)); | ||
765 | CHECK(CBS_skip(&data, 1)); | ||
766 | CHECK(CBS_len(&data) == 5); | ||
767 | CHECK(CBS_len(&check) == 6); | ||
768 | CHECK(CBS_data(&data) == CBS_data(&check) + 1); | ||
769 | CHECK(CBS_skip(&check, 1)); | ||
770 | CHECK(CBS_len(&data) == 5); | ||
771 | CHECK(CBS_len(&check) == 5); | ||
772 | CHECK(CBS_data(&data) == CBS_data(&check)); | ||
773 | CHECK(CBS_offset(&data) == 1); | ||
774 | CHECK(CBS_offset(&check) == 1); | ||
775 | |||
776 | CBS_init(&data, input, sizeof(input)); | ||
777 | CHECK(CBS_skip(&data, 5)); | ||
778 | CBS_dup(&data, &check); | ||
779 | CHECK(CBS_len(&data) == 1); | ||
780 | CHECK(CBS_len(&check) == 1); | ||
781 | CHECK(CBS_data(&data) == input + 5); | ||
782 | CHECK(CBS_data(&data) == CBS_data(&check)); | ||
783 | CHECK(CBS_offset(&data) == 5); | ||
784 | CHECK(CBS_offset(&check) == 5); | ||
785 | |||
786 | return 1; | ||
787 | } | ||
788 | |||
754 | int | 789 | int |
755 | main(void) | 790 | main(void) |
756 | { | 791 | { |
@@ -772,6 +807,7 @@ main(void) | |||
772 | failed |= !test_get_optional_asn1_bool(); | 807 | failed |= !test_get_optional_asn1_bool(); |
773 | failed |= !test_offset(); | 808 | failed |= !test_offset(); |
774 | failed |= !test_write_bytes(); | 809 | failed |= !test_write_bytes(); |
810 | failed |= !test_cbs_dup(); | ||
775 | 811 | ||
776 | if (!failed) | 812 | if (!failed) |
777 | printf("PASS\n"); | 813 | printf("PASS\n"); |