NetBSD Problem Report #46190

From mm_lists@pulsar-zone.net  Wed Mar 14 03:15:14 2012
Return-Path: <mm_lists@pulsar-zone.net>
Received: from mail.netbsd.org (mail.netbsd.org [149.20.53.66])
	by www.NetBSD.org (Postfix) with ESMTP id D583063B946
	for <gnats-bugs@gnats.NetBSD.org>; Wed, 14 Mar 2012 03:15:13 +0000 (UTC)
Message-Id: <201203140315.q2E3FIDC007088@ginseng.pulsar-zone.net>
Date: Tue, 13 Mar 2012 23:15:18 -0400
From: Matthew Mondor <mm_lists@pulsar-zone.net>
To: gnats-bugs@gnats.NetBSD.org
Subject: pkgsrc-2011Q4 - misc/rlwrap - Segfaults on amd64 - odd gdb results

>Number:         46190
>Category:       pkg
>Synopsis:       pkgsrc-2011Q4 - misc/rlwrap - Segfaults on amd64
>Confidential:   no
>Severity:       non-critical
>Priority:       medium
>Responsible:    pkg-manager
>State:          open
>Class:          sw-bug
>Submitter-Id:   net
>Arrival-Date:   Wed Mar 14 03:20:00 +0000 2012
>Last-Modified:  Sun Dec 09 23:40:04 +0000 2012
>Originator:     Matthew Mondor
>Release:        NetBSD 6.0_BETA
>Organization:
>Environment:
System: NetBSD ninja.xisop 6.0_BETA NetBSD 6.0_BETA (GENERIC_MM) #0: Tue Mar 13 20:34:43 EDT 2012 root@ninja.xisop:/usr/obj/sys/arch/amd64/compile/GENERIC_MM amd64
Architecture: x86_64
Machine: amd64
>Description:

I have a custom contacts application that was no longer launching, and
noticed that rlwrap was what was crashing.

Interestingly, if I try to debug it, I'm seeing something unexpected:

(gdb(gdb) bt
#0  0x000000000040a946 in mysavestring (string=0xfffffffff7b16800 <Address 0xfffffffff7b16800 out of bounds>) at string_utils.c:89
#1  0x0000000000408b9c in my_tgetstr (id=0x40ca2a "le") at term.c:48
#2  0x0000000000408dfd in init_terminal () at term.c:88
#3  0x00000000004048d4 in init_rlwrap () at main.c:417
#4  main (argc=<optimized out>, argv=0x7f7fffffd9e0) at main.c:117
(gdb) frame 1
#1  0x0000000000408b9c in my_tgetstr (id=0x40ca2a "le") at term.c:48
48        char *retval = stringcap ? mysavestring(stringcap) : NULL; 
(gdb) info locals
term_string_buf = 0x7f7ff7b16800 "\b"
tb = 0x7f7ff7b16802 "\261\367\177\177"
stringcap = 0xfffffffff7b16800 <Address 0xfffffffff7b16800 out of bounds>
retval = <optimized out>
__FUNCTION__ = "my_tgetstr"
(gdb) 
) bt
#0  0x000000000040a946 in mysavestring (string=0xfffffffff7b16800 <Address 0xfffffffff7b16800 out of bounds>) at string_utils.c:89
#1  0x0000000000408b9c in my_tgetstr (id=0x40ca2a "le") at term.c:48
#2  0x0000000000408dfd in init_terminal () at term.c:88
#3  0x00000000004048d4 in init_rlwrap () at main.c:417
#4  main (argc=<optimized out>, argv=0x7f7fffffd9e0) at main.c:117
(gdb) frame 1
#1  0x0000000000408b9c in my_tgetstr (id=0x40ca2a "le") at term.c:48
48        char *retval = stringcap ? mysavestring(stringcap) : NULL; 
(gdb) info locals
term_string_buf = 0x7f7ff7b16800 "\b"
tb = 0x7f7ff7b16802 "\261\367\177\177"
stringcap = 0xfffffffff7b16800 <Address 0xfffffffff7b16800 out of bounds>
retval = <optimized out>
__FUNCTION__ = "my_tgetstr"
(gdb) 

With the code being:

static char *my_tgetstr (char *id) {
  char *term_string_buf = (char *)mymalloc(2048), *tb = term_string_buf;
  char *stringcap = tgetstr(id, &tb); /*  rl_get_termcap(id) should also get string capability but doesn't. Why? */
  char *retval = stringcap ? mysavestring(stringcap) : NULL; 
  DPRINTF2(DEBUG_TERMIO, "tgetstr(\"%s\") = %s", id, (stringcap ?  mangle_string_for_debug_log(stringcap,20) : "NULL"));
  free(term_string_buf);
  return retval;
}

