Date: Thu, 21 Jun 2001 23:23:15 -0700 From: Dima Dorfman <dima@unixfreak.org> To: ian j hart <ianjhart@freeloader.freeserve.co.uk> Cc: freebsd-ports@freebsd.org, jkh@freebsd.org Subject: Re: New INDEX Message-ID: <20010622062315.6C42D3E28@bazooka.unixfreak.org> In-Reply-To: <3B326B5F.C763F5F8@freeloader.freeserve.co.uk>; from ianjhart@freeloader.freeserve.co.uk on "Thu, 21 Jun 2001 22:47:11 %2B0100"
next in thread | previous in thread | raw e-mail | index | archive | help
ian j hart <ianjhart@freeloader.freeserve.co.uk> writes:
> /stand/sysinstall is core dumping on the new ports/INDEX (r 1.337). The
> previous revision is okay (r 1.336). This is using 4.3-RELEASE.
Basically what's happening is that some gnome ports have very large
lists of dependencies. Sysinstall being the queen of fixed-size
buffers, it doesn't deal with this very well. At least the buffer
which holds the entire line (index.c::index_parse::line) and the
buffer which holds the build dependencies (index.c::index_parse::junk)
are being overrun. This causes stack corruption, which leads to the
seg fault you're seeing.
The attached patch should fix it. I made the buffers larger than they
have to be so that this kind of situation won't happen again for a
while. Ideally sysinstall would dynamically allocate these buffers;
well, no: ideally sysinstall would be replaced by something a bit more
modern :-).
Dima Dorfman
dima@unixfreak.org
Index: index.c
===================================================================
RCS file: /stl/src/FreeBSD/src/release/sysinstall/Attic/index.c,v
retrieving revision 1.80.2.10
diff -u -r1.80.2.10 index.c
--- index.c 2001/04/22 16:56:11 1.80.2.10
+++ index.c 2001/06/22 06:17:04
@@ -272,8 +272,8 @@
int
index_parse(FILE *fp, char *name, char *pathto, char *prefix, char *comment, char *descr, char *maint, char *cats, char *rdeps)
{
- char line[2048];
- char junk[511];
+ char line[10240];
+ char junk[2048];
char *cp;
int i;
@@ -299,7 +299,7 @@
int
index_read(FILE *fp, PkgNodePtr papa)
{
- char name[127], pathto[255], prefix[255], comment[255], descr[127], maint[127], cats[511], deps[1024];
+ char name[127], pathto[255], prefix[255], comment[255], descr[127], maint[127], cats[511], deps[2048];
PkgNodePtr i;
while (index_parse(fp, name, pathto, prefix, comment, descr, maint, cats, deps) != EOF) {
To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-ports" in the body of the message
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20010622062315.6C42D3E28>
