Skip site navigation (1)Skip section navigation (2)
Date:      Sun, 3 Jan 1999 04:46:40 +0100 (CET)
From:      murduth@ludd.luth.se
To:        FreeBSD-gnats-submit@FreeBSD.ORG
Subject:   bin/9281: [PATCH] awk uses junk memory
Message-ID:  <199901030346.EAA41959@rmstar.campus.luth.se>

next in thread | raw e-mail | index | archive | help

>Number:         9281
>Category:       bin
>Synopsis:       awk asumes memory that is returned from malloc is clean.
>Confidential:   no
>Severity:       non-critical
>Priority:       low
>Responsible:    freebsd-bugs
>State:          open
>Quarter:
>Keywords:
>Date-Required:
>Class:          sw-bug
>Submitter-Id:   current-users
>Arrival-Date:   Sat Jan  2 19:50:00 PST 1999
>Last-Modified:
>Originator:     Joakim Henriksson
>Organization:
FreeBSD
>Release:        FreeBSD-CURRENT
>Environment:

/usr/src/contrib/awk/awk.y version 1.1.1.1

>Description:

When repporting errors (and problably other places i havn't found/looked for)
awk puts out garbage due to non null memory from malloc.

>How-To-Repeat:

cd /etc ; ln -s malloc.conf AJ
cd ; cat > test.awk
/foo/{
{if (FNR==2) foo = $0}
^D
awk -f test.awk

>Fix:

Apply following patch in /usr/src.
	
*** contrib/awk/awk.y.orig      Sun Jan  3 03:54:24 1999
--- contrib/awk/awk.y   Sun Jan  3 04:29:59 1999
***************
*** 1091,1096 ****
--- 1091,1097 ----
                                }
                        len = lexptr - scan;
                        emalloc(buf, char *, len+1, "get_src_buf");
+                       bzero(buf, len + 1);
                        memcpy(buf, scan, len);
                        thisline = buf;
                        lexptr = buf + len;
***************
*** 1130,1136 ****
                newfile = TRUE;
                if (buf != NULL)
                        free(buf);
!               emalloc(buf, char *, len + SLOP, "get_src_buf");
                lexptr_begin = buf + SLOP;
                samefile = TRUE;
                sourceline = 1;
--- 1131,1138 ----
                newfile = TRUE;
                if (buf != NULL)
                        free(buf);
!               emalloc(buf, char *, len + SLOP + 1, "get_src_buf");
!               bzero(buf, len + SLOP + 1);
                lexptr_begin = buf + SLOP;
                samefile = TRUE;
                sourceline = 1;

>Audit-Trail:
>Unformatted:

To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-bugs" in the body of the message



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