]> git.pld-linux.org Git - packages/a2ps.git/blame - a2ps-security.patch
- info patch: fixed ogonkify.texi (one tab too much)
[packages/a2ps.git] / a2ps-security.patch
CommitLineData
9d216bc5 1diff -ur a2ps-4.13.orig/lib/routines.c a2ps-4.13/lib/routines.c\r
2--- a2ps-4.13.orig/lib/routines.c Sat Oct 16 06:46:37 1999\r
3+++ a2ps-4.13/lib/routines.c Fri Jan 5 12:51:20 2001\r
4@@ -242,3 +242,50 @@\r
5 /* Don't complain if you can't unlink. Who cares of a tmp file? */\r
6 unlink (filename);\r
7 }\r
8+\r
9+/*\r
10+ * Securely generate a temp file, and make sure it gets\r
11+ * deleted upon exit.\r
12+ */\r
13+static char ** tempfiles;\r
14+static unsigned ntempfiles;\r
15+\r
16+static void\r
17+cleanup_tempfiles()\r
18+{\r
19+ while (ntempfiles--)\r
20+ unlink(tempfiles[ntempfiles]);\r
21+}\r
22+\r
23+char *\r
24+safe_tempnam(const char *pfx)\r
25+{\r
26+ char *dirname, *filename;\r
27+ int fd;\r
28+\r
29+ if (!(dirname = getenv("TMPDIR")))\r
30+ dirname = "/tmp";\r
31+\r
32+ tempfiles = (char **) realloc(tempfiles,\r
33+ (ntempfiles+1) * sizeof(char *));\r
34+ if (tempfiles == NULL)\r
35+ return NULL;\r
36+\r
37+ filename = malloc(strlen(dirname) + strlen(pfx) + sizeof("/XXXXXX"));\r
38+ if (!filename)\r
39+ return NULL;\r
40+\r
41+ sprintf(filename, "%s/%sXXXXXX", dirname, filename);\r
42+\r
43+ if ((fd = mkstemp(filename)) < 0) {\r
44+ free(filename);\r
45+ return NULL;\r
46+ }\r
47+ close(fd);\r
48+\r
49+ if (ntempfiles == 0)\r
50+ atexit(cleanup_tempfiles);\r
51+ tempfiles[ntempfiles++] = filename;\r
52+\r
53+ return filename;\r
54+}\r
55diff -ur a2ps-4.13.orig/lib/routines.h a2ps-4.13/lib/routines.h\r
56--- a2ps-4.13.orig/lib/routines.h Mon Oct 18 22:24:41 1999\r
57+++ a2ps-4.13/lib/routines.h Fri Jan 5 12:37:53 2001\r
58@@ -255,7 +255,8 @@\r
59 /* If _STR_ is not defined, give it a tempname in _TMPDIR_ */\r
60 #define tempname_ensure(Str) \\r
61 do { \\r
62- (Str) = (Str) ? (Str) : tempnam (NULL, "a2_"); \\r
63+ (Str) = (Str) ? (Str) : safe_tempnam("a2_"); \\r
64 } while (0)\r
65+char * safe_tempnam(const char *);\r
66 \r
67 #endif\r
This page took 0.109934 seconds and 4 git commands to generate.