diff options
author | jsing <> | 2015-09-01 13:35:39 +0000 |
---|---|---|
committer | jsing <> | 2015-09-01 13:35:39 +0000 |
commit | 5d2f851bf9aa598e77b6d89ba8622bfe05ce2371 (patch) | |
tree | 6ff47a08813fc718f70bea7b69354582067f1aa4 /src | |
parent | 9bfe2450029c26d54ebb48f0d8c01d35b63865d3 (diff) | |
download | openbsd-5d2f851bf9aa598e77b6d89ba8622bfe05ce2371.tar.gz openbsd-5d2f851bf9aa598e77b6d89ba8622bfe05ce2371.tar.bz2 openbsd-5d2f851bf9aa598e77b6d89ba8622bfe05ce2371.zip |
Make it always safe to call CBB_cleanup() providing that CBB_init() or
CBB_init_fixed() have been attempted.
ok doug@
Diffstat (limited to 'src')
-rw-r--r-- | src/lib/libssl/bs_cbb.c | 10 | ||||
-rw-r--r-- | src/lib/libssl/src/ssl/bs_cbb.c | 10 |
2 files changed, 16 insertions, 4 deletions
diff --git a/src/lib/libssl/bs_cbb.c b/src/lib/libssl/bs_cbb.c index 441141734b..3f8e08e0e3 100644 --- a/src/lib/libssl/bs_cbb.c +++ b/src/lib/libssl/bs_cbb.c | |||
@@ -1,4 +1,4 @@ | |||
1 | /* $OpenBSD: bs_cbb.c,v 1.12 2015/06/18 23:25:07 doug Exp $ */ | 1 | /* $OpenBSD: bs_cbb.c,v 1.13 2015/09/01 13:35:39 jsing Exp $ */ |
2 | /* | 2 | /* |
3 | * Copyright (c) 2014, Google Inc. | 3 | * Copyright (c) 2014, Google Inc. |
4 | * | 4 | * |
@@ -36,9 +36,9 @@ cbb_init(CBB *cbb, uint8_t *buf, size_t cap) | |||
36 | base->cap = cap; | 36 | base->cap = cap; |
37 | base->can_resize = 1; | 37 | base->can_resize = 1; |
38 | 38 | ||
39 | memset(cbb, 0, sizeof(*cbb)); | ||
40 | cbb->base = base; | 39 | cbb->base = base; |
41 | cbb->is_top_level = 1; | 40 | cbb->is_top_level = 1; |
41 | |||
42 | return 1; | 42 | return 1; |
43 | } | 43 | } |
44 | 44 | ||
@@ -47,6 +47,8 @@ CBB_init(CBB *cbb, size_t initial_capacity) | |||
47 | { | 47 | { |
48 | uint8_t *buf = NULL; | 48 | uint8_t *buf = NULL; |
49 | 49 | ||
50 | memset(cbb, 0, sizeof(*cbb)); | ||
51 | |||
50 | if (initial_capacity > 0) { | 52 | if (initial_capacity > 0) { |
51 | if ((buf = malloc(initial_capacity)) == NULL) | 53 | if ((buf = malloc(initial_capacity)) == NULL) |
52 | return 0; | 54 | return 0; |
@@ -56,16 +58,20 @@ CBB_init(CBB *cbb, size_t initial_capacity) | |||
56 | free(buf); | 58 | free(buf); |
57 | return 0; | 59 | return 0; |
58 | } | 60 | } |
61 | |||
59 | return 1; | 62 | return 1; |
60 | } | 63 | } |
61 | 64 | ||
62 | int | 65 | int |
63 | CBB_init_fixed(CBB *cbb, uint8_t *buf, size_t len) | 66 | CBB_init_fixed(CBB *cbb, uint8_t *buf, size_t len) |
64 | { | 67 | { |
68 | memset(cbb, 0, sizeof(*cbb)); | ||
69 | |||
65 | if (!cbb_init(cbb, buf, len)) | 70 | if (!cbb_init(cbb, buf, len)) |
66 | return 0; | 71 | return 0; |
67 | 72 | ||
68 | cbb->base->can_resize = 0; | 73 | cbb->base->can_resize = 0; |
74 | |||
69 | return 1; | 75 | return 1; |
70 | } | 76 | } |
71 | 77 | ||
diff --git a/src/lib/libssl/src/ssl/bs_cbb.c b/src/lib/libssl/src/ssl/bs_cbb.c index 441141734b..3f8e08e0e3 100644 --- a/src/lib/libssl/src/ssl/bs_cbb.c +++ b/src/lib/libssl/src/ssl/bs_cbb.c | |||
@@ -1,4 +1,4 @@ | |||
1 | /* $OpenBSD: bs_cbb.c,v 1.12 2015/06/18 23:25:07 doug Exp $ */ | 1 | /* $OpenBSD: bs_cbb.c,v 1.13 2015/09/01 13:35:39 jsing Exp $ */ |
2 | /* | 2 | /* |
3 | * Copyright (c) 2014, Google Inc. | 3 | * Copyright (c) 2014, Google Inc. |
4 | * | 4 | * |
@@ -36,9 +36,9 @@ cbb_init(CBB *cbb, uint8_t *buf, size_t cap) | |||
36 | base->cap = cap; | 36 | base->cap = cap; |
37 | base->can_resize = 1; | 37 | base->can_resize = 1; |
38 | 38 | ||
39 | memset(cbb, 0, sizeof(*cbb)); | ||
40 | cbb->base = base; | 39 | cbb->base = base; |
41 | cbb->is_top_level = 1; | 40 | cbb->is_top_level = 1; |
41 | |||
42 | return 1; | 42 | return 1; |
43 | } | 43 | } |
44 | 44 | ||
@@ -47,6 +47,8 @@ CBB_init(CBB *cbb, size_t initial_capacity) | |||
47 | { | 47 | { |
48 | uint8_t *buf = NULL; | 48 | uint8_t *buf = NULL; |
49 | 49 | ||
50 | memset(cbb, 0, sizeof(*cbb)); | ||
51 | |||
50 | if (initial_capacity > 0) { | 52 | if (initial_capacity > 0) { |
51 | if ((buf = malloc(initial_capacity)) == NULL) | 53 | if ((buf = malloc(initial_capacity)) == NULL) |
52 | return 0; | 54 | return 0; |
@@ -56,16 +58,20 @@ CBB_init(CBB *cbb, size_t initial_capacity) | |||
56 | free(buf); | 58 | free(buf); |
57 | return 0; | 59 | return 0; |
58 | } | 60 | } |
61 | |||
59 | return 1; | 62 | return 1; |
60 | } | 63 | } |
61 | 64 | ||
62 | int | 65 | int |
63 | CBB_init_fixed(CBB *cbb, uint8_t *buf, size_t len) | 66 | CBB_init_fixed(CBB *cbb, uint8_t *buf, size_t len) |
64 | { | 67 | { |
68 | memset(cbb, 0, sizeof(*cbb)); | ||
69 | |||
65 | if (!cbb_init(cbb, buf, len)) | 70 | if (!cbb_init(cbb, buf, len)) |
66 | return 0; | 71 | return 0; |
67 | 72 | ||
68 | cbb->base->can_resize = 0; | 73 | cbb->base->can_resize = 0; |
74 | |||
69 | return 1; | 75 | return 1; |
70 | } | 76 | } |
71 | 77 | ||