]> git.pld-linux.org Git - packages/a2ps.git/blobdiff - a2ps-security.patch
- patches from rawhide.
[packages/a2ps.git] / a2ps-security.patch
diff --git a/a2ps-security.patch b/a2ps-security.patch
new file mode 100644 (file)
index 0000000..ce4b6cf
--- /dev/null
@@ -0,0 +1,67 @@
+diff -ur a2ps-4.13.orig/lib/routines.c a2ps-4.13/lib/routines.c\r
+--- a2ps-4.13.orig/lib/routines.c      Sat Oct 16 06:46:37 1999\r
++++ a2ps-4.13/lib/routines.c   Fri Jan  5 12:51:20 2001\r
+@@ -242,3 +242,50 @@\r
+   /* Don't complain if you can't unlink.  Who cares of a tmp file? */\r
+   unlink (filename);\r
+ }\r
++\r
++/*\r
++ * Securely generate a temp file, and make sure it gets\r
++ * deleted upon exit.\r
++ */\r
++static char **        tempfiles;\r
++static unsigned       ntempfiles;\r
++\r
++static void\r
++cleanup_tempfiles()\r
++{\r
++      while (ntempfiles--)\r
++              unlink(tempfiles[ntempfiles]);\r
++}\r
++\r
++char *\r
++safe_tempnam(const char *pfx)\r
++{\r
++      char    *dirname, *filename;\r
++      int     fd;\r
++\r
++      if (!(dirname = getenv("TMPDIR")))\r
++              dirname = "/tmp";\r
++\r
++      tempfiles = (char **) realloc(tempfiles,\r
++                      (ntempfiles+1) * sizeof(char *));\r
++      if (tempfiles == NULL)\r
++              return NULL;\r
++\r
++      filename = malloc(strlen(dirname) + strlen(pfx) + sizeof("/XXXXXX"));\r
++      if (!filename)\r
++              return NULL;\r
++\r
++      sprintf(filename, "%s/%sXXXXXX", dirname, filename);\r
++\r
++      if ((fd = mkstemp(filename)) < 0) {\r
++              free(filename);\r
++              return NULL;\r
++      }\r
++      close(fd);\r
++\r
++      if (ntempfiles == 0)\r
++              atexit(cleanup_tempfiles);\r
++      tempfiles[ntempfiles++] = filename;\r
++\r
++      return filename;\r
++}\r
+diff -ur a2ps-4.13.orig/lib/routines.h a2ps-4.13/lib/routines.h\r
+--- a2ps-4.13.orig/lib/routines.h      Mon Oct 18 22:24:41 1999\r
++++ a2ps-4.13/lib/routines.h   Fri Jan  5 12:37:53 2001\r
+@@ -255,7 +255,8 @@\r
+ /* If _STR_ is not defined, give it a tempname in _TMPDIR_ */\r
+ #define tempname_ensure(Str)                          \\r
+ do {                                                  \\r
+-  (Str) = (Str) ? (Str) : tempnam (NULL, "a2_");      \\r
++  (Str) = (Str) ? (Str) : safe_tempnam("a2_");        \\r
+ } while (0)\r
++char * safe_tempnam(const char *);\r
\r
+ #endif\r
This page took 0.052643 seconds and 4 git commands to generate.