Skip site navigation (1)Skip section navigation (2)
Date:      Sat, 1 Dec 2012 17:44:06 +0000 (UTC)
From:      Marcel Moolenaar <marcel@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org
Subject:   svn commit: r243758 - head/lib/libc/gen
Message-ID:  <201212011744.qB1Hi7mD058735@svn.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: marcel
Date: Sat Dec  1 17:44:06 2012
New Revision: 243758
URL: http://svnweb.freebsd.org/changeset/base/243758

Log:
  In globextend() when the pathv vector cannot be (re-)allocated, don't
  free and clear the gl_pathv pointer in the glob_t structure. Such
  breaks the invariant of the glob_t structure, as stated in the comment
  right in front of the globextend() function. If gl_pathv was non-NULL,
  then gl_pathc was > 0. Making gl_pathv a NULL pointer without also
  setting gl_pathc to 0 is wrong.
  
  Since we otherwise don't free the memory associated with a glob_t in
  error cases, it's unlikely that this change will cause a memory leak
  that wasn't already there to begin with. Callers of glob(3) must
  call globfree(3) irrespective of whether glob(3) returned an error
  or not.

Modified:
  head/lib/libc/gen/glob.c

Modified: head/lib/libc/gen/glob.c
==============================================================================
--- head/lib/libc/gen/glob.c	Sat Dec  1 16:44:33 2012	(r243757)
+++ head/lib/libc/gen/glob.c	Sat Dec  1 17:44:06 2012	(r243758)
@@ -718,13 +718,8 @@ globextend(const Char *path, glob_t *pgl
 	pathv = pglob->gl_pathv ?
 		    realloc((char *)pglob->gl_pathv, newsize) :
 		    malloc(newsize);
-	if (pathv == NULL) {
-		if (pglob->gl_pathv) {
-			free(pglob->gl_pathv);
-			pglob->gl_pathv = NULL;
-		}
+	if (pathv == NULL)
 		return (GLOB_NOSPACE);
-	}
 
 	if (pglob->gl_pathv == NULL && pglob->gl_offs > 0) {
 		/* first time around -- clear initial gl_offs items */



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