From 5d2f851bf9aa598e77b6d89ba8622bfe05ce2371 Mon Sep 17 00:00:00 2001 From: jsing <> Date: Tue, 1 Sep 2015 13:35:39 +0000 Subject: Make it always safe to call CBB_cleanup() providing that CBB_init() or CBB_init_fixed() have been attempted. ok doug@ --- src/lib/libssl/bs_cbb.c | 10 ++++++++-- src/lib/libssl/src/ssl/bs_cbb.c | 10 ++++++++-- 2 files changed, 16 insertions(+), 4 deletions(-) (limited to 'src') 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 @@ -/* $OpenBSD: bs_cbb.c,v 1.12 2015/06/18 23:25:07 doug Exp $ */ +/* $OpenBSD: bs_cbb.c,v 1.13 2015/09/01 13:35:39 jsing Exp $ */ /* * Copyright (c) 2014, Google Inc. * @@ -36,9 +36,9 @@ cbb_init(CBB *cbb, uint8_t *buf, size_t cap) base->cap = cap; base->can_resize = 1; - memset(cbb, 0, sizeof(*cbb)); cbb->base = base; cbb->is_top_level = 1; + return 1; } @@ -47,6 +47,8 @@ CBB_init(CBB *cbb, size_t initial_capacity) { uint8_t *buf = NULL; + memset(cbb, 0, sizeof(*cbb)); + if (initial_capacity > 0) { if ((buf = malloc(initial_capacity)) == NULL) return 0; @@ -56,16 +58,20 @@ CBB_init(CBB *cbb, size_t initial_capacity) free(buf); return 0; } + return 1; } int CBB_init_fixed(CBB *cbb, uint8_t *buf, size_t len) { + memset(cbb, 0, sizeof(*cbb)); + if (!cbb_init(cbb, buf, len)) return 0; cbb->base->can_resize = 0; + return 1; } 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 @@ -/* $OpenBSD: bs_cbb.c,v 1.12 2015/06/18 23:25:07 doug Exp $ */ +/* $OpenBSD: bs_cbb.c,v 1.13 2015/09/01 13:35:39 jsing Exp $ */ /* * Copyright (c) 2014, Google Inc. * @@ -36,9 +36,9 @@ cbb_init(CBB *cbb, uint8_t *buf, size_t cap) base->cap = cap; base->can_resize = 1; - memset(cbb, 0, sizeof(*cbb)); cbb->base = base; cbb->is_top_level = 1; + return 1; } @@ -47,6 +47,8 @@ CBB_init(CBB *cbb, size_t initial_capacity) { uint8_t *buf = NULL; + memset(cbb, 0, sizeof(*cbb)); + if (initial_capacity > 0) { if ((buf = malloc(initial_capacity)) == NULL) return 0; @@ -56,16 +58,20 @@ CBB_init(CBB *cbb, size_t initial_capacity) free(buf); return 0; } + return 1; } int CBB_init_fixed(CBB *cbb, uint8_t *buf, size_t len) { + memset(cbb, 0, sizeof(*cbb)); + if (!cbb_init(cbb, buf, len)) return 0; cbb->base->can_resize = 0; + return 1; } -- cgit v1.2.3-55-g6feb