However, in a simple test:

#include <stdio.h>
#include <stdlib.h>
#include <termcap.h>

int     main(void);

int
main(void)
{
        char    *str = malloc(2048), *tb = str, *cap;

        str = tgetstr("le", &tb);
        (void) printf("%p\n", str);

        return 0;
}

$ ./tget
0x0


So I'm first wondering why the stringcap check succeeds if NULL is
returned.  Then, oddly enough the address of the buffer pointer is
passed to mysavestring() but with the first 32 bits set to 1:
0x7f7ff7b16800 becomes 0xfffffffff7b16800.

Could it be a toolchain bug?

Another thing which I didn't investigate is why the buffer is still set
to "\b" if tgetstr() returns NULL for "le".

>How-To-Repeat:
>Fix:

Unknown for now

>Audit-Trail:
From: Matthew Mondor <mm_lists@pulsar-zone.net>
To: gnats-bugs@NetBSD.org
Cc: 
Subject: Re: pkg/46190: pkgsrc-2011Q4 - misc/rlwrap - Segfaults on amd64 -
 odd gdb results
Date: Tue, 13 Mar 2012 23:25:18 -0400

 Obviously tget.c was buggy.  The following still yields the same
 results, though.

 #include <stdio.h>
 #include <stdlib.h>
 #include <termcap.h>

 int     main(void);

 int
 main(void)
 {
         char    str[2048], *tb = str, *cap;

         cap = tgetstr("le", &tb);
         (void) printf("cap = %p\n", cap);
         if (cap != NULL)
                 (void) printf("cap = %s\n", cap);
         (void) printf("tb = %p\n", tb);
         if (tb != NULL)
                 (void) printf("*tb = 0x%02x\n", *tb);

         return 0;
 }

 ninja$ ./tget
 cap = 0x0
 tb = 0x7f7fffffd220
 *tb = 0x05

 -- 
 Matt

From: Matthew Mondor <mm_lists@pulsar-zone.net>
To: gnats-bugs@NetBSD.org
Cc: 
Subject: Re: pkg/46190: pkgsrc-2011Q4 - misc/rlwrap - Segfaults on amd64 -
 odd gdb results
Date: Tue, 1 May 2012 04:39:13 -0400

 Someone else on IRC was having issues with BitchX on NetBSD/AMD64,
 and we both agreed it was very similar to this PR's issue.  While
 trying to come up with the smallest test case that could reproduce
 the problem, the following became obvious:

 On the amd64 ELF ABI, the C default return value (int) is 32-bit.
 Thus, calling any function working on pointers that is lacking a
 prototype can be fatal and result in corrupted pointers with the
 high 32-bit set to 0xffffffff.  I'm not sure if this could somehow
 be mitigated, but it might require breaking compatibility.

 Exemple:


 mymalloc.c:

 #include <stdlib.h>
 #include <err.h>

 void *
 my_malloc(size_t size)
 {
 	void *buf = malloc(size);

 	if (buf == NULL)
 		err(EXIT_FAILURE, "malloc(%ld)", size);

 	return buf;
 }


 main.c:

 #include <stdio.h>
 #include <stdint.h>
 #include <stdlib.h>
 #include <err.h>

 int main(void);

 int
 main(void)
 {
 	char *str = (char *)my_malloc(2048);

 	(void)printf("%c %p\n", (str ? '1' : '0'), str);

 	if (str != NULL)
 		free(str);

 	return EXIT_SUCCESS;
 }


 Compile:

 cc -Wall -c -o mymalloc.o mymalloc.c
 cc -Wall -c -o main.o main.c
 cc -Wall -o test main.o mymalloc.o

 Test:

 ninja$ ./test 
 1 0xfffffffff7701800
 [1]   Segmentation fault (core dumped) ./test


 Conclusion:

 rlwrap is probably missing some prototype(s)/headers which it should
 include, and I'll post a further followup once I can patch it to
 work on amd64.


 -- 
 Matt

From: Matthew Mondor <mm_lists@pulsar-zone.net>
To: gnats-bugs@NetBSD.org
Cc: 
Subject: Re: pkg/46190: pkgsrc-2011Q4 - misc/rlwrap - Segfaults on amd64 -
 odd gdb results
