From: jsing Date: Sun, 9 Apr 2017 15:03:54 +0000 (+0000) Subject: With recallocarray() BUF_MEM_grow() is essentially the same as X-Git-Url: http://artulab.com/gitweb/?a=commitdiff_plain;h=027ccf5329c0a626d5f824374ef6ff2fa3f4b437;p=openbsd With recallocarray() BUF_MEM_grow() is essentially the same as BUF_MEM_grow_clean() (the only difference is clearing on internal down sizing), so make it a wrapper. ok beck@ deraadt@ --- diff --git a/lib/libcrypto/buffer/buffer.c b/lib/libcrypto/buffer/buffer.c index 2e4959a58d6..f15b93d26c0 100644 --- a/lib/libcrypto/buffer/buffer.c +++ b/lib/libcrypto/buffer/buffer.c @@ -1,4 +1,4 @@ -/* $OpenBSD: buffer.c,v 1.24 2017/03/16 13:29:56 jsing Exp $ */ +/* $OpenBSD: buffer.c,v 1.25 2017/04/09 15:03:54 jsing Exp $ */ /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) * All rights reserved. * @@ -97,33 +97,7 @@ BUF_MEM_free(BUF_MEM *a) int BUF_MEM_grow(BUF_MEM *str, size_t len) { - char *ret; - size_t n; - - if (str->length >= len) { - str->length = len; - return (len); - } - if (str->max >= 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) { - BUFerror(ERR_R_MALLOC_FAILURE); - len = 0; - } else { - str->data = ret; - str->max = n; - str->length = len; - } - return (len); + return BUF_MEM_grow_clean(str, len); } int