Make CBB_finish() fail if *out_data is not NULL
authortb <tb@openbsd.org>
Thu, 7 Jul 2022 17:12:15 +0000 (17:12 +0000)
committertb <tb@openbsd.org>
Thu, 7 Jul 2022 17:12:15 +0000 (17:12 +0000)
Contrary to CBS_stow(), CBB_finish() will leak, so ensure we fail if
*out_data is populated.

Discussed with & ok jsing

lib/libssl/bs_cbb.c

index 95e5386..e2f87be 100644 (file)
@@ -1,4 +1,4 @@
-/*     $OpenBSD: bs_cbb.c,v 1.27 2022/01/06 14:30:30 jsing Exp $       */
+/*     $OpenBSD: bs_cbb.c,v 1.28 2022/07/07 17:12:15 tb Exp $  */
 /*
  * Copyright (c) 2014, Google Inc.
  *
@@ -163,6 +163,9 @@ CBB_finish(CBB *cbb, uint8_t **out_data, size_t *out_len)
                 */
                return 0;
 
+       if (out_data != NULL && *out_data != NULL)
+               return 0;
+
        if (out_data != NULL)
                *out_data = cbb->base->buf;