From de47eb59bb829423b1d0f47ba13099073999b3cb Mon Sep 17 00:00:00 2001 From: Nicolas Planel Date: Wed, 29 Oct 2003 16:07:11 +0000 Subject: Corporate Server 2.1.1 release --- mdk-stage1/dietlibc/libcruft/mkstemp.c | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) (limited to 'mdk-stage1/dietlibc/libcruft/mkstemp.c') diff --git a/mdk-stage1/dietlibc/libcruft/mkstemp.c b/mdk-stage1/dietlibc/libcruft/mkstemp.c index 3b24ecb54..7dc19d4ed 100644 --- a/mdk-stage1/dietlibc/libcruft/mkstemp.c +++ b/mdk-stage1/dietlibc/libcruft/mkstemp.c @@ -1,14 +1,21 @@ #include #include #include +#include #include +#include "dietfeatures.h" + +#ifndef O_NOFOLLOW +#define O_NOFOLLOW 0 +#endif int mkstemp(char* template) { char *tmp=template+strlen(template)-6; int randfd; int i,res; unsigned int random; - for (i=0; i<6; ++i) if (tmp[i]!='X') { __set_errno(EINVAL); return -1; } + if (tmp>(i*5))&0x1f; tmp[i]=hexdigit>9?hexdigit+'a'-10:hexdigit+'0'; } - res=open(template,O_CREAT|O_RDWR|O_EXCL,0600); - if (res>=0) return res; + res=open(template,O_CREAT|O_RDWR|O_EXCL|O_NOFOLLOW,0600); + if (res>=0 || errno!=EEXIST) break; } close(randfd); + return res; } -- cgit v1.2.1