ports/56006: [PATCH] buffer overflows in databases/gnats
Oliver Eikemeier
eikemeier at fillmore-labs.com
Tue Aug 26 15:20:17 UTC 2003
>Number: 56006
>Category: ports
>Synopsis: [PATCH] buffer overflows in databases/gnats
>Confidential: no
>Severity: non-critical
>Priority: medium
>Responsible: freebsd-ports-bugs
>State: open
>Quarter:
>Keywords:
>Date-Required:
>Class: change-request
>Submitter-Id: current-users
>Arrival-Date: Tue Aug 26 08:20:15 PDT 2003
>Closed-Date:
>Last-Modified:
>Originator: Oliver Eikemeier
>Release: FreeBSD 4.8-STABLE i386
>Organization:
Fillmore Labs - http://www.fillmore-labs.com
>Environment:
System: FreeBSD nuuk.fillmore-labs.com 4.8-STABLE
>Description:
A security vulnerability has been found in the 3.113.1 release:
http://www.securityfocus.com/archive/1/326337
Impact: Local privilege elevation.
pr-edit, queue-pr and gen-index are installed setuid gnats and
can be exploited.
>How-To-Repeat:
>Fix:
A quick fix is the patch below from the security advisory. Don't forget to bump PORTREVISION.
As stated on http://www.gnu.org/software/gnats/ :
"There are no plans to fix this problem, all GNATS users should upgrade to 4.0"
GNATS 4.0 is submitted as port databases/gnats4 in PR 55876:
http://www.freebsd.org/cgi/query-pr.cgi?pr=55876
I'm willing to help to migrate the FreeBSD PR database to GNATS 4.0.
Btw, gnats 3.113.1 doesn't seem to build on -CURRENT:
http://bento.freebsd.org/errorlogs/i386-5-latest/gnats-3.113.1_7.log
and package building fails on -STABLE (needs to use the new INFO macro)
http://bento.freebsd.org/errorlogs/i386-4-latest/gnats-3.113.1_7.log
--- gnats-security.patch begins here ---
diff -Nur databases/gnats/files/patch-gnats::files.c.orig databases/gnats/files/patch-gnats::files.c
--- databases/gnats/files/patch-gnats::files.c.orig Thu Jan 1 01:00:00 1970
+++ databases/gnats/files/patch-gnats::files.c Tue Aug 26 16:17:15 2003
@@ -0,0 +1,29 @@
+--- gnats/files.c.orig Mon Feb 12 06:36:25 2001
++++ gnats/files.c Sat Jun 14 13:17:58 2003
+@@ -271,7 +271,7 @@
+ char *path = (char *) alloca (PATH_MAX);
+
+ memset (array, 0, NUM_RESPONSIBLE_FIELDS * sizeof (char *));
+- sprintf (path, "%s/gnats-adm/%s", gnats_root, RESPONSIBLE_FILE);
++ snprintf (path, PATH_MAX-1, "%s/gnats-adm/%s", gnats_root, RESPONSIBLE_FILE);
+ fp = fopen (path, "r");
+ if (fp == NULL)
+ return 0;
+@@ -358,7 +358,7 @@
+ int i, nerrs = 0;
+
+ memset (array, 0, NUM_CLASS_FIELDS * sizeof (char *));
+- sprintf (path, "%s/gnats-adm/%s", gnats_root, CLASSES);
++ snprintf (path, PATH_MAX-1, "%s/gnats-adm/%s", gnats_root, CLASSES);
+ fp = fopen (path, "r");
+
+ if (fp == NULL)
+@@ -593,7 +593,7 @@
+ int i, nerrs = 0;
+
+ memset (array, 0, NUM_STATE_FIELDS * sizeof (char *));
+- sprintf (path, "%s/gnats-adm/%s", gnats_root, STATES);
++ snprintf (path, PATH_MAX-1, "%s/gnats-adm/%s", gnats_root, STATES);
+ fp = fopen (path, "r");
+
+ if (fp == NULL)
diff -Nur databases/gnats/files/patch-gnats::gen-index.c.orig databases/gnats/files/patch-gnats::gen-index.c
--- databases/gnats/files/patch-gnats::gen-index.c.orig Thu Jan 1 01:00:00 1970
+++ databases/gnats/files/patch-gnats::gen-index.c Tue Aug 26 16:17:42 2003
@@ -0,0 +1,11 @@
+--- gnats/gen-index.c.orig Wed Sep 22 08:18:39 1999
++++ gnats/gen-index.c Sat Jun 14 13:19:58 2003
+@@ -256,7 +256,7 @@
+ Categories *c;
+
+ if (! catfile)
+- sprintf (path, "%s/gnats-adm/%s", gnats_root, CATEGORIES);
++ snprintf (path, PATH_MAX-1, "%s/gnats-adm/%s", gnats_root, CATEGORIES);
+ else
+ path = catfile;
+
diff -Nur databases/gnats/files/patch-gnats::index.c.orig databases/gnats/files/patch-gnats::index.c
--- databases/gnats/files/patch-gnats::index.c.orig Thu Jan 1 01:00:00 1970
+++ databases/gnats/files/patch-gnats::index.c Tue Aug 26 16:17:58 2003
@@ -0,0 +1,11 @@
+--- gnats/index.c.orig Thu Mar 18 08:45:38 1999
++++ gnats/index.c Sat Jun 14 13:22:21 2003
+@@ -399,7 +399,7 @@
+ if (! index_filename)
+ {
+ index_filename = (char *) xmalloc (PATH_MAX);
+- sprintf (index_filename, "%s/gnats-adm/%s", gnats_root, INDEX);
++ snprintf (index_filename, PATH_MAX-1, "%s/gnats-adm/%s", gnats_root, INDEX);
+ }
+
+ fp = fopen (index_filename, "r");
diff -Nur databases/gnats/files/patch-gnats::internal.c.orig databases/gnats/files/patch-gnats::internal.c
--- databases/gnats/files/patch-gnats::internal.c.orig Thu Jan 1 01:00:00 1970
+++ databases/gnats/files/patch-gnats::internal.c Tue Aug 26 16:18:06 2003
@@ -0,0 +1,11 @@
+--- gnats/internal.c.orig Wed Mar 3 09:18:53 1999
++++ gnats/internal.c Sat Jun 14 14:09:45 2003
+@@ -238,7 +238,7 @@
+ struct stat buf;
+ int count;
+
+- sprintf (path, "%s/gnats-adm/gnats.lock", gnats_root);
++ snprintf (path, PATH_MAX-1, "%s/gnats-adm/gnats.lock", gnats_root);
+
+ #define MAXWAIT 10
+ #define GRANULARITY 1
--- gnats-security.patch ends here ---
>Release-Note:
>Audit-Trail:
>Unformatted:
More information about the freebsd-ports-bugs
mailing list