diff options
Diffstat (limited to 'src/lib/libssl/bs_cbb.c')
| -rw-r--r-- | src/lib/libssl/bs_cbb.c | 15 |
1 files changed, 8 insertions, 7 deletions
diff --git a/src/lib/libssl/bs_cbb.c b/src/lib/libssl/bs_cbb.c index b766e850d3..29312e104b 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.8 2015/04/29 02:02:46 doug Exp $ */ | 1 | /* $OpenBSD: bs_cbb.c,v 1.9 2015/06/13 09:11:57 doug Exp $ */ |
| 2 | /* | 2 | /* |
| 3 | * Copyright (c) 2014, Google Inc. | 3 | * Copyright (c) 2014, Google Inc. |
| 4 | * | 4 | * |
| @@ -36,7 +36,7 @@ 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)); | 39 | memset(cbb, 0, sizeof(*cbb)); |
| 40 | cbb->base = base; | 40 | cbb->base = base; |
| 41 | cbb->is_top_level = 1; | 41 | cbb->is_top_level = 1; |
| 42 | return 1; | 42 | return 1; |
| @@ -45,11 +45,12 @@ cbb_init(CBB *cbb, uint8_t *buf, size_t cap) | |||
| 45 | int | 45 | int |
| 46 | CBB_init(CBB *cbb, size_t initial_capacity) | 46 | CBB_init(CBB *cbb, size_t initial_capacity) |
| 47 | { | 47 | { |
| 48 | uint8_t *buf; | 48 | uint8_t *buf = NULL; |
| 49 | 49 | ||
| 50 | buf = malloc(initial_capacity); | 50 | if (initial_capacity > 0) { |
| 51 | if (initial_capacity > 0 && buf == NULL) | 51 | if ((buf = malloc(initial_capacity)) == NULL) |
| 52 | return 0; | 52 | return 0; |
| 53 | } | ||
| 53 | 54 | ||
| 54 | if (!cbb_init(cbb, buf, initial_capacity)) { | 55 | if (!cbb_init(cbb, buf, initial_capacity)) { |
| 55 | free(buf); | 56 | free(buf); |
| @@ -72,7 +73,7 @@ void | |||
| 72 | CBB_cleanup(CBB *cbb) | 73 | CBB_cleanup(CBB *cbb) |
| 73 | { | 74 | { |
| 74 | if (cbb->base) { | 75 | if (cbb->base) { |
| 75 | if (cbb->base->buf && cbb->base->can_resize) | 76 | if (cbb->base->can_resize) |
| 76 | free(cbb->base->buf); | 77 | free(cbb->base->buf); |
| 77 | 78 | ||
| 78 | free(cbb->base); | 79 | free(cbb->base); |
