summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorjsing <>2015-09-01 13:35:39 +0000
committerjsing <>2015-09-01 13:35:39 +0000
commit5d2f851bf9aa598e77b6d89ba8622bfe05ce2371 (patch)
tree6ff47a08813fc718f70bea7b69354582067f1aa4 /src
parent9bfe2450029c26d54ebb48f0d8c01d35b63865d3 (diff)
downloadopenbsd-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.c10
-rw-r--r--src/lib/libssl/src/ssl/bs_cbb.c10
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
62int 65int
63CBB_init_fixed(CBB *cbb, uint8_t *buf, size_t len) 66CBB_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
62int 65int
63CBB_init_fixed(CBB *cbb, uint8_t *buf, size_t len) 66CBB_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