Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 3 Nov 2000 11:56:18 -0800
From:      Kris Kennaway <kris@FreeBSD.org>
To:        obrien@FreeBSD.org, audit@FreeBSD.org
Subject:   gcc/binutils tempfile fixes
Message-ID:  <20001103115618.A29306@citusc17.usc.edu>

index | next in thread | raw e-mail

[-- Attachment #1 --]
Please review the following changes:

The current behaviour of gcc/binutils wrt tempfile creation is
insecure - for a given PID only 52 different tempfiles can be created,
leaving gcc vulnerable to symlink attacks and code corruption. The
libiberty version of mkstemp() seems to enforce using only 6 X's for
some reason - but it seems we (rightly) don't use this anyway)

David, how should we go about getting these fixed in gcc?

Kris

Index: binutils/binutils/bucomm.c
===================================================================
RCS file: /home/ncvs/src/contrib/binutils/binutils/bucomm.c,v
retrieving revision 1.1.1.4
diff -u -r1.1.1.4 bucomm.c
--- binutils/binutils/bucomm.c	2000/06/20 06:19:29	1.1.1.4
+++ binutils/binutils/bucomm.c	2000/11/03 19:28:04
@@ -211,7 +211,7 @@
 make_tempname (filename)
      char *filename;
 {
-  static char template[] = "stXXXXXX";
+  static char template[] = "stXXXXXXXXXX";
   char *tmpname;
   char *slash = strrchr (filename, '/');
 
Index: binutils/libiberty/choose-temp.c
===================================================================
RCS file: /home/ncvs/src/contrib/binutils/libiberty/choose-temp.c,v
retrieving revision 1.1.1.3
diff -u -r1.1.1.3 choose-temp.c
--- binutils/libiberty/choose-temp.c	2000/05/12 23:15:11	1.1.1.3
+++ binutils/libiberty/choose-temp.c	2000/11/03 19:27:49
@@ -71,7 +71,7 @@
 
 /* Name of temporary file.
    mktemp requires 6 trailing X's.  */
-#define TEMP_FILE "ccXXXXXX"
+#define TEMP_FILE "ccXXXXXXXXXX"
 
 /* Subroutine of choose_temp_base.
    If BASE is non-NULL, return it.
Index: gcc/choose-temp.c
===================================================================
RCS file: /home/ncvs/src/contrib/gcc/choose-temp.c,v
retrieving revision 1.4
diff -u -r1.4 choose-temp.c
--- gcc/choose-temp.c	2000/06/12 06:24:54	1.4
+++ gcc/choose-temp.c	2000/11/03 19:15:20
@@ -73,7 +73,7 @@
 
 /* Name of temporary file.
    mktemp requires 6 trailing X's.  */
-#define TEMP_FILE "ccXXXXXX"
+#define TEMP_FILE "ccXXXXXXXXXX"
 
 /* Subroutine of choose_temp_base.
    If BASE is non-NULL, return it.
Index: gcc.295/choose-temp.c
===================================================================
RCS file: /home/ncvs/src/contrib/gcc.295/choose-temp.c,v
retrieving revision 1.3
diff -u -r1.3 choose-temp.c
--- gcc.295/choose-temp.c	1999/11/04 10:23:25	1.3
+++ gcc.295/choose-temp.c	2000/11/03 19:17:33
@@ -73,7 +73,7 @@
 
 /* Name of temporary file.
    mktemp requires 6 trailing X's.  */
-#define TEMP_FILE "ccXXXXXX"
+#define TEMP_FILE "ccXXXXXXXXXX"
 
 /* Subroutine of choose_temp_base.
    If BASE is non-NULL, return it.

[-- Attachment #2 --]
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.0.4 (FreeBSD)
Comment: For info see http://www.gnupg.org

iEYEARECAAYFAjoDGGEACgkQWry0BWjoQKVNtQCfUySAUaLS0rfHKEDUmJQzQvlc
6fsAn14t1CCpKLZpgMSXSGYGddokKOPl
=55P2
-----END PGP SIGNATURE-----
home | help

Want to link to this message? Use this
URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20001103115618.A29306>