summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorJoel Sing <jsing@cvs.openbsd.org>2017-04-09 15:06:21 +0000
committerJoel Sing <jsing@cvs.openbsd.org>2017-04-09 15:06:21 +0000
commita5150a7a1d7bfed8fd7451dbb0f4d0f04b2658b8 (patch)
tree2eb3370fc13c251217584f3ef5bc084d411e47e0 /lib
parent3e9e2494b044af543b14b46818eef1c93dea7fe6 (diff)
Simplify/clean up BUF_MEM_grow_clean().
ok beck@
Diffstat (limited to 'lib')
-rw-r--r--lib/libcrypto/buffer/buffer.c33
1 files changed, 16 insertions, 17 deletions
diff --git a/lib/libcrypto/buffer/buffer.c b/lib/libcrypto/buffer/buffer.c
index f15b93d26c0..5ed893f5f95 100644
--- a/lib/libcrypto/buffer/buffer.c
+++ b/lib/libcrypto/buffer/buffer.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: buffer.c,v 1.25 2017/04/09 15:03:54 jsing Exp $ */
+/* $OpenBSD: buffer.c,v 1.26 2017/04/09 15:06:20 jsing Exp $ */
/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com)
* All rights reserved.
*
@@ -63,9 +63,11 @@
#include <openssl/buffer.h>
#include <openssl/err.h>
-/* LIMIT_BEFORE_EXPANSION is the maximum n such that (n+3)/3*4 < 2**31. That
- * function is applied in several functions in this file and this limit ensures
- * that the result fits in an int. */
+/*
+ * LIMIT_BEFORE_EXPANSION is the maximum n such that (n + 3) / 3 * 4 < 2**31.
+ * That function is applied in several functions in this file and this limit
+ * ensures that the result fits in an int.
+ */
#define LIMIT_BEFORE_EXPANSION 0x5ffffffc
BUF_MEM *
@@ -106,30 +108,27 @@ BUF_MEM_grow_clean(BUF_MEM *str, size_t len)
char *ret;
size_t n;
- if (str->length >= len) {
- memset(&str->data[len], 0, str->length - len);
- str->length = len;
- return (len);
- }
if (str->max >= len) {
+ if (str->length >= len)
+ memset(&str->data[len], 0, str->length - len);
str->length = len;
return (len);
}
- /* This limit is sufficient to ensure (len+3)/3*4 < 2**31 */
+
if (len > LIMIT_BEFORE_EXPANSION) {
BUFerror(ERR_R_MALLOC_FAILURE);
return 0;
}
+
n = (len + 3) / 3 * 4;
- ret = recallocarray(str->data, str->max, n, 1);
- if (ret == NULL) {
+ if ((ret = recallocarray(str->data, str->max, n, 1)) == NULL) {
BUFerror(ERR_R_MALLOC_FAILURE);
- len = 0;
- } else {
- str->data = ret;
- str->max = n;
- str->length = len;
+ return (0);
}
+ str->data = ret;
+ str->max = n;
+ str->length = len;
+
return (len);
}