Date: Tue, 1 May 2012 07:26:50 -0400

 --MP_/Rehqxbvrph4HXLP7j30kUbv
 Content-Type: text/plain; charset=US-ASCII
 Content-Transfer-Encoding: 7bit
 Content-Disposition: inline


 These make rlwrap work for me on NetBSD/amd64.  I'm not sure that the
 patch that adds the __NetBSD__ check is optimal, but it seems that
 configure.in changes would be required to properly detect termcap
 presence otherwise...

 -- 
 Matt

 --MP_/Rehqxbvrph4HXLP7j30kUbv
 Content-Type: text/plain
 Content-Transfer-Encoding: 7bit
 Content-Disposition: attachment; filename=rlwrap-diff.txt

 Index: distinfo
 ===================================================================
 RCS file: /data/rsync/netbsd-cvs/pkgsrc/misc/rlwrap/distinfo,v
 retrieving revision 1.2
 diff -u -r1.2 distinfo
 --- distinfo	9 Jan 2008 13:40:38 -0000	1.2
 +++ distinfo	1 May 2012 11:20:17 -0000
 @@ -3,3 +3,5 @@
  SHA1 (rlwrap-0.30.tar.gz) = 26f3a6348710fee5e87f5274ddc29af8eaaf65d2
  RMD160 (rlwrap-0.30.tar.gz) = 23f19b9e98f61183fe719ee7a62db9d8ee2cf602
  Size (rlwrap-0.30.tar.gz) = 184037 bytes
 +SHA1 (patch-aa) = d4590dcb9b73b2ee778896eb8f6f36f8ef26a641
 +SHA1 (patch-ab) = 565021b2a1372c3a8ad77161c56ce94702097cb6

 --MP_/Rehqxbvrph4HXLP7j30kUbv
 Content-Type: text/plain
 Content-Transfer-Encoding: 7bit
 Content-Disposition: attachment; filename=patch-aa

 If openpty(3) is in libutil, include util.h to avoid broken code on amd64

 --- src/ptytty.c.orig	2007-09-16 06:49:21.000000000 -0400
 +++ src/ptytty.c	2012-05-01 07:15:34.000000000 -0400
 @@ -38,6 +38,9 @@
  #ifdef HAVE_FCNTL_H
  # include <fcntl.h>
  #endif
 +#ifdef HAVE_LIBUTIL
 +# include <util.h>
 +#endif
  #ifdef HAVE_SYS_IOCTL_H
  # include <sys/ioctl.h>
  #endif

 --MP_/Rehqxbvrph4HXLP7j30kUbv
 Content-Type: text/plain
 Content-Transfer-Encoding: 7bit
 Content-Disposition: attachment; filename=patch-ab

 I'm not sure this patch is optimal, configure script changes would
 be required to make it better.  If on NetBSD, include termcap.h to
 provide the required prototypes and avoid generating broken code
 on amd64.

 --- src/rlwrap.h.orig	2007-12-27 06:17:58.000000000 -0500
 +++ src/rlwrap.h	2012-05-01 07:10:39.000000000 -0400
 @@ -105,6 +105,10 @@ char *strchr(), *strrchr();
  #  include <util.h>
  #endif

 +#ifdef __NetBSD__
 +# include <termcap.h>
 +#endif
 +




 --MP_/Rehqxbvrph4HXLP7j30kUbv--

From: Matthew Mondor <mm_lists@pulsar-zone.net>
To: gnats-bugs@NetBSD.org
Cc: heinz@NetBSD.org
Subject: Re: pkg/46190: pkgsrc-2011Q4 - misc/rlwrap - Segfaults on amd64 -
 odd gdb results
Date: Wed, 2 May 2012 23:03:30 -0400

 --MP_/Ve4gyygiY.okwQxWipu+ueX
 Content-Type: text/plain; charset=US-ASCII
 Content-Transfer-Encoding: 7bit
 Content-Disposition: inline

 On Tue,  1 May 2012 11:30:10 +0000 (UTC)
 Matthew Mondor <mm_lists@pulsar-zone.net> wrote:

 >  These make rlwrap work for me on NetBSD/amd64.  I'm not sure that the
 >  patch that adds the __NetBSD__ check is optimal, but it seems that
 >  configure.in changes would be required to properly detect termcap
 >  presence otherwise...

 This is an attempt at upgrading to rlwrap-0.37 (applied against
 pkgsrc-current).  There remains one patch necessary for the
 openpty(3)-in-libutil issue, but the other such issue was already fixed
 upstream.  I also sent mail to the author for the libutil fix (patch-aa
 and patch-ab, so that hopefully rlwrap 0.38 will include these fixes).

 I'm not too sure what to do about the optional test perl filters, and
 added a patch to disable these for now...

 Thanks,
 -- 
 Matt

 --MP_/Ve4gyygiY.okwQxWipu+ueX
 Content-Type: text/plain
 Content-Transfer-Encoding: 7bit
 Content-Disposition: attachment; filename=rlwrap-037-diff

 Index: Makefile
 ===================================================================
 RCS file: /data/rsync/netbsd-cvs/pkgsrc/misc/rlwrap/Makefile,v
 retrieving revision 1.4
 diff -u -r1.4 Makefile
 --- Makefile	20 May 2009 00:58:24 -0000	1.4
 +++ Makefile	3 May 2012 02:21:20 -0000
 @@ -1,7 +1,7 @@
  # $NetBSD: Makefile,v 1.4 2009/05/20 00:58:24 wiz Exp $
  #

 -DISTNAME=	rlwrap-0.30
 +DISTNAME=	rlwrap-0.37
  PKGREVISION=	1
  CATEGORIES=	misc
  MASTER_SITES=	http://utopia.knoware.nl/~hlub/uck/rlwrap/
 Index: PLIST
 ===================================================================
 RCS file: /data/rsync/netbsd-cvs/pkgsrc/misc/rlwrap/PLIST,v
 retrieving revision 1.2
 diff -u -r1.2 PLIST
 --- PLIST	14 Jun 2009 18:07:29 -0000	1.2
 +++ PLIST	3 May 2012 02:40:13 -0000
 @@ -1,6 +1,5 @@
  @comment $NetBSD: PLIST,v 1.2 2009/06/14 18:07:29 joerg Exp $
  bin/rlwrap
  man/man1/rlwrap.1
 -share/rlwrap/coqtop
 -share/rlwrap/ftp
 -share/rlwrap/testclient
 +share/rlwrap/completions/coqtop
 +share/rlwrap/completions/testclient
 Index: distinfo
 ===================================================================
 RCS file: /data/rsync/netbsd-cvs/pkgsrc/misc/rlwrap/distinfo,v
 retrieving revision 1.2
 diff -u -r1.2 distinfo
 --- distinfo	9 Jan 2008 13:40:38 -0000	1.2
 +++ distinfo	3 May 2012 02:44:54 -0000
 @@ -1,5 +1,8 @@
  $NetBSD: distinfo,v 1.2 2008/01/09 13:40:38 heinz Exp $

 -SHA1 (rlwrap-0.30.tar.gz) = 26f3a6348710fee5e87f5274ddc29af8eaaf65d2
 -RMD160 (rlwrap-0.30.tar.gz) = 23f19b9e98f61183fe719ee7a62db9d8ee2cf602
 -Size (rlwrap-0.30.tar.gz) = 184037 bytes
 +SHA1 (rlwrap-0.37.tar.gz) = c8fc5e7798a7c618a22583c56fa38d344700cc2f
 +RMD160 (rlwrap-0.37.tar.gz) = 4e229e8fed579002605919760b313651aa427870
 +Size (rlwrap-0.37.tar.gz) = 251438 bytes
 +SHA1 (patch-aa) = d4590dcb9b73b2ee778896eb8f6f36f8ef26a641
 +SHA1 (patch-ab) = d2f512d48bd71c695e9b4f3ca2328a8cf057438b
 +SHA1 (patch-ac) = 2839d8dbd5daf2833c1817a83c13cef854c3435f

 --MP_/Ve4gyygiY.okwQxWipu+ueX
 Content-Type: text/plain
 Content-Transfer-Encoding: 7bit
 Content-Disposition: attachment; filename=patch-aa

 If openpty(3) is in libutil, include util.h to avoid broken code on amd64

 --- src/ptytty.c.orig	2007-09-16 06:49:21.000000000 -0400
 +++ src/ptytty.c	2012-05-01 07:15:34.000000000 -0400
 @@ -38,6 +38,9 @@
  #ifdef HAVE_FCNTL_H
  # include <fcntl.h>
  #endif
 +#ifdef HAVE_LIBUTIL
 +# include <util.h>
 +#endif
  #ifdef HAVE_SYS_IOCTL_H
  # include <sys/ioctl.h>
  #endif

 --MP_/Ve4gyygiY.okwQxWipu+ueX
 Content-Type: text/plain
 Content-Transfer-Encoding: 7bit
 Content-Disposition: attachment; filename=patch-ab

 Broke with -Wimplicit-function-declaration -Wimplicit -Werror

 --- src/string_utils.c.orig	2012-05-02 22:12:11.000000000 -0400
 +++ src/string_utils.c	2012-05-02 22:13:04.000000000 -0400
 @@ -617,8 +617,9 @@ colourless_strlen(const char *str, char 
    int visible = TRUE;
    int column = 0;
    int length = strlen(str);
 -  char *p, *q, *copy_without_ignore_markers;
 -  
 +  const char *p;
 +  char *q, *copy_without_ignore_markers;
 +

    assert(termwidth >= 0);
    q = copy_without_ignore_markers = mymalloc(length + 1);

 --MP_/Ve4gyygiY.okwQxWipu+ueX
 Content-Type: text/plain
 Content-Transfer-Encoding: 7bit
 Content-Disposition: attachment; filename=patch-ac

 According to README: filters are to test rlwrap, not to be practical

 --- Makefile.in.orig	2010-04-30 09:45:35.000000000 -0400
 +++ Makefile.in	2012-05-02 22:38:47.000000000 -0400
 @@ -228,17 +228,11 @@
  top_srcdir = @top_srcdir@
  EXTRA_DIST = BUGS COPYING TODO INSTALL README PLEA src/rlwrap.h src/redblack.h src/malloc_debug.h\
               src/completion.rb doc/rlwrap.man.in test/testclient test/testit\
 -             completions/testclient completions/coqtop\
 -             filters/README filters/RlwrapFilter.pm filters/RlwrapFilter.3pm filters/count_in_prompt filters/pipeto\
 -             filters/logger filters/null filters/unbackspace filters/pipeline filters/ftp_filter filters/history_format\
 -             filters/simple_macro filters/template filters/scrub_prompt filters/paint_prompt filters/censor_passwords filters/listing
 +             completions/testclient completions/coqtop

  TESTS = test/testit
 -SUBDIRS = doc src filters
 -nobase_pkgdata_DATA = completions/testclient completions/coqtop\
 -		       filters/README filters/RlwrapFilter.pm filters/RlwrapFilter.3pm filters/count_in_prompt filters/pipeto\
 -                       filters/logger filters/null filters/unbackspace filters/pipeline filters/ftp_filter filters/history_format\
 -                       filters/simple_macro filters/template filters/scrub_prompt filters/paint_prompt filters/censor_passwords filters/listing
 +SUBDIRS = doc src
 +nobase_pkgdata_DATA = completions/testclient completions/coqtop

  all: config.h
  	$(MAKE) $(AM_MAKEFLAGS) all-recursive
 @@ -851,7 +845,7 @@
  	rm -f *~ 

  install-data-hook:
 -	chmod a+x $(DESTDIR)$(pkgdatadir)/filters/* 
 +#	chmod a+x $(DESTDIR)$(pkgdatadir)/filters/* 

  # Tell versions [3.59,3.63) of GNU make to not export all variables.
  # Otherwise a system limit (for SysV at least) may be exceeded.

 --MP_/Ve4gyygiY.okwQxWipu+ueX--

From: Matthew Mondor <mm_lists@pulsar-zone.net>
To: gnats-bugs@NetBSD.org
Cc: heinz@NetBSD.org
Subject: Re: pkg/46190: pkgsrc-2011Q4 - misc/rlwrap - Segfaults on amd64 -
 odd gdb results
Date: Sat, 8 Dec 2012 04:19:46 -0500

 On Wed, 2 May 2012 23:03:30 -0400
 Matthew Mondor <mm_lists@pulsar-zone.net> wrote:

 > On Tue,  1 May 2012 11:30:10 +0000 (UTC)
 > Matthew Mondor <mm_lists@pulsar-zone.net> wrote:
 > 
 > >  These make rlwrap work for me on NetBSD/amd64.  I'm not sure that the
 > >  patch that adds the __NetBSD__ check is optimal, but it seems that
 > >  configure.in changes would be required to properly detect termcap
 > >  presence otherwise...
 > 
 > This is an attempt at upgrading to rlwrap-0.37 (applied against
 > pkgsrc-current).  There remains one patch necessary for the
 > openpty(3)-in-libutil issue, but the other such issue was already fixed
 > upstream.  I also sent mail to the author for the libutil fix (patch-aa
 > and patch-ab, so that hopefully rlwrap 0.38 will include these fixes).
 > 
 > I'm not too sure what to do about the optional test perl filters, and
 > added a patch to disable these for now...

 I see that rlwrap was recently updated to 0.37 on -current pkgsrc.
 However my suggested patches weren't added, so rlwrap still segfaults
 on amd64 because of the lacking libutil.h include.  If that fix was
 applied (patch-aa), this PR could be closed.

 Thanks,
 -- 
 Matt

From: Thomas Klausner <wiz@NetBSD.org>
To: NetBSD bugtracking <gnats-bugs@NetBSD.org>
Cc: 
Subject: Re: pkg/46190: pkgsrc-2011Q4 - misc/rlwrap - Segfaults on amd64 -
 odd gdb results
Date: Mon, 10 Dec 2012 00:35:09 +0100

 --PPYy/fEw/8QCHSq3
 Content-Type: text/plain; charset=us-ascii
 Content-Disposition: inline

 On Sat, Dec 08, 2012 at 09:20:07AM +0000, Matthew Mondor wrote:
 >  I see that rlwrap was recently updated to 0.37 on -current pkgsrc.
 >  However my suggested patches weren't added, so rlwrap still segfaults
 >  on amd64 because of the lacking libutil.h include.  If that fix was
 >  applied (patch-aa), this PR could be closed.

 I'm a bit confused by the existing checks in rlwrap.

 It checks for libutil and libutil.h. In the code, it checks for
 HAVE_LIBUTIL_H, HAVE_UTIL_H (rlwrap.c) and HAVE_LIBUTIL (ptytty.c, if
 we apply the patch you suggest). AFAICS, nothing can set HAVE_UTIL_H,
 so at least that check is just wrong.

 Can you please confirm that the attached diff fixes the problem you
 see? (it really should check for HAVE_UTIL_H, but configure doesn't
 support this currently.)

 Can you please discuss the weird HAVE_UTIL_H check with upstream?

 Thanks,
  Thomas

 --PPYy/fEw/8QCHSq3
 Content-Type: text/plain; charset=us-ascii
 Content-Disposition: attachment; filename="rlwrap.diff"

 Index: distinfo
 ===================================================================
 RCS file: /cvsroot/pkgsrc/misc/rlwrap/distinfo,v
 retrieving revision 1.3
 diff -u -r1.3 distinfo
 --- distinfo	30 Sep 2012 22:10:42 -0000	1.3
 +++ distinfo	9 Dec 2012 23:34:26 -0000
 @@ -3,3 +3,4 @@
  SHA1 (rlwrap-0.37.tar.gz) = c8fc5e7798a7c618a22583c56fa38d344700cc2f
  RMD160 (rlwrap-0.37.tar.gz) = 4e229e8fed579002605919760b313651aa427870
  Size (rlwrap-0.37.tar.gz) = 251438 bytes
 +SHA1 (patch-src_ptytty.c) = c76ceaf2add30ae56c8c190a8ffcb3cb79c7e1f0
 Index: patches/patch-src_ptytty.c
 ===================================================================
 RCS file: patches/patch-src_ptytty.c
 diff -N patches/patch-src_ptytty.c
 --- /dev/null	1 Jan 1970 00:00:00 -0000
 +++ patches/patch-src_ptytty.c	9 Dec 2012 23:34:26 -0000
 @@ -0,0 +1,17 @@
 +$NetBSD$
 +
 +If openpty(3) is in libutil, include util.h to avoid broken code
 +on amd64.
 +
 +--- src/ptytty.c.orig	2010-05-01 08:21:11.000000000 +0000
 ++++ src/ptytty.c
 +@@ -32,6 +32,9 @@
 + #ifdef HAVE_UNISTD_H
 + # include <unistd.h>
 + #endif
 ++#ifdef HAVE_LIBUTIL
 ++# include <util.h>
 ++#endif
 + #if defined(HAVE_STRING_H)
 + # include <string.h>
 + #endif

 --PPYy/fEw/8QCHSq3--

NetBSD Home
NetBSD PR Database Search

(Contact us) $NetBSD: query-full-pr,v 1.39 2013/11/01 18:47:49 spz Exp $
$NetBSD: gnats_config.sh,v 1.8 2006/05/07 09:23:38 tsutsui Exp $
Copyright © 1994-2014 The NetBSD Foundation, Inc. ALL RIGHTS RESERVED.