ports/83602: net/mpd causes segmentation fault with amd64 architecture.
Yoshisato YANAGISAWA
osho at pcc-software.org
Sun Jul 17 13:00:25 UTC 2005
>Number: 83602
>Category: ports
>Synopsis: net/mpd causes segmentation fault with amd64 architecture.
>Confidential: no
>Severity: critical
>Priority: high
>Responsible: freebsd-ports-bugs
>State: open
>Quarter:
>Keywords:
>Date-Required:
>Class: sw-bug
>Submitter-Id: current-users
>Arrival-Date: Sun Jul 17 13:00:24 GMT 2005
>Closed-Date:
>Last-Modified:
>Originator: Yoshisato YANAGISAWA
>Release: FreeBSD 6.0-BETA1 amd64
>Organization:
PCC-Software.ORG
>Environment:
System: FreeBSD ai.pcc-software.org 6.0-BETA1 FreeBSD 6.0-BETA1 #0: Sun Jul 17 13:40:08 JST 2005 osho at ai.pcc-software.org:/usr/obj/usr/src/sys/AI amd64
>Description:
Mpd, a famous program to realize kernel-level PPP(oE) connection,
stops with segmentation fault when used on an amd64 architecture
machine. This segmentation fault is caused by misuse of va_list
mechanism.
>How-To-Repeat:
Just install net/mpd-3.18 from ports collection and run it on an
amd64 architecture machine.
>Fix:
Use following patches (archived with shar).
# This is a shell archive. Save it in a file, remove anything before
# this line, and then unpack it by entering "sh file". Note, it may
# create directories; files and directories will be owned by you and
# have default permissions.
#
# This archive contains:
#
# files/patch-src::custom.c
# files/patch-src::log.c
# files/patch-src::modem.c
#
echo x - files/patch-src::custom.c
sed 's/^X//' >files/patch-src::custom.c << 'END-of-files/patch-src::custom.c'
X--- src/custom.c.orig Sun Jul 17 19:48:59 2005
X+++ src/custom.c Sun Jul 17 19:49:27 2005
X@@ -141,16 +141,19 @@
X if (!bund)
X return;
X
X- va_start(args, fmt);
X if (l == NULL) {
X for (k = 0; k < bund->n_links; k++) {
X- if (bund && bund->links[k])
X+ if (bund && bund->links[k]) {
X+ va_start(args, fmt);
X RecordLinkUpDownReason2(bund->links[k], up, key, fmt, args);
X+ va_end(args);
X+ }
X }
X } else {
X+ va_start(args, fmt);
X RecordLinkUpDownReason2(l, up, key, fmt, args);
X+ va_end(args);
X }
X- va_end(args);
X }
X
X static void
END-of-files/patch-src::custom.c
echo x - files/patch-src::log.c
sed 's/^X//' >files/patch-src::log.c << 'END-of-files/patch-src::log.c'
X--- src/log.c.orig Sun Jul 17 19:48:59 2005
X+++ src/log.c Sun Jul 17 19:49:27 2005
X@@ -265,17 +265,21 @@
X {
X va_list args;
X
X- va_start(args, fmt);
X LogTimeStamp(logprintf);
X+ va_start(args, fmt);
X vlogprintf(fmt, args);
X+ va_end(args);
X+ va_start(args, fmt);
X vlogprintf("\n", args); /* XXX args will be ignored */
X+ va_end(args);
X if (gLogOptions & LG_CONSOLE)
X {
X+ va_start(args, fmt);
X vfprintf(stdout, fmt, args);
X+ va_end(args);
X putc('\n', stdout);
X fflush(stdout);
X }
X- va_end(args);
X }
X
X /*
X@@ -315,12 +319,16 @@
X
X /* Dump it */
X
X- va_start(ap, fmt);
X- if (console)
X+ if (console) {
X+ va_start(ap, fmt);
X LogDoDumpBp(printf, vprintf, FALSE, bp, fmt, ap);
X- if (log)
X+ va_end(ap);
X+ }
X+ if (log) {
X+ va_start(ap, fmt);
X LogDoDumpBp(logprintf, vlogprintf, TRUE, bp, fmt, ap);
X- va_end(ap);
X+ va_end(ap);
X+ }
X }
X
X /*
X@@ -342,11 +350,16 @@
X
X /* Dump it */
X
X- va_start(ap, fmt);
X- if (console)
X+ if (console) {
X+ va_start(ap, fmt);
X LogDoDumpBuf(printf, vprintf, FALSE, buf, count, fmt, ap);
X- if (log)
X+ va_end(ap);
X+ }
X+ if (log) {
X+ va_start(ap, fmt);
X LogDoDumpBuf(logprintf, vlogprintf, TRUE, buf, count, fmt, ap);
X+ va_end(ap);
X+ }
X }
X
X /*
END-of-files/patch-src::log.c
echo x - files/patch-src::modem.c
sed 's/^X//' >files/patch-src::modem.c << 'END-of-files/patch-src::modem.c'
X--- src/modem.c.orig Sun Jul 17 19:48:59 2005
X+++ src/modem.c Sun Jul 17 19:49:27 2005
X@@ -610,10 +610,12 @@
X /* Concat prefix and message */
X va_start(args, fmt);
X vsnprintf(buf, sizeof(buf), fmt, args);
X+ va_end(args);
X if (*buf != ' ')
X snprintf(buf, sizeof(buf), "[%s] chat: ", lnk->name);
X else
X *buf = '\0';
X+ va_start(args, fmt);
X vsnprintf(buf + strlen(buf), sizeof(buf) - strlen(buf), fmt, args);
X va_end(args);
X
END-of-files/patch-src::modem.c
exit
Note:
Those patches are released by James R. Van Artsalen at:
http://lists.freebsd.org/pipermail/freebsd-amd64/2004-December/003094.html
However, we need the patches above until new mpd, which include them,
is released.
>Release-Note:
>Audit-Trail:
>Unformatted:
More information about the freebsd-ports-bugs
mailing list