From eb8dd9dca1228af0cd132f515509051ecfabf6f6 Mon Sep 17 00:00:00 2001 From: cvs2svn Date: Mon, 14 Apr 2025 17:32:06 +0000 Subject: This commit was manufactured by cvs2git to create tag 'tb_20250414'. --- src/lib/libc/stdlib/__mktemp4.c | 83 ----------------------------------------- 1 file changed, 83 deletions(-) delete mode 100644 src/lib/libc/stdlib/__mktemp4.c (limited to 'src/lib/libc/stdlib/__mktemp4.c') diff --git a/src/lib/libc/stdlib/__mktemp4.c b/src/lib/libc/stdlib/__mktemp4.c deleted file mode 100644 index 4b4500018b..0000000000 --- a/src/lib/libc/stdlib/__mktemp4.c +++ /dev/null @@ -1,83 +0,0 @@ -/* $OpenBSD: __mktemp4.c,v 1.1 2024/01/19 19:45:02 millert Exp $ */ -/* - * Copyright (c) 1996-1998, 2008 Theo de Raadt - * Copyright (c) 1997, 2008-2009, 2024 Todd C. Miller - * - * Permission to use, copy, modify, and distribute this software for any - * purpose with or without fee is hereby granted, provided that the above - * copyright notice and this permission notice appear in all copies. - * - * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES - * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF - * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR - * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES - * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN - * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF - * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - */ - -#include -#include -#include -#include - -#define TEMPCHARS "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789" -#define NUM_CHARS (sizeof(TEMPCHARS) - 1) -#define MIN_X 6 - -#ifndef nitems -#define nitems(_a) (sizeof((_a)) / sizeof((_a)[0])) -#endif - -/* - * Internal driver for the mktemp(3) family of functions. - * The supplied callback does the actual work of testing or - * creating the file/directory. - */ -int -__mktemp4(char *path, int slen, int flags, int (*cb)(const char *, int)) -{ - char *start, *cp, *ep; - const char tempchars[] = TEMPCHARS; - unsigned int tries; - size_t len; - int ret; - - len = strlen(path); - if (len < MIN_X || slen < 0 || (size_t)slen > len - MIN_X) { - errno = EINVAL; - return -1; - } - ep = path + len - slen; - - for (start = ep; start > path && start[-1] == 'X'; start--) - ; - if (ep - start < MIN_X) { - errno = EINVAL; - return -1; - } - - tries = INT_MAX; - do { - cp = start; - do { - unsigned short rbuf[16]; - unsigned int i; - - /* - * Avoid lots of arc4random() calls by using - * a buffer sized for up to 16 Xs at a time. - */ - arc4random_buf(rbuf, sizeof(rbuf)); - for (i = 0; i < nitems(rbuf) && cp != ep; i++) - *cp++ = tempchars[rbuf[i] % NUM_CHARS]; - } while (cp != ep); - - ret = cb(path, flags); - if (ret != -1 || errno != EEXIST) - return ret; - } while (--tries); - - errno = EEXIST; - return -1; -} -- cgit v1.2.3-55-g6feb