* libio/libioP.h (_IO_acquire_lock_clear_flags2_fct): New function.

* debug/vfwprintf_chk.c (__vfwprintf_chk): Use
	_IO_acquire_lock_clear_flags2 instead of _IO_acquire_lock.
	* debug/vprintf_chk.c (__vprintf_chk): Likewise.
	* debug/vwprintf_chk.c (__vwprintf_chk): Likewise.
	* debug/vfprintf_chk.c (__vfprintf_chk): Likewise.
	* debug/fwprintf_chk.c (__fwprintf_chk): Likewise.
	* debug/printf_chk.c (__printf_chk): Likewise.
	* debug/fprintf_chk.c (__fprintf_chk): Likewise.
	* debug/wprintf_chk.c (__wprintf_chk): Likewise.

	* sysdeps/pthread/bits/stdio-lock.h (_IO_acquire_lock_clear_flags2):
	Define.
This commit is contained in:
Ulrich Drepper 2007-07-19 17:12:59 +00:00
parent d5078b9f65
commit b257c726a4
11 changed files with 48 additions and 20 deletions

View File

@ -1,5 +1,19 @@
2007-07-17 Jakub Jelinek <jakub@redhat.com>
* libio/libioP.h (_IO_acquire_lock_clear_flags2_fct): New function.
* debug/vfwprintf_chk.c (__vfwprintf_chk): Use
_IO_acquire_lock_clear_flags2 instead of _IO_acquire_lock.
* debug/vprintf_chk.c (__vprintf_chk): Likewise.
* debug/vwprintf_chk.c (__vwprintf_chk): Likewise.
* debug/vfprintf_chk.c (__vfprintf_chk): Likewise.
* debug/fwprintf_chk.c (__fwprintf_chk): Likewise.
* debug/printf_chk.c (__printf_chk): Likewise.
* debug/fprintf_chk.c (__fprintf_chk): Likewise.
* debug/wprintf_chk.c (__wprintf_chk): Likewise.
* sysdeps/pthread/bits/stdio-lock.h (_IO_acquire_lock_clear_flags2):
Define.
* bits/confname.h (_CS_POSIX_V6_WIDTH_RESTRICTED_ENVS): Define.
* posix/getconf.c (vars): Add POSIX_V6_WIDTH_RESTRICTED_ENVS.
@ -9,8 +23,6 @@
* stdlib/stdlib.h (realloc): Remove __attribute_malloc__.
* malloc/malloc.h (realloc): Likewise.
2007-07-16 Jakub Jelinek <jakub@redhat.com>
* libio/iopopen.c (_IO_new_proc_open): Don't close child_std_end
if one of proc_file_chain streams has that fileno.
* stdio-common/Makefile (tests): Add tst-popen2.

View File

