summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEric Andersen <andersen@codepoet.org>2003-04-29 07:25:59 +0000
committerEric Andersen <andersen@codepoet.org>2003-04-29 07:25:59 +0000
commit2cb53e303f7b61abefada491815f002b591a60b8 (patch)
treea2ec1831a9979cec2a936b09e9fae16ae2e5cb39
parent80e9ca2206f8b384e611ac49f111303196fe6f01 (diff)
uClibc 0.9.19 has a bug in globfree(). If the previous call to
glob(...,pglob) used the GLOB_DOOFFS flag to reserve the first pglob->gl_offs slots of pglob->gl_pathv, globfree(pglob) would attempt to free the objects pointed to by those slots. If those objects were not on the heap, the system would crash. The attached patch fixes this. Norm
-rw-r--r--libc/misc/glob/glob.c4
1 files changed, 2 insertions, 2 deletions
diff --git a/libc/misc/glob/glob.c b/libc/misc/glob/glob.c
index f45a2c487..8078dee38 100644
--- a/libc/misc/glob/glob.c
+++ b/libc/misc/glob/glob.c
@@ -260,8 +260,8 @@ globfree (pglob)
{
if (pglob->gl_pathv != NULL)
{
- register int i;
- for (i = 0; i < pglob->gl_pathc; ++i)
+ register int i = pglob->gl_flags & GLOB_DOOFFS? pglob->gl_offs : 0;
+ for (; i < pglob->gl_pathc; ++i)
if (pglob->gl_pathv[i] != NULL)
free ((__ptr_t) pglob->gl_pathv[i]);
free ((__ptr_t) pglob->gl_pathv);