]> git.pld-linux.org Git - packages/a2ps.git/blob - a2ps-security.patch
- removed all Group fields translations (oure rpm now can handle translating
[packages/a2ps.git] / a2ps-security.patch
1 diff -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 = NULL;\r
14 +static unsigned        ntempfiles = 0;\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, pfx);\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
55 diff -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.034182 seconds and 3 git commands to generate.