Simplify/clean up BUF_MEM_grow_clean().
authorjsing <jsing@openbsd.org>
Sun, 9 Apr 2017 15:06:20 +0000 (15:06 +0000)
committerjsing <jsing@openbsd.org>
Sun, 9 Apr 2017 15:06:20 +0000 (15:06 +0000)
ok beck@

lib/libcrypto/buffer/buffer.c

index f15b93d..5ed893f 100644 (file)
@@ -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.
  *
 #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);
 }