[prev in list] [next in list] [prev in thread] [next in thread]
List: kde-commits
Subject: KDE/kdelibs/win [POSSIBLY UNSAFE]
From: Peter Kümmel <syntheticpp () yahoo ! com>
Date: 2006-02-07 9:29:13
Message-ID: 1139304553.482829.21162.nullmailer () svn ! kde ! org
[Download RAW message or body]
SVN commit 506606 by kuemmel:
move kdecore/fakes.c into kdewin32.lib (only for windows)
M +3 -1 include/msvc/string.h
M +4 -1 include/msvc/unistd.h [POSSIBLY UNSAFE: mkstemp]
M +3 -4 src/string.c
M +130 -0 src/unistd.c
--- trunk/KDE/kdelibs/win/include/msvc/string.h #506605:506606
@@ -33,8 +33,10 @@
KDEWIN32_EXPORT char* strndup(const char *src, size_t n);
-// implementation in kdecore/fakes.c
+// from kdecore/fakes.c
+
KDEWIN32_EXPORT unsigned long strlcpy(char *dst, const char *src, unsigned long siz);
+
KDEWIN32_EXPORT unsigned long strlcat(char *dst, const char *src, unsigned long siz);
--- trunk/KDE/kdelibs/win/include/msvc/unistd.h #506605:506606
@@ -124,9 +124,12 @@
KDEWIN32_EXPORT int mkstemps(char* _template, int suffix_len);
-// implementation in kdecore/fakes.c
+// from kdecore/fakes.c
+
KDEWIN32_EXPORT int seteuid(uid_t euid);
+
KDEWIN32_EXPORT int mkstemp (char* _template);
+
KDEWIN32_EXPORT char* mkdtemp (char* _template);
#ifdef __cplusplus
--- trunk/KDE/kdelibs/win/src/string.c #506605:506606
@@ -26,7 +26,7 @@
#define MIN(a,b) ((a) < (b) ? (a) : (b))
#endif
-/*
+
// from kdecore/fakes.c
KDEWIN32_EXPORT unsigned long strlcpy(char *d, const char *s, unsigned long bufsize)
{
@@ -43,8 +43,7 @@
return ret;
}
-*/
-/*
+
// from kdecore/fakes.c
KDEWIN32_EXPORT unsigned long strlcat(char *d, const char *s, unsigned long bufsize)
{
@@ -65,7 +64,7 @@
return ret;
}
-*/
+
KDEWIN32_EXPORT char* strndup(const char *src, size_t n)
{
const size_t len = MIN(strlen(src), n);
--- trunk/KDE/kdelibs/win/src/unistd.c #506605:506606
@@ -187,6 +187,7 @@
return 0;
}
+
/* this is based on code taken from the GNU libc, distributed under the LGPL license */
/* Generate a unique temporary file name from TEMPLATE.
@@ -250,3 +251,132 @@
_template[0] = '\0';
return -1;
}
+
+// from kdecore/fakes.c
+KDEWIN32_EXPORT int setenv(const char *name, const char *value, int overwrite) {
+ int i;
+ char * a;
+
+ if (!overwrite && getenv(name)) return 0;
+
+ i = strlen(name) + strlen(value) + 2;
+ a = (char*)malloc(i);
+ if (!a) return 1;
+
+ strcpy(a, name);
+ strcat(a, "=");
+ strcat(a, value);
+
+ return putenv(a);
+}
+
+
+// from kdecore/fakes.c
+#ifndef environ
+extern char ** environ;
+#endif
+KDEWIN32_EXPORT void unsetenv (name)
+ const char *name;
+{
+ size_t len;
+ char **ep;
+
+ if (name == NULL || *name == '\0' || strchr (name, '=') != NULL)
+ {
+ errno = EINVAL;
+ return;
+ }
+
+ len = strlen (name);
+
+ ep = environ;
+ while (*ep != NULL)
+ if (!strncmp (*ep, name, len) && (*ep)[len] == '=')
+ {
+ /* Found it. Remove this pointer by moving later ones back. */
+ char **dp = ep;
+
+ do
+ dp[0] = dp[1];
+ while (*dp++);
+ /* Continue the loop in case NAME appears again. */
+ }
+ else
+ ++ep;
+
+}
+
+// from kdecore/fakes.c
+int seteuid(uid_t euid)
+{
+ return setreuid(-1, euid); /* Well, if you have neither you are in trouble :) */
+}
+
+// from kdecore/fakes.c
+/* Generate a unique temporary directory name from TEMPLATE.
+
+ TEMPLATE has the form:
+
+ <path>/ccXXXXXX
+
+
+ The last six characters of TEMPLATE must be "XXXXXX";
+ they are replaced with a string that makes the filename unique.
+
+ Returns a file descriptor open on the file for reading and writing. */
+
+KDEWIN32_EXPORT char* mkdtemp (char* _template)
+{
+ static const char letters[] = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
+ char *XXXXXX;
+ int len;
+ int count;
+ int value;
+
+ len = strlen (_template);
+
+ if ((int) len < 6 || strncmp (&_template[len - 6], "XXXXXX", 6))
+ return 0;
+
+ XXXXXX = &_template[len - 6];
+
+ value = rand();
+ for (count = 0; count < 256; ++count)
+ {
+ int v = value;
+
+ /* Fill in the random bits. */
+ XXXXXX[0] = letters[v % 62];
+ v /= 62;
+ XXXXXX[1] = letters[v % 62];
+ v /= 62;
+ XXXXXX[2] = letters[v % 62];
+ v /= 62;
+ XXXXXX[3] = letters[v % 62];
+ v /= 62;
+ XXXXXX[4] = letters[v % 62];
+ v /= 62;
+ XXXXXX[5] = letters[v % 62];
+
+ /* This is a random value. It is only necessary that the next
+ TMP_MAX values generated by adding 7777 to VALUE are different
+ with (module 2^32). */
+ value += 7777;
+
+ if (!kdewin32_mkdir(_template,0700))
+ return _template;
+ }
+ return 0;
+}
+
+
+// from kdecore/fakes.c
+#ifndef ENOTSUP
+#define ENOTSUP 134 /* Not supported */
+#endif
+KDEWIN32_EXPORT int revoke(const char *tty)
+{
+ errno = ENOTSUP;
+ return -1;
+}
+
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic