I have made the following changes intended for :
  CE:Utils / screen

Please review and accept ASAP - BOSS has already processed this request and 
suggests ???
See the "Messages from BOSS" section below

https://build.pub.meego.com/request/show/2626

Thank You,
bossbot ([email protected])

[This message was auto-generated]

---

Request # 2626:

Messages from BOSS:
  None

State:   new          2011-10-24T14:03:51 bossbot

Reviews:
     from bossbot  :BOSS suggests accepting this review. See email for more 
details.
BOSS accepted this review because:
 Target repo CE_Utils_armv7hl found.
     accepted on No date

Changes:
  submit: home:sage:Mer:Utils / screen -> CE:Utils / screen
  Index: screen.spec
===================================================================
--- screen.spec (revision 0)
+++ screen.spec (revision 2)
@@ -0,0 +1,117 @@
+#specfile originally created for Fedora, modified for Moblin Linux
+Summary: A screen manager that supports multiple logins on one terminal
+Name: screen
+Version: 4.0.3
+Release: 12
+License: GPLv2+
+Group: Applications/System
+URL: http://www.gnu.org/software/screen
+Requires(pre): /usr/sbin/groupadd
+Requires(preun): /sbin/install-info
+Requires(post): /sbin/install-info
+BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)
+BuildRequires: ncurses-devel pam-devel libutempter-devel autoconf texinfo
+
+# The one and only true source
+Source0: 
ftp://ftp.uni-erlangen.de/pub/utilities/screen/screen-%{version}.tar.gz
+# Except for the PAM configuration, that is.
+Source1: screen.pam
+
+Patch1: screen-4.0.3-libs.patch
+# Some tweaks of the default screenrc
+Patch2: screen-4.0.2-screenrc.patch
+Patch4: screen-4.0.3-stropts.patch
+# Fixes potential buffer overflow when > 2^31 semicolons are passed.
+Patch7: screen-4.0.1-args.patch
+Patch11: screen-4.0.2-maxstr.patch
+Patch12: screen-4.0.3-ipv6.patch
+Patch13: screen-CVE-2009-1214,1215.patch
+
+%description
+The screen utility allows you to have multiple logins on just one
+terminal. Screen is useful for users who telnet into a machine or are
+connected via a dumb terminal, but want to use more than just one
+login.
+
+Install the screen package if you need a screen manager that can
+support multiple logins on one terminal.
+
+
+%prep
+%setup -q
+%patch1 -p1 -b .libs
+%patch2 -p1 -b .screenrc
+%patch4 -p1 -b .stropts
+%patch7 -p0 -b .args
+%patch11 -p1 -b .maxstr
+%patch12 -p1 -b .ipv6
+%patch13 -p1 -b .CVE-2009-1214,1215
+
+%build
+autoconf
+
+%configure \
+       --enable-pam \
+       --enable-colors256 \
+       --enable-rxvt_osc \
+       --enable-locale \
+       --enable-telnet \
+       --with-pty-mode=0620 \
+       --with-pty-group=$(getent group tty | cut -d : -f 3) \
+       --with-sys-screenrc="%{_sysconfdir}/screenrc" \
+       --with-socket-dir="%{_localstatedir}/run/screen"
+
+# We would like to have braille support.
+sed -i -e 's/.*#.*undef.*HAVE_BRAILLE.*/#define HAVE_BRAILLE 1/;' config.h
+
+sed -i -e 's/\(\/usr\)\?\/local\/etc/\/etc/g;' doc/screen.{1,texinfo}
+rm doc/screen.info*
+
+make %{?_smp_mflags}
+
+%install
+rm -rf $RPM_BUILD_ROOT
+
+make install DESTDIR=$RPM_BUILD_ROOT
+mv -f $RPM_BUILD_ROOT%{_bindir}/screen{-%{version},}
+
+mkdir -p $RPM_BUILD_ROOT%{_sysconfdir}
+install -m 0644 etc/etcscreenrc $RPM_BUILD_ROOT%{_sysconfdir}/screenrc
+cat etc/screenrc >> $RPM_BUILD_ROOT%{_sysconfdir}/screenrc
+
+# Better not forget to copy the pam file around
+mkdir -p $RPM_BUILD_ROOT%{_sysconfdir}/pam.d
+install -p -m 0644 %{SOURCE1} $RPM_BUILD_ROOT%{_sysconfdir}/pam.d/screen
+
+# Create the socket dir
+mkdir -p $RPM_BUILD_ROOT%{_localstatedir}/run/screen
+
+# Remove files from the buildroot which we don't want packaged
+rm -f $RPM_BUILD_ROOT%{_infodir}/dir
+
+%clean
+rm -rf $RPM_BUILD_ROOT
+
+%pre
+/usr/sbin/groupadd -g 84 -r -f screen
+:
+
+%post
+/sbin/install-info %{_infodir}/screen.info.gz %{_infodir}/dir --entry="* 
screen: (screen).                             Terminal multiplexer." ||:
+
+%preun
+if [ $1 = 0 ]; then
+       /sbin/install-info --delete %{_infodir}/screen.info.gz %{_infodir}/dir 
--entry="* screen: (screen).                             Terminal multiplexer." 
||:
+fi
+
+%files
+%defattr(-,root,root,-)
+%doc NEWS README doc/FAQ doc/README.DOTSCREEN COPYING
+%attr(2755,root,screen) %{_bindir}/screen
+%doc %{_mandir}/man1/screen.*
+%doc %{_infodir}/screen.info*
+%{_datadir}/screen
+%attr(775,root,screen) %{_localstatedir}/run/screen
+%config(noreplace) %{_sysconfdir}/screenrc
+%config(noreplace) %{_sysconfdir}/pam.d/screen
+
Index: screen.pam
===================================================================
--- screen.pam (revision 0)
+++ screen.pam (revision 2)
@@ -0,0 +1,2 @@
+#%PAM-1.0
+auth   include         system-auth
Index: screen-4.0.2-maxstr.patch
===================================================================
--- screen-4.0.2-maxstr.patch (revision 0)
+++ screen-4.0.2-maxstr.patch (revision 2)
@@ -0,0 +1,11 @@
+--- screen-4.0.2/screen.h.maxstr       2006-07-10 13:37:11.000000000 +0200
++++ screen-4.0.2/screen.h      2006-07-10 13:36:36.000000000 +0200
+@@ -86,7 +86,7 @@
+ 
+ #define Ctrl(c) ((c)&037)
+ 
+-#define MAXSTR                256
++#define MAXSTR                4096
+ #define MAXARGS       64
+ #define MSGWAIT       5
+ #define MSGMINWAIT    1
Index: screen-4.0.3-stropts.patch
===================================================================
--- screen-4.0.3-stropts.patch (revision 0)
+++ screen-4.0.3-stropts.patch (revision 2)
@@ -0,0 +1,48 @@
+diff -up screen-4.0.3/tty.sh.stropts screen-4.0.3/tty.sh
+--- screen-4.0.3/tty.sh.stropts        2003-09-08 16:24:25.000000000 +0200
++++ screen-4.0.3/tty.sh        2008-04-07 11:28:34.000000000 +0200
+@@ -76,7 +76,7 @@ exit 0
+ #endif
+ 
+ #include "config.h"
+-#ifdef SVR4
++#if 0
+ #include <sys/stropts.h>      /* for I_POP */
+ #endif
+ 
+diff -up screen-4.0.3/screen.c.stropts screen-4.0.3/screen.c
+--- screen-4.0.3/screen.c.stropts      2008-04-07 11:25:21.000000000 +0200
++++ screen-4.0.3/screen.c      2008-04-07 11:29:14.000000000 +0200
+@@ -50,7 +50,7 @@
+ 
+ #include "config.h"
+ 
+-#ifdef SVR4
++#if 0
+ # include <sys/stropts.h>
+ #endif
+ 
+diff -up screen-4.0.3/process.c.stropts screen-4.0.3/process.c
+--- screen-4.0.3/process.c.stropts     2003-09-18 14:53:54.000000000 +0200
++++ screen-4.0.3/process.c     2008-04-07 11:29:47.000000000 +0200
+@@ -37,7 +37,7 @@
+ #include "config.h"
+ 
+ /* for solaris 2.1, Unixware (SVR4.2) and possibly others: */
+-#ifdef SVR4
++#if 0 
+ # include <sys/stropts.h>
+ #endif
+ 
+diff -up screen-4.0.3/pty.c.stropts screen-4.0.3/pty.c
+--- screen-4.0.3/pty.c.stropts 2003-09-08 16:26:18.000000000 +0200
++++ screen-4.0.3/pty.c 2008-04-07 11:30:07.000000000 +0200
+@@ -34,7 +34,7 @@
+ #endif
+ 
+ /* for solaris 2.1, Unixware (SVR4.2) and possibly others */
+-#ifdef HAVE_SVR4_PTYS
++#if 0 
+ # include <sys/stropts.h>
+ #endif
+ 
Index: screen-4.0.3-ipv6.patch
===================================================================
--- screen-4.0.3-ipv6.patch (revision 0)
+++ screen-4.0.3-ipv6.patch (revision 2)
@@ -0,0 +1,323 @@
+--- screen-4.0.3/window.h.ipv6 2003-08-21 16:57:30.000000000 +0200
++++ screen-4.0.3/window.h      2006-11-15 13:36:57.000000000 +0100
+@@ -254,7 +254,7 @@
+   struct display *w_zdisplay;
+ #endif
+ #ifdef BUILTIN_TELNET
+-  struct sockaddr_in w_telsa;
++  struct sockaddr_storage w_telsa;
+   char   w_telbuf[IOSIZE];
+   int    w_telbufl;
+   char   w_telmopts[256];
+--- screen-4.0.3/window.c.ipv6 2003-12-05 14:45:41.000000000 +0100
++++ screen-4.0.3/window.c      2006-11-15 13:39:27.000000000 +0100
+@@ -582,6 +582,13 @@
+   n = pp - wtab;
+   debug1("Makewin creating %d\n", n);
+ 
++#ifdef BUILTIN_TELNET                                                         
                                               
