mirror of
https://codeberg.org/libreboot/lbmk.git
synced 2026-07-19 09:32:27 +02:00
util/nvmutil: don't use mktemp
Signed-off-by: Leah Rowe <leah@libreboot.org>
This commit is contained in:
+25
-4
@@ -304,6 +304,10 @@ typedef char static_assert_off_t_is_32[(sizeof(off_t) >= 4) ? 1 : -1];
|
|||||||
#define O_BINARY 0
|
#define O_BINARY 0
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#ifndef O_EXCL
|
||||||
|
#define O_EXCL 0
|
||||||
|
#endif
|
||||||
|
|
||||||
#ifndef O_NONBLOCK
|
#ifndef O_NONBLOCK
|
||||||
#define O_NONBLOCK 0
|
#define O_NONBLOCK 0
|
||||||
#endif
|
#endif
|
||||||
@@ -3001,15 +3005,32 @@ static int
|
|||||||
x_i_mkstemp(char *template)
|
x_i_mkstemp(char *template)
|
||||||
{
|
{
|
||||||
int fd;
|
int fd;
|
||||||
int i;
|
int i, j;
|
||||||
|
unsigned long len;
|
||||||
|
char *p;
|
||||||
|
|
||||||
for (i = 0; i < 10; i++) {
|
char ch[] = "abcdefghijklmnopqrstuvwxyz0123456789";
|
||||||
if (mktemp(template) == NULL)
|
|
||||||
return -1;
|
len = xstrxlen(template, PATH_LEN);
|
||||||
|
|
||||||
|
/* find trailing XXXXXX */
|
||||||
|
if (len < 6)
|
||||||
|
return -1;
|
||||||
|
|
||||||
|
p = template + len - 6;
|
||||||
|
|
||||||
|
for (i = 0; i < 100; i++) {
|
||||||
|
|
||||||
|
for (j = 0; j < 6; j++)
|
||||||
|
p[j] = ch[rhex() & 31];
|
||||||
|
|
||||||
fd = open(template, O_RDWR | O_CREAT | O_EXCL, 0600);
|
fd = open(template, O_RDWR | O_CREAT | O_EXCL, 0600);
|
||||||
|
|
||||||
if (fd >= 0)
|
if (fd >= 0)
|
||||||
return fd;
|
return fd;
|
||||||
|
|
||||||
|
if (errno != EEXIST)
|
||||||
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
errno = EEXIST;
|
errno = EEXIST;
|
||||||
|
|||||||
Reference in New Issue
Block a user