@ -1,4 +1,4 @@
/* Copyright (C) 1991, 1995, 1996, 1997, 2001, 2004, 2006
/* Copyright (C) 1991, 1995, 1996, 1997, 2001, 2004, 2006, 2007
Free Software Foundation, Inc.
This file is part of the GNU C Library.
@ -29,7 +29,7 @@ ___fprintf_chk (FILE *fp, int flag, const char *format, ...)
va_list ap;
int done;
_IO_acquire_lock (fp);
_IO_acquire_lock_clear_flags2 (fp);
if (flag > 0)
fp->_flags2 |= _IO_FLAGS2_FORTIFY;

View File

@ -1,4 +1,4 @@
/* Copyright (C) 1991, 1995, 1996, 1997, 2001, 2004, 2005
/* Copyright (C) 1991, 1995, 1996, 1997, 2001, 2004, 2005, 2007
Free Software Foundation, Inc.
This file is part of the GNU C Library.
@ -29,7 +29,7 @@ __fwprintf_chk (FILE *fp, int flag, const wchar_t *format, ...)
va_list ap;
int done;
_IO_acquire_lock (fp);
_IO_acquire_lock_clear_flags2 (fp);
if (flag > 0)
fp->_flags2 |= _IO_FLAGS2_FORTIFY;

View File

@ -1,4 +1,4 @@
/* Copyright (C) 1991, 1995, 1996, 1997, 2001, 2004, 2006
/* Copyright (C) 1991, 1995, 1996, 1997, 2001, 2004, 2006, 2007
Free Software Foundation, Inc.
This file is part of the GNU C Library.
@ -29,7 +29,7 @@ ___printf_chk (int flag, const char *format, ...)
va_list ap;
int done;
_IO_acquire_lock (stdout);
_IO_acquire_lock_clear_flags2 (stdout);
if (flag > 0)
stdout->_flags2 |= _IO_FLAGS2_FORTIFY;

View File

@ -1,4 +1,4 @@
/* Copyright (C) 1991, 1995, 1996, 1997, 2001, 2004, 2005, 2006
/* Copyright (C) 1991, 1995, 1996, 1997, 2001, 2004, 2005, 2006, 2007
Free Software Foundation, Inc.
This file is part of the GNU C Library.
@ -28,7 +28,7 @@ ___vfprintf_chk (FILE *fp, int flag, const char *format, va_list ap)
{
int done;
_IO_acquire_lock (fp);
_IO_acquire_lock_clear_flags2 (fp);
if (flag > 0)
fp->_flags2 |= _IO_FLAGS2_FORTIFY;

View File

@ -1,4 +1,4 @@
/* Copyright (C) 1991, 1995, 1996, 1997, 2001, 2004, 2005, 2006
/* Copyright (C) 1991, 1995, 1996, 1997, 2001, 2004, 2005, 2006, 2007
Free Software Foundation, Inc.
This file is part of the GNU C Library.
@ -28,7 +28,7 @@ __vfwprintf_chk (FILE *fp, int flag, const wchar_t *format, va_list ap)
{
int done;
_IO_acquire_lock (fp);
_IO_acquire_lock_clear_flags2 (fp);
if (flag > 0)
fp->_flags2 |= _IO_FLAGS2_FORTIFY;

View File

@ -1,4 +1,4 @@
/* Copyright (C) 1991, 1995, 1996, 1997, 2001, 2004, 2006
/* Copyright (C) 1991, 1995, 1996, 1997, 2001, 2004, 2006, 2007
Free Software Foundation, Inc.
This file is part of the GNU C Library.
@ -28,7 +28,7 @@ ___vprintf_chk (int flag, const char *format, va_list ap)
{
int done;
_IO_acquire_lock (stdout);
_IO_acquire_lock_clear_flags2 (stdout);
if (flag > 0)
stdout->_flags2 |= _IO_FLAGS2_FORTIFY;

View File

@ -1,4 +1,4 @@
/* Copyright (C) 1991, 1995, 1996, 1997, 2001, 2004, 2005
/* Copyright (C) 1991, 1995, 1996, 1997, 2001, 2004, 2005, 2007
Free Software Foundation, Inc.
This file is part of the GNU C Library.
@ -29,7 +29,7 @@ __vwprintf_chk (int flag, const wchar_t *format, va_list ap)
{
int done;
_IO_acquire_lock (stdout);
_IO_acquire_lock_clear_flags2 (stdout);
if (flag > 0)
stdout->_flags2 |= _IO_FLAGS2_FORTIFY;

View File

@ -1,4 +1,4 @@
/* Copyright (C) 1991, 1995, 1996, 1997, 2001, 2004, 2005
/* Copyright (C) 1991, 1995, 1996, 1997, 2001, 2004, 2005, 2007
Free Software Foundation, Inc.
This file is part of the GNU C Library.
@ -30,7 +30,7 @@ __wprintf_chk (int flag, const wchar_t *format, ...)
va_list ap;
int done;
_IO_acquire_lock (stdout);
_IO_acquire_lock_clear_flags2 (stdout);
if (flag > 0)
stdout->_flags2 |= _IO_FLAGS2_FORTIFY;

View File

@ -968,3 +968,13 @@ _IO_acquire_lock_fct (_IO_FILE **p)
if ((fp->_flags & _IO_USER_LOCK) == 0)
_IO_funlockfile (fp);
}
static inline void
__attribute__ ((__always_inline__))
_IO_acquire_lock_clear_flags2_fct (_IO_FILE **p)
{
_IO_FILE *fp = *p;
fp->_flags &= ~_IO_FLAGS2_FORTIFY;
if ((fp->_flags & _IO_USER_LOCK) == 0)
_IO_funlockfile (fp);
}

View File

@ -1,5 +1,5 @@
/* Thread package specific definitions of stream lock type. NPTL version.
Copyright (C) 2000, 2001, 2002, 2003 Free Software Foundation, Inc.
Copyright (C) 2000, 2001, 2002, 2003, 2007 Free Software Foundation, Inc.
This file is part of the GNU C Library.
The GNU C Library is free software; you can redistribute it and/or
@ -94,9 +94,15 @@ typedef struct { int lock; int cnt; void *owner; } _IO_lock_t;
__attribute__((cleanup (_IO_acquire_lock_fct))) \
= (_fp); \
_IO_flockfile (_IO_acquire_lock_file);
# define _IO_acquire_lock_clear_flags2(_fp) \
do { \
_IO_FILE *_IO_acquire_lock_file \
__attribute__((cleanup (_IO_acquire_lock_clear_flags2_fct))) \
= (_fp); \
_IO_flockfile (_IO_acquire_lock_file);
# else
# define _IO_acquire_lock(_fp) _IO_acquire_lock_needs_exceptions_enabled
# define _IO_acquire_lock_clear_flags2(_fp) _IO_acquire_lock (_fp)
# endif
# define _IO_release_lock(_fp) ; } while (0)