pkgsrc-Users archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
Re: pkg/38988 (was: [PATCH] upgrade rxvt-unicode to 9.05)
Date: Tue, 19 Aug 2008 09:01:17 +0900
From: "OBATA Akio" <obache%netbsd.org@localhost>
Can you also note this patch in GNATS PR pkg/38988?
Just send to gnats-bugs%NetBSD.org@localhost with subject Re: pkg/38988.
Whoops! Sorry, I knew I must have botched something, and that was
looking in the PRs. Probably what I called patch-ac, for fixing
socket message ancillary data buffers, should be done separately.
The originator of pkg/38988 was right to omit the assignment of
CONFIGURE_ARGS from the Makefile; I agree with his assessment of all
the options there. However:
- rxvt-unicode-9.05 still uses snprintf;
- it does not use Perl if the perl option is disabled;
- <http://dist.schmorp.de/rxvt-unicode/Attic/> should remain in the
list of master sites, for when the next version of rxvt-unicode is
released upstream (my understanding is that only the most recent
release is in <http://dist.schmorp.de/rxvt-unicode/>, and that all
the others are in the Attic/ subdirectory);
- <http://software.schmorp.de/pkg/rxvt-unicode.html>, as far as I can
tell, is still the home page of urxvt, not
<http://dist.schmorp.de/rxvt-unicode/>, which is where the files are
released;
- patch-ab is still important, since rxvt-unicode has not changed
upstream to fix the issue;
- I suspect that using the print-PLIST target will strip the
${PLIST.perl} directives in the PLIST, causing the problem the
originator encountered with Perl files in the PLIST when installing
with the perl option disabled; and, indeed,
- the PLIST need only omit lib/urxvt/perl/automove-background, as I
mentioned in my original email (it was removed from, and its
functionality folded into, rxvt-unicode-9.05).
I've created a revised patch for pkgsrc, and I have also separately
attached the patch for rxvt-unicode, which I formerly called patch-ac,
to fix the use of socket message ancillary data in src/fdpass.C.
(I'll file this as a separate PR, too, if that would be better; and
I'll also send it to the upstream urxvt author when I get a chance.)
Index: Makefile
===================================================================
RCS file: /cvsroot/pkgsrc/x11/rxvt-unicode/Makefile,v
retrieving revision 1.22
diff -u -r1.22 Makefile
--- Makefile 3 Apr 2008 22:36:52 -0000 1.22
+++ Makefile 19 Aug 2008 01:22:49 -0000
@@ -1,8 +1,7 @@
# $NetBSD: Makefile,v 1.22 2008/04/03 22:36:52 tonnerre Exp $
#
-DISTNAME= rxvt-unicode-8.3
-PKGREVISION= 3
+DISTNAME= rxvt-unicode-9.05
CATEGORIES= x11
MASTER_SITES= http://dist.schmorp.de/rxvt-unicode/ \
http://dist.schmorp.de/rxvt-unicode/Attic/
@@ -17,12 +16,11 @@
USE_TOOLS+= pkg-config
USE_FEATURES+= snprintf
-CONFIGURE_ARGS+= --enable-transparency \
- --enable-menubar \
- --enable-xpm-background \
- --enable-xgetdefault \
- --enable-24bit
-CONFIGURE_ENV+= ac_cv_path_TIC=no
+# Setting this to `no' causes an error when doc/Makefile in 9.05 tries
+# to invoke it unconditionally. Setting this to `:' causes nothing to
+# happen at all, and this is simpler than patching doc/Makefile.in to
+# revert the change that was made to it.
+CONFIGURE_ENV+= ac_cv_path_TIC=:
post-install:
${INSTALL_DATA_DIR} ${PREFIX}/share/doc/rxvt-unicode
Index: PLIST
===================================================================
RCS file: /cvsroot/pkgsrc/x11/rxvt-unicode/PLIST,v
retrieving revision 1.8
diff -u -r1.8 PLIST
--- PLIST 12 Apr 2008 22:43:15 -0000 1.8
+++ PLIST 19 Aug 2008 01:22:49 -0000
@@ -2,7 +2,6 @@
bin/urxvt
bin/urxvtc
bin/urxvtd
-${PLIST.perl}lib/urxvt/perl/automove-background
${PLIST.perl}lib/urxvt/perl/block-graphics-to-ascii
${PLIST.perl}lib/urxvt/perl/digital-clock
${PLIST.perl}lib/urxvt/perl/example-refresh-hooks
Index: distinfo
===================================================================
RCS file: /cvsroot/pkgsrc/x11/rxvt-unicode/distinfo,v
retrieving revision 1.11
diff -u -r1.11 distinfo
--- distinfo 3 Apr 2008 22:36:52 -0000 1.11
+++ distinfo 19 Aug 2008 01:22:49 -0000
@@ -1,7 +1,7 @@
-$NetBSD: distinfo,v 1.11 2008/04/03 22:36:52 tonnerre Exp $
+$NetBSD$
-SHA1 (rxvt-unicode-8.3.tar.bz2) = cd335c47543ba086585a296ca0fe7445c07120dd
-RMD160 (rxvt-unicode-8.3.tar.bz2) = 000dbcb1ff297edbff0a8b21dbbba3db30854579
-Size (rxvt-unicode-8.3.tar.bz2) = 885212 bytes
-SHA1 (patch-aa) = e5760c57a6b47780ee851efe09dda5f2f02fca40
-SHA1 (patch-ab) = 2bfbffea8d63ebd65bfa9b0dc43a1901f844137e
+SHA1 (rxvt-unicode-9.05.tar.bz2) = 758d57a88c3521f780bcd21c70d3995f53a2f6e3
+RMD160 (rxvt-unicode-9.05.tar.bz2) = 0f4343a9aa0a8b26d10c6049c1afca2cc7569fc3
+Size (rxvt-unicode-9.05.tar.bz2) = 865815 bytes
+SHA1 (patch-aa) = 0b86573cb5b1ae71b4a36ffd62355329d45c98ed
+SHA1 (patch-ab) = 6a6991089f3caa20dc1725024fc72f1035bd901f
Index: patches/patch-aa
===================================================================
RCS file: /cvsroot/pkgsrc/x11/rxvt-unicode/patches/patch-aa,v
retrieving revision 1.5
diff -u -r1.5 patch-aa
--- patches/patch-aa 6 Aug 2007 10:02:27 -0000 1.5
+++ patches/patch-aa 19 Aug 2008 01:22:49 -0000
@@ -1,14 +1,15 @@
$NetBSD: patch-aa,v 1.5 2007/08/06 10:02:27 ghen Exp $
---- configure.orig 2007-08-06 10:26:41.000000000 +0200
-+++ configure 2007-08-06 10:29:20.000000000 +0200
-@@ -3877,57 +3877,6 @@
+--- configure.orig 2008-05-05 16:49:02.000000000 +0000
++++ configure 2008-08-18 18:01:09.000000000 +0000
+@@ -3851,57 +3851,6 @@
+ fi
LINKER=$LINKER
-
+-
-if test -z "$orig_CXXFLAGS"; then
- if test x$GCC = xyes && test "x$GXX" = xyes; then
-- CXXFLAGS="-g -O3 -fno-threadsafe-statics -fno-enforce-eh-specs"
+- CXXFLAGS="-g -O3 -fno-rtti -fvisibility-inlines-hidden
-fno-threadsafe-statics -fno-enforce-eh-specs"
- cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h. */
-_ACEOF
@@ -56,26 +57,6 @@
- CFLAGS="$CXXFLAGS"
-fi
-
--
- cat >>confdefs.h <<\_ACEOF
- #define _GNU_SOURCE 1
- _ACEOF
-@@ -6691,11 +6640,16 @@
- cat >>conftest.$ac_ext <<_ACEOF
- /* end confdefs.h. */
+ case $host in
+ *-*-solaris* )
-+extern "C" {
-+#include <X11/xpm.h>
-+#include <stddef.h>
-+}
-+
- int
- main ()
- {
--XpmReadFileToPixmap()
-- ;
-+ Drawable d;
-+ XpmReadFileToPixmap(NULL, d, NULL, NULL, NULL, NULL);
- return 0;
- }
- _ACEOF
Index: patches/patch-ab
===================================================================
RCS file: /cvsroot/pkgsrc/x11/rxvt-unicode/patches/patch-ab,v
retrieving revision 1.4
diff -u -r1.4 patch-ab
--- patches/patch-ab 3 Apr 2008 22:36:52 -0000 1.4
+++ patches/patch-ab 19 Aug 2008 01:22:49 -0000
@@ -2,9 +2,9 @@
Fix default display vulnerability (CVE-2008-1142).
---- src/init.C.orig 2007-08-01 19:35:02.000000000 +0200
-+++ src/init.C
-@@ -299,11 +299,13 @@ rxvt_term::init_resources (int argc, con
+--- src/init.C.orig 2008-06-15 13:50:33.000000000 +0000
++++ src/init.C 2008-08-18 17:37:41.000000000 +0000
+@@ -372,11 +372,13 @@ rxvt_term::init_resources (int argc, con
* Open display, get options/resources and create the window
*/
@@ -18,5 +18,5 @@
+ rxvt_fatal ("no display given and DISPLAY not set, aborting.\n");
+
if (!(display = displays.get (rs[Rs_display_name])))
- rxvt_fatal ("can't open display %s, aborting.\n", rs[Rs_display_name]);
-
+ {
+ free (r_argv);
--- src/fdpass.C.orig 2007-06-25 23:47:14.000000000 +0000
+++ src/fdpass.C 2008-08-09 00:41:29.000000000 +0000
@@ -26,6 +26,7 @@
#include "../config.h"
#include <cstddef> // needed by broken bsds for NULL used in sys/uio.h
+#include <cstdlib>
#include <sys/types.h>
#include <sys/uio.h>
@@ -33,7 +34,12 @@
#include "libptytty.h"
-#ifndef CMSG_LEN // CMSG_SPACE && CMSG_LEN are rfc2292 extensions to unix
+// CMSG_SPACE & CMSG_LEN are rfc2292 extensions to unix
+#ifndef CMSG_SPACE
+# define CMSG_SPACE(len) (sizeof (cmsghdr) + len)
+#endif
+
+#ifndef CMSG_LEN
# define CMSG_LEN(len) (sizeof (cmsghdr) + len)
#endif
@@ -42,9 +48,13 @@ ptytty::send_fd (int socket, int fd)
{
msghdr msg;
iovec iov;
- char buf [CMSG_LEN (sizeof (int))];
+ void *buf;
+ cmsghdr *cmsg;
char data = 0;
+ if ((buf = malloc (CMSG_SPACE (sizeof (int)))) == NULL)
+ return 0;
+
iov.iov_base = &data;
iov.iov_len = 1;
@@ -52,19 +62,19 @@ ptytty::send_fd (int socket, int fd)
msg.msg_namelen = 0;
msg.msg_iov = &iov;
msg.msg_iovlen = 1;
- msg.msg_control = (void *)buf;
- msg.msg_controllen = sizeof buf;
+ msg.msg_control = buf;
+ msg.msg_controllen = CMSG_SPACE (sizeof (int));
- cmsghdr *cmsg = CMSG_FIRSTHDR (&msg);
+ cmsg = CMSG_FIRSTHDR (&msg);
cmsg->cmsg_level = SOL_SOCKET;
cmsg->cmsg_type = SCM_RIGHTS;
cmsg->cmsg_len = CMSG_LEN (sizeof (int));
*(int *)CMSG_DATA (cmsg) = fd;
- msg.msg_controllen = cmsg->cmsg_len;
-
- return sendmsg (socket, &msg, 0) >= 0;
+ ssize_t result = sendmsg (socket, &msg, 0);
+ free (buf);
+ return result >= 0;
}
int
@@ -72,8 +82,13 @@ ptytty::recv_fd (int socket)
{
msghdr msg;
iovec iov;
- char buf [CMSG_LEN (sizeof (int))]; /* ancillary data buffer */
+ void *buf;
+ cmsghdr *cmsg;
char data = 1;
+ int fd = -1;
+
+ if ((buf = malloc (CMSG_SPACE (sizeof (int)))) == NULL)
+ return -1;
iov.iov_base = &data;
iov.iov_len = 1;
@@ -83,23 +98,23 @@ ptytty::recv_fd (int socket)
msg.msg_iov = &iov;
msg.msg_iovlen = 1;
msg.msg_control = buf;
- msg.msg_controllen = sizeof buf;
-
- cmsghdr *cmsg = CMSG_FIRSTHDR (&msg);
- cmsg->cmsg_level = SOL_SOCKET;
- cmsg->cmsg_type = SCM_RIGHTS;
- cmsg->cmsg_len = CMSG_LEN (sizeof (int));
-
- msg.msg_controllen = cmsg->cmsg_len;
+ msg.msg_controllen = CMSG_SPACE (sizeof (int));
if (recvmsg (socket, &msg, 0) <= 0
|| data != 0
- || msg.msg_controllen < CMSG_LEN (sizeof (int))
- || cmsg->cmsg_level != SOL_SOCKET
+ || msg.msg_controllen < CMSG_SPACE (sizeof (int)))
+ goto exit;
+
+ cmsg = CMSG_FIRSTHDR (&msg);
+ if (cmsg->cmsg_level != SOL_SOCKET
|| cmsg->cmsg_type != SCM_RIGHTS
|| cmsg->cmsg_len < CMSG_LEN (sizeof (int)))
- return -1;
+ goto exit;
+
+ fd = *(int *)CMSG_DATA (cmsg);
- return *(int *)CMSG_DATA (cmsg);
+ exit:
+ free (buf);
+ return fd;
}
Home |
Main Index |
Thread Index |
Old Index