++  if(!strcmp(nwin.args[0], "//telnet")) {                                     
                                               
++         type = W_TYPE_TELNET;                                                
                                               
++         TtyName = "telnet";                                                  
                                               
++  }                                                                           
                                               
++  else                                                                        
                                               
++#endif 
+   if ((f = OpenDevice(nwin.args, nwin.lflag, &type, &TtyName)) < 0)
+     return -1;
+ 
+@@ -736,7 +743,7 @@
+ #ifdef BUILTIN_TELNET
+   if (type == W_TYPE_TELNET)
+     {
+-      if (TelConnect(p))
++      if (TelOpenAndConnect(p))
+       {
+         FreeWindow(p);
+         return -1;
+@@ -834,6 +841,13 @@
+   int lflag, f;
+ 
+   lflag = nwin_default.lflag;
++#ifdef BUILTIN_TELNET                                                         
                                               
++  if(!strcmp(p->w_cmdargs[0], "//telnet")) {                                  
                                               
++         p->w_type = W_TYPE_TELNET;                                           
                                               
++         TtyName = "telnet";                                                  
                                               
++  }                                                                           
                                               
++  else                                                                        
                                               
++#endif   
+   if ((f = OpenDevice(p->w_cmdargs, lflag, &p->w_type, &TtyName)) < 0)
+     return -1;
+ 
+@@ -864,7 +878,7 @@
+ #ifdef BUILTIN_TELNET
+   if (p->w_type == W_TYPE_TELNET)
+     {
+-      if (TelConnect(p))
++      if (TelOpenAndConnect(p))
+         return -1;
+     }
+   else
+@@ -1007,16 +1021,6 @@
+ 
+   if (!arg)
+     return -1;
+-#ifdef BUILTIN_TELNET
+-  if (strcmp(arg, "//telnet") == 0)
+-    {
+-      f = TelOpen(args + 1);
+-      lflag = 0;
+-      *typep = W_TYPE_TELNET;
+-      *namep = "telnet";
+-    }
+-  else
+-#endif
+   if ((stat(arg, &st)) == 0 && S_ISCHR(st.st_mode))
+     {
+       if (access(arg, R_OK | W_OK) == -1)
+--- screen-4.0.3/teln.c.ipv6   2003-09-08 16:26:56.000000000 +0200
++++ screen-4.0.3/teln.c        2006-11-15 13:36:57.000000000 +0100
+@@ -25,6 +25,7 @@
+ #include <sys/socket.h>
+ #include <fcntl.h>
+ #include <netdb.h>
++#include <stdio.h>
+ 
+ #include "config.h"
+ 
+@@ -37,12 +38,13 @@
+ extern struct layer *flayer;
+ extern int visual_bell;
+ extern char screenterm[];
++extern int af;
+ 
+ static void TelReply __P((struct win *, char *, int));
+ static void TelDocmd __P((struct win *, int, int));
+ static void TelDosub __P((struct win *));
+-
+-#define TEL_DEFPORT   23
++// why TEL_DEFPORT has "
++#define TEL_DEFPORT   "23"
+ #define TEL_CONNECTING        (-2)
+ 
+ #define TC_IAC          255
+@@ -99,86 +101,78 @@
+ }
+ 
+ int
+-TelOpen(args)
+-char **args;
+-{
+-  int fd;
+-  int on = 1;
+-
+-  if ((fd = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP)) == -1)
+-    {
+-      Msg(errno, "TelOpen: socket");
+-      return -1;
+-    }
+-  if (setsockopt(fd, SOL_SOCKET, SO_OOBINLINE, (char *)&on, sizeof(on)))
+-    Msg(errno, "TelOpen: setsockopt SO_OOBINLINE");
+-  return fd;
+-}
+-
+-int
+-TelConnect(p)
+-struct win *p;
+-{
+-  int port = TEL_DEFPORT;
+-  struct hostent *hp;
+-  char **args;
++TelOpenAndConnect(struct win *p) {                                            
                                               
++  int fd, on = 1;
+   char buf[256];
+ 
+-  args = p->w_cmdargs + 1;
+-
+-  if (!*args)
+-    {
+-      Msg(0, "Usage: screen //telnet host [port]");
+-      return -1;
+-    }
+-  if (args[1])
+-    port = atoi(args[1]);
+-  p->w_telsa.sin_family = AF_INET;
+-  if((p->w_telsa.sin_addr.s_addr = inet_addr(*args)) == -1)
+-    {
+-      if ((hp = gethostbyname(*args)) == NULL)
+-        {
+-        Msg(0, "unknown host: %s", *args);
+-        return -1;
+-        }
+-      if (hp->h_length != sizeof(p->w_telsa.sin_addr.s_addr) || 
hp->h_addrtype != AF_INET)
+-      {
+-        Msg(0, "Bad address type for %s", hp->h_name);
+-        return -1;
+-      }
+-      bcopy((char *)hp->h_addr,(char *)&p->w_telsa.sin_addr.s_addr, 
hp->h_length);
+-      p->w_telsa.sin_family = hp->h_addrtype;
+-    }
+-  p->w_telsa.sin_port = htons(port);
+-  if (port != TEL_DEFPORT)
+-    sprintf(buf, "Trying %s %d...", inet_ntoa(p->w_telsa.sin_addr), port);
+-  else
+-    sprintf(buf, "Trying %s...", inet_ntoa(p->w_telsa.sin_addr));
+-  WriteString(p, buf, strlen(buf));
+-  if (connect(p->w_ptyfd, (struct sockaddr *)&p->w_telsa, sizeof(p->w_telsa)))
+-    {
+-      if (errno == EINPROGRESS)
+-        {
+-        p->w_telstate = TEL_CONNECTING;
+-        p->w_telconnev.fd = p->w_ptyfd;
+-        p->w_telconnev.handler = tel_connev_fn;
+-        p->w_telconnev.data = (char *)p;
+-        p->w_telconnev.type = EV_WRITE;
+-        p->w_telconnev.pri = 1;
+-        debug("telnet connect in progress...\n");
+-        evenq(&p->w_telconnev);
+-      }
+-      else
+-        {
+-        Msg(errno, "TelOpen: connect");
+-        return -1;
+-      }
+-    }
+-  else
+-    WriteString(p, "connected.\r\n", 12);
+-  if (port == TEL_DEFPORT)
+-    TelReply(p, (char *)tn_init, sizeof(tn_init));
+-  return 0;
++  struct addrinfo hints, *res0, *res;                                         
                                               
++                                                                              
                                               
++  if (!(p->w_cmdargs[1])) {                                                   
                                               
++    Msg(0, "Usage: screen //telnet host [port]");                             
                                               
++    return -1;                                                                
                                               
++  }                                                                           
                                               
++                                                                              
                                               
++  memset(&hints, 0, sizeof(hints));                                           
                                               
++  hints.ai_family = af;                                                       
                                               
++  hints.ai_socktype = SOCK_STREAM;                                            
                                               
++  hints.ai_protocol = IPPROTO_TCP;                                            
                                               
++  if(getaddrinfo(p->w_cmdargs[1], p->w_cmdargs[2] ? p->w_cmdargs[2] : 
TEL_DEFPORT,                                           
(123 more lines skipped)
Index: screen-4.0.1-args.patch
===================================================================
--- screen-4.0.1-args.patch (revision 0)
+++ screen-4.0.1-args.patch (revision 2)
@@ -0,0 +1,31 @@
+--- ansi.c.orig        2003-12-04 10:59:05.000000000 -0500
++++ ansi.c     2003-12-04 10:59:20.000000000 -0500
+@@ -559,7 +559,7 @@
+           {
+           case '0': case '1': case '2': case '3': case '4':
+           case '5': case '6': case '7': case '8': case '9':
+-            if (curr->w_NumArgs < MAXARGS)
++            if (curr->w_NumArgs >= 0 && curr->w_NumArgs < MAXARGS)
+               {
+                 if (curr->w_args[curr->w_NumArgs] < 100000000)
+                   curr->w_args[curr->w_NumArgs] =
+--- resize.c.old        2003-11-27 02:55:07.000000000 +0200
++++ resize.c    2003-11-27 02:58:33.000000000 +0200
+@@ -682,6 +682,17 @@
+   if (wi == 0)
+     he = hi = 0;
+ 
++  if (wi > 1000)
++    {
++      Msg(0, "Window width too large, truncated");
++      wi = 1000;
++    }
++  if (he > 1000)
++    {
++      Msg(0, "Window height too large, truncated");
++      he = 1000;
++    }
++
+   if (p->w_width == wi && p->w_height == he && p->w_histheight == hi)
+     {
+       debug("ChangeWindowSize: No change.\n");
Index: screen-4.0.3.tar.gz
===================================================================
Binary file screen-4.0.3.tar.gz added
Index: screen-4.0.3-libs.patch
===================================================================
--- screen-4.0.3-libs.patch (revision 0)
+++ screen-4.0.3-libs.patch (revision 2)
@@ -0,0 +1,50 @@
+diff -up screen-4.0.3/configure.in.libs screen-4.0.3/configure.in
+--- screen-4.0.3/configure.in.libs     2003-06-03 13:58:24.000000000 +0200
++++ screen-4.0.3/configure.in  2008-02-26 13:58:29.000000000 +0100
+@@ -196,7 +196,9 @@ AC_EGREP_CPP(yes,
+ ], LIBS="$LIBS -lsocket -linet";seqptx=1)
+ 
+ oldlibs="$LIBS"
+-LIBS="$LIBS -lelf"
++# Humm we don't actually need to link against libelf for linux
++#LIBS="$LIBS -lelf"
++LIBS="$LIBS"
+ AC_CHECKING(SVR4)
+ AC_TRY_LINK([#include <utmpx.h>
+ ],,
+@@ -643,14 +645,10 @@ dnl
+ AC_CHECKING(for tgetent)
+ AC_TRY_LINK(,tgetent((char *)0, (char *)0);,,
+ olibs="$LIBS"
+-LIBS="-lcurses $olibs"
+-AC_CHECKING(libcurses)
++LIBS="-ltinfo $olibs"
++AC_CHECKING(libtinfo)
+ AC_TRY_LINK(,[
+-#ifdef __hpux
+-__sorry_hpux_libcurses_is_totally_broken_in_10_10();
+-#else
+ tgetent((char *)0, (char *)0);
+-#endif
+ ],,
+ LIBS="-ltermcap $olibs"
+ AC_CHECKING(libtermcap)
+@@ -666,7 +664,7 @@ AC_MSG_ERROR(!!! no tgetent - no screen)
+ AC_TRY_RUN([
+ main()
+ {
+- exit(strcmp(tgoto("%p1%d", 0, 1), "1") ? 0 : 1);
++      return 1;
+ }], AC_NOTE(- you use the termcap database),
+ AC_NOTE(- you use the terminfo database) AC_DEFINE(TERMINFO))
+ AC_CHECKING(ospeed)
+@@ -864,9 +862,6 @@ fi
+ dnl
+ dnl    ****  loadav  ****
+ dnl
+-AC_CHECKING(for libutil(s))
+-test -f /usr/lib/libutils.a && LIBS="$LIBS -lutils"
+-test -f /usr/lib/libutil.a && LIBS="$LIBS -lutil"
+ 
+ AC_CHECKING(getloadavg)
+ AC_TRY_LINK(,[getloadavg((double *)0, 0);],
Index: screen-CVE-2009-1214,1215.patch
===================================================================
--- screen-CVE-2009-1214,1215.patch (revision 0)
+++ screen-CVE-2009-1214,1215.patch (revision 2)
@@ -0,0 +1,101 @@
+diff -uNr screen-4.0.3/fileio.c screen-4.0.3-fixed/fileio.c
+--- screen-4.0.3/fileio.c      2003-09-08 22:25:28.000000000 +0800
++++ screen-4.0.3-fixed/fileio.c        2009-04-25 00:42:53.000000000 +0800
+@@ -365,11 +365,13 @@
+   char *mode = "w";
+ #ifdef COPY_PASTE
+   int public = 0;
++/*
+ # ifdef _MODE_T
+   mode_t old_umask;
+ # else
+   int old_umask;
+ # endif
++*/
+ # ifdef HAVE_LSTAT
+   struct stat stb, stb2;
+   int fd, exists = 0;
+@@ -412,8 +414,30 @@
+         fnbuf[sizeof(fnbuf) - 1] = 0;
+         fn = fnbuf;
+       }
++/**
++ * I consider this 'public exchange file' feature a bad idea, at least
++ * if this is the default case. I really don't like the idea of an admin
++ * copying configuration file snippets around that might get changed
++ * in that buffer file.
++ * Drop the notion of a 'public' exchange file. If someone explictly wants
++ * to share his copy buffer contents, he is free to chmod it after its
++ * creation.
++ * Jan Nordholz <[email protected]>, 2007/08/07
++ *
++ * Race condition fix.  It may be necessary to adjust the modifications for
++ * systems that do not satisfy the HAVE_LSTAT condition.
++ * Jan Minar <[email protected]> 2009-01-11
++ */
+       public = !strcmp(fn, DEFAULT_BUFFERFILE);
+ # ifdef HAVE_LSTAT
++      /*
++       * Note: In the time between lstat() and open()/remove() below are
++       * called, the file can be created/removed/modified.  Therefore the
++       * information lstat() returns is taken into consideration, but not
++       * relied upon.  In particular, the open()/remove() calls can fail, and
++       * the code must account for that.  Symlink attack could be mounted if
++       * the code is changed carelessly.  --rdancer 2009-01-11
++       */
+       exists = !lstat(fn, &stb);
+       if (public && exists && (S_ISLNK(stb.st_mode) || stb.st_nlink > 1))
+       {
+@@ -432,28 +456,36 @@
+ #ifdef COPY_PASTE
+       if (dump == DUMP_EXCHANGE && public)
+       {
++        /*
++         * Setting umask to zero is a bad idea -- the user surely doesn't
++         * expect a publicly readable file in a publicly readable directory 
++         * --rdancer 2009-01-11
++         */
++        /*
+           old_umask = umask(0);
++         */
+ # ifdef HAVE_LSTAT
+         if (exists)
+-          {
+-            if ((fd = open(fn, O_WRONLY, 0666)) >= 0)
+-              {
+-                if (fstat(fd, &stb2) == 0 && stb.st_dev == stb2.st_dev && 
stb.st_ino == stb2.st_ino)
+-                  ftruncate(fd, 0);
+-                else
+-                  {
+-                    close(fd);
+-                    fd = -1;
+-                  }
+-              }
+-          }
+-        else
+-          fd = open(fn, O_WRONLY|O_CREAT|O_EXCL, 0666);
+-        f = fd >= 0 ? fdopen(fd, mode) : 0;
++            if (remove(fn) == -1)
++              {
++                /* Error */
++                debug2("WriteFile: File exists and remove(%s) failed: %s\n",
++                        fn, strerror(errno));
++                UserReturn(0);
++              }
+ # else
+-          f = fopen(fn, mode);
++        (void) remove(fn);
+ # endif
++        /*
++         * No r/w permissions for anybody but the user, as the file may be in
++         * a public directory -- if the user chooses, they can chmod the file
++         * afterwards. --rdancer 2008-01-11
++         */
++        fd = open(fn, O_WRONLY|O_CREAT|O_EXCL, 0600);
++        f = fd >= 0 ? fdopen(fd, mode) : 0;
++        /*
+           umask(old_umask);
++         */
+       }
+       else
+ #endif /* COPY_PASTE */
Index: screen-4.0.2-screenrc.patch
===================================================================
--- screen-4.0.2-screenrc.patch (revision 0)
+++ screen-4.0.2-screenrc.patch (revision 2)
@@ -0,0 +1,48 @@
+--- screen-4.0.2/etc/screenrc.screenrc 2003-12-05 13:59:39.000000000 +0000
++++ screen-4.0.2/etc/screenrc  2005-02-15 10:22:19.935843952 +0000
+@@ -15,7 +15,7 @@
+ startup_message off
+ 
+ # emulate .logout message
+-pow_detach_msg "Screen session of \$LOGNAME \$:cr:\$:nl:ended."
++pow_detach_msg "Screen session of $LOGNAME $:cr:$:nl:ended."
+ 
+ # advertise hardstatus support to $TERMCAP
+ # termcapinfo  * '' 'hs:ts=\E_:fs=\E\\:ds=\E_\E\\'
+@@ -60,7 +60,7 @@
+ # tell screen that xterm can switch to dark background and has function
+ # keys.
+ termcapinfo xterm 'VR=\E[?5h:VN=\E[?5l'
+-termcapinfo xterm 'k1=\E[11~:k2=\E[12~:k3=\E[13~:k4=\E[14~'
++#termcapinfo xterm 'k1=\E[11~:k2=\E[12~:k3=\E[13~:k4=\E[14~'
+ termcapinfo xterm 'kh=\EOH:kI=\E[2~:kD=\E[3~:kH=\EOF:kP=\E[5~:kN=\E[6~'
+ 
+ # special xterm hardstatus: use the window title.
+@@ -126,9 +126,9 @@
+ # Yet another hack:
+ # Prepend/append register [/] to the paste if ^a^] is pressed.
+ # This lets me have autoindent mode in vi.
+-register [ "\033:se noai\015a"
+-register ] "\033:se ai\015a"
+-bind ^] paste [.]
++#register [ "\033:se noai\015a"
++#register ] "\033:se ai\015a"
++#bind ^] paste [.]
+ 
+ ################
+ #
+@@ -140,9 +140,14 @@
+ # screen -t 40 2 rlogin server
+ 
+ # caption always "%3n %t%? @%u%?%? [%h]%?%=%c"
++## alternative caption, gives window list, LOGNAME and current date:
++# caption always "%{wk}%?%-Lw%?%{bw}%n*%f %t%?(%u)%?%{wk}%?%+Lw %=%{mk}@%H 
%{yk}%D %{ck}%M%{wk} %{ck}%d %{gk}%c"
+ # hardstatus alwaysignore
+ # hardstatus alwayslastline "%Lw"
+ 
++# Red Hat's normal status line
++hardstatus string "[screen %n%?: %t%?] %h"
++
+ # bind = resize =
+ # bind + resize +1
+ # bind - resize -1
Index: screen.changes
===================================================================
--- screen.changes (revision 0)
+++ screen.changes (revision 2)
@@ -0,0 +1,168 @@
+* Fri Apr 24 2009 Passion Zhao <[email protected]> - 4.0.3
+- Add screen-CVE-2009-1214,1215.patch
+
+* Fri May 16 2008 Miroslav Lichvar <[email protected]> - 4.0.3-12
+- fix multiuser support (#446049)
+
+* Mon Apr 07 2008 Miroslav Lichvar <[email protected]> - 4.0.3-11
+- don't include stropts.h (#440803)
+- fix compiler warnings in ipv6 patch
+
+* Tue Feb 26 2008 Miroslav Lichvar <[email protected]> - 4.0.3-10
+- don't set xterm function keys in default config (#151556)
+- always return 0 in scriptlet (#433882)
+- fix pty permissions
+- enable utempter support
+- link with libtinfo, don't link with libutil
+- spec cleanup
+
+* Tue Feb 19 2008 Fedora Release Engineering <[email protected]> - 
4.0.3-9
+- Autorebuild for GCC 4.3
+
+* Fri Aug 24 2007 Marcela Maslanova <[email protected]> - 4.0.3-8
+- check licence & rebuilt for mass rebuild
+- add gawk to requires
+
+* Tue May 22 2007 Marcela Maslanova <[email protected]> - 4.0.3-7
+- revert binding (patch9)
+- Resolves: rhbz#238122
+
+* Mon Mar 26 2007 Marcela Maslanova <[email protected]> - 4.0.3-5
+- rebuilt (change in spec file)
+
+* Mon Mar 19 2007 Marcela Maslanova <[email protected]> - 4.0.3-4
+- rebuilt (change in spec file)
+
+* Tue Feb 6 2007 Marcela Maslanova <[email protected]> - 4.0.3-3
+- rebuilt (change in spec file)
+
+* Fri Jan 5 2007 Marcela Maslanova <[email protected]> - 4.0.3-2
+- rebuilt (change in spec file)
+
+* Wed Oct 15 2006 Marcela Maslanova <[email protected]> - 4.0.3-1
+- new version from upstream
+- ipv6 patch #198410
+
+* Wed Aug 16 2006 Jesse Keating <[email protected]> - 4.0.2-16
+- Don't use %%makeinstall, instead make install.
+- Change DDESTDIR to DESTDIR to do the right thing.
+- Comment out utf patch as it is no longer necessary.
+- Add dist tag
+- Change PreReq to correct Requires(pre), Requires(post), Requires(preun) 
+- Don't use RPM_SOURCE_DIR, reference the source file directly
+- Do the compiling (make) in %%build, not %%install
+- Don't replace /etc/screenrc if the user has modified it
+- Ditto /etc/pam.d/screen
+- Change the buildroot to follow guidelines
+
+* Wed Jul 12 2006 Jesse Keating <[email protected]> - 4.0.2-15.1
+- rebuild
+
+* Mon Jul 10 2006 Petr Rockai <[email protected]> - 4.0.2-15
+- bump MAXSTR (string buffer size) to 4k (from 256 bytes), fixes
+  status line issues with window list in status line and too many
+  windows (and possibly other issues with long strings)
+
+* Tue May 30 2006 Petr Rockai <[email protected]> - 4.0.2-14
+- put /usr/share/screen into the package (so the package owns the
+  directory as well, not only the files below); fixes BR 192852
+
+* Fri Feb 24 2006 Petr Rockai <[email protected]> - 4.0.2-12
+- detect libutil(s).a even if it is only present in lib64 (#182407)
+
+* Fri Feb 10 2006 Jesse Keating <[email protected]> - 4.0.2-11.2
+- bump again for double-long bug on ppc(64)
+
+* Tue Feb 07 2006 Jesse Keating <[email protected]> - 4.0.2-11.1
+- rebuilt for new gcc4.1 snapshot and glibc changes
+
+* Tue Jan 17 2006 Petr Rockai <[email protected]> - 4.0.2-11
+- change the default lockscreen shortcut to ^aX to make
+  it harder to hit by accident, as per BR 157821
+
+* Fri Dec 09 2005 Jesse Keating <[email protected]> - 4.0.2-10
+- rebuilt
+
+* Mon Oct 10 2005 Tomas Mraz <[email protected]> - 4.0.2-10
+- use include instead of pam_stack in pam config
+
+* Fri May 27 2005 Bill Nottingham <[email protected]> - 4.0.2-9
+- don't use utmp group for socket dir; use a dedicated screen gid
+
+* Tue Mar 29 2005 Petr Rockai <[email protected]> - 4.0.2-8
+- fix BR 150392 by implementing the setgid/utmp scheme for socket directory
+
+* Wed Mar 02 2005 Petr Rockai <[email protected]> - 4.0.2-7
+- rebuild
+
+* Tue Feb 15 2005 Petr Rockai <[email protected]> - 4.0.2-6
+- fix BR 136234 by carrying out the suggested change in /etc/screenrc
+- drop screen-4.0.2-logname.patch (merged into screen-4.0.2-screenrc.patch)
+- grant wish 130674 by adding a (commented out) caption statement to default
+  screenrc
+
+* Fri Sep 10 2004 Warren Togami <[email protected]> - 4.0.2-5
+- #132321 and some minor spec cleanups
+
+* Fri Aug  6 2004 Daniel Reed <[email protected]> - 4.0.2-4
+- remove extra entries in "sources" file
+
+* Tue Jun 15 2004 Elliot Lee <[email protected]> - 4.0.2-3
+- rebuilt
+
+* Wed Apr 28 2004 Daniel Reed <[email protected]> - 4.0.2-2
+- Add patch -logname to correct #121875
+
+* Mon Apr 05 2004 Daniel Reed <[email protected]> - 4.0.2-1
+- Version bump (4.0.2)
+
+* Fri Feb 13 2004 Elliot Lee <[email protected]> - 4.0.1-4
+- rebuilt
+
+* Tue Jan 27 2004 Lon Hohberger <[email protected]> - 4.0.1-3
+- Rebuild
+
+* Mon Dec 08 2003 Lon Hohberger <[email protected]> - 4.0.1-2
+- Build for Fedora
+
+* Mon Dec 08 2003 Lon Hohberger <[email protected]> - 4.0.1-1
+- Import of 4.0.1 from upstream.
+- Removed screen-homedir hack introduced in 3.9.15-8.  (I
+was unable to reproduce the behavior described in #98320,
+and thus, the patch isn't necessary.)
+- Fix for buffer overflow from Timo Strainen (patch 7).
+- Fix for #111084 - we now require texinfo to build.
+- Comment out lines in screenrc causing screen to complain
+at startup.
+
+* Tue Jul 10 2003 Lon Hohberger <[email protected]> - 3.9.15-11
+- Rebuilt 
+
+* Tue Jul 10 2003 Lon Hohberger <[email protected]> - 3.9.15-10
+- Put the bindkey back in for now.
+
+* Mon Jul 01 2003 Lon Hohberger <[email protected]> - 3.9.15-9
+- Rebuilt
+
+* Mon Jul 01 2003 Lon Hohberger <[email protected]> - 3.9.15-8
+- Change screen's behavior to do the following: Attempt to use
+~/.screen as the screen directory.  Failing that (ie, on files
+systems without Unix sockets support), try using /tmp/screen-<USER>.
+This prevents a user from creating /tmp/screens (which inherits
+the sticky bit from /tmp, preventing other users from using screen),
+as well as *tries* to be more secure.
+
+* Tue Jul 01 2003 Lon Hohberger <[email protected]> - 3.9.15-7
+- Rebuilt
+
+* Tue Jul 01 2003 Lon Hohberger <[email protected]> - 3.9.15-6
+- Disable system-wide read/write dir in /tmp; use user's ~/.screen
+directory for screen sessions. (#98320)
+
+* Mon Jun 16 2003 Lon Hohberger <[email protected]> - 3.9.15-5
+- Rebuilt
+
+* Fri Jun 13 2003 Lon Hohberger <[email protected]> - 3.9.15-4
+- Removed bindkey entry; stty `tput kbs` sets this correctly for
+the screen terminal type.
+



Reply via email to