Skip site navigation (1)Skip section navigation (2)
Date:      Sun, 10 Feb 2008 11:40:02 GMT
From:      Bruce Cran <bruce@cran.org.uk>
To:        freebsd-bugs@FreeBSD.org
Subject:   Re: bin/73337: [nsswitch] [patch] potential invalid free
Message-ID:  <200802101140.m1ABe2bf099076@freefall.freebsd.org>

next in thread | raw e-mail | index | archive | help
The following reply was made to PR bin/73337; it has been noted by GNATS.

From: Bruce Cran <bruce@cran.org.uk>
To: bug-followup@FreeBSD.org, nectar@FreeBSD.org
Cc:  
Subject: Re: bin/73337: [nsswitch] [patch] potential invalid free
Date: Sun, 10 Feb 2008 11:39:38 +0000

 This is a multi-part message in MIME format.
 --------------080704050506000507090004
 Content-Type: text/plain; charset=ISO-8859-1; format=flowed
 Content-Transfer-Encoding: 7bit
 
 Attaching the patch as an attachment.
 
 --------------080704050506000507090004
 Content-Type: text/plain;
  name="nss_tls.h.diff"
 Content-Transfer-Encoding: 7bit
 Content-Disposition: inline;
  filename="nss_tls.h.diff"
 
 --- nss_tls.h.old	2008-01-12 00:21:20.000000000 +0000
 +++ nss_tls.h	2008-01-12 10:54:17.000000000 +0000
 @@ -50,12 +50,18 @@
  static int							\
  name##_getstate(struct name##_state **p)			\
  {								\
 -	static struct name##_state st;				\
 +	static struct name##_state *st = NULL;				\
  	static pthread_once_t	keyinit = PTHREAD_ONCE_INIT;	\
  	int			rv;				\
  								\
  	if (!__isthreaded || _pthread_main_np() != 0) {		\
 -		*p = &st;					\
 +		if (st == NULL) {               \
 +			st = calloc(1, sizeof(*st));		\
 +			if (st == NULL)         \
 +				return (ENOMEM);    \
 +		}                           \
 +		                           \
 +		*p = st;					\
  		return (0);					\
  	}							\
  	rv = _pthread_once(&keyinit, name##_keyinit);		\
 
 --------------080704050506000507090004--



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