aboutsummaryrefslogtreecommitdiff
path: root/mac.c
diff options
context:
space:
mode:
Diffstat (limited to 'mac.c')
-rw-r--r--mac.c23
1 files changed, 7 insertions, 16 deletions
diff --git a/mac.c b/mac.c
index f3dda6692866..c95f5ea06856 100644
--- a/mac.c
+++ b/mac.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: mac.c,v 1.35 2019/09/06 04:53:27 djm Exp $ */
+/* $OpenBSD: mac.c,v 1.37 2025/09/05 10:01:35 dtucker Exp $ */
/*
* Copyright (c) 2001 Markus Friedl. All rights reserved.
*
@@ -27,9 +27,9 @@
#include <sys/types.h>
+#include <stdio.h>
#include <stdlib.h>
#include <string.h>
-#include <stdio.h>
#include "digest.h"
#include "hmac.h"
@@ -83,22 +83,13 @@ static const struct macalg macs[] = {
char *
mac_alg_list(char sep)
{
- char *ret = NULL, *tmp;
- size_t nlen, rlen = 0;
+ char *ret = NULL;
const struct macalg *m;
+ char sep_str[2] = {sep, '\0'};
+
+ for (m = macs; m->name != NULL; m++)
+ xextendf(&ret, sep_str, "%s", m->name);
- for (m = macs; m->name != NULL; m++) {
- if (ret != NULL)
- ret[rlen++] = sep;
- nlen = strlen(m->name);
- if ((tmp = realloc(ret, rlen + nlen + 2)) == NULL) {
- free(ret);
- return NULL;
- }
- ret = tmp;
- memcpy(ret + rlen, m->name, nlen + 1);
- rlen += nlen;
- }
return ret;
}