<pre style='margin:0'>
Perry E. Metzger (pmetzger) pushed a commit to branch master
in repository macports-ports.

</pre>
<p><a href="https://github.com/macports/macports-ports/commit/67493f0c58e89dba76e9d1e644e79d2469ad6522">https://github.com/macports/macports-ports/commit/67493f0c58e89dba76e9d1e644e79d2469ad6522</a></p>
<pre style="white-space: pre; background: #F8F8F8">The following commit(s) were added to refs/heads/master by this push:
<span style='display:block; white-space:pre;color:#404040;'>     new 67493f0  screen: update to 4.7.0
</span>67493f0 is described below

<span style='display:block; white-space:pre;color:#808000;'>commit 67493f0c58e89dba76e9d1e644e79d2469ad6522
</span>Author: David Gilman <davidgilman1@gmail.com>
AuthorDate: Fri Oct 4 17:43:29 2019 -0400

<span style='display:block; white-space:pre;color:#404040;'>    screen: update to 4.7.0
</span>---
 sysutils/screen/Portfile                     |  17 ++-
 sysutils/screen/files/patch-blanker-fix.diff | 168 ---------------------------
 sysutils/screen/files/patch-panic-fix.diff   | 140 ----------------------
 3 files changed, 8 insertions(+), 317 deletions(-)

<span style='display:block; white-space:pre;color:#808080;'>diff --git a/sysutils/screen/Portfile b/sysutils/screen/Portfile
</span><span style='display:block; white-space:pre;color:#808080;'>index 1eb4e8a..7f3d214 100644
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>--- a/sysutils/screen/Portfile
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/sysutils/screen/Portfile
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -3,8 +3,8 @@
</span> PortSystem          1.0
 
 name                screen
<span style='display:block; white-space:pre;background:#ffe0e0;'>-version             4.6.2
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-revision            2
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+version             4.7.0
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+revision            0
</span> homepage            https://www.gnu.org/software/screen/
 description         Screen manager with VT100/ANSI terminal emulation
 long_description    \
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -29,22 +29,21 @@ master_sites        gnu:${name} \
</span> distfiles-append    18:encoding
 
 checksums           ${distname}${extract.suffix} \
<span style='display:block; white-space:pre;background:#ffe0e0;'>-                    rmd160  371828d8de1f2f8a77b6c010e12b5ea91d351dd3 \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                    sha256  1b6922520e6a0ce5e28768d620b0f640a6631397f95ccb043b70b91bb503fa3a \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                    size    845210 \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    rmd160  58c4c6f3c817cdce98776eed70d7d7503ba939b8 \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    sha256  da775328fa783bd2a787d722014dbd99c6093effc11f337827604c2efc5d20c1 \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    size    854192 \
</span>                     18 \
                     rmd160  bd143058417e1d4c040a2589fdfbf8f9203f0b4c \
                     sha256  4d4b674a61dab6bac9b4207307c5f020fa670fc3948c39e7ea93c7fb9dfb5174 \
                     size    54746 \
                     vproc_priv.h \
                     rmd160  ea1fb112d58a168c581ee58e761c26f7caed40ec \
<span style='display:block; white-space:pre;background:#ffe0e0;'>-                    sha256  dcd2786d82865fb10542c20e97d7052110f7ca9a551f2ab5628c607f20e2bb2f
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    sha256  dcd2786d82865fb10542c20e97d7052110f7ca9a551f2ab5628c607f20e2bb2f \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    size    4883
</span> 
 patchfiles          patch-apple.diff \
                     patch-config.h.in.diff \
<span style='display:block; white-space:pre;background:#ffe0e0;'>-                    patch-limit-termcap-size.diff \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                    patch-blanker-fix.diff \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                    patch-panic-fix.diff
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    patch-limit-termcap-size.diff
</span> depends_lib         port:ncurses
 
 extract.only        ${distname}${extract.suffix}
<span style='display:block; white-space:pre;color:#808080;'>diff --git a/sysutils/screen/files/patch-blanker-fix.diff b/sysutils/screen/files/patch-blanker-fix.diff
</span>deleted file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index 2e43c6c..0000000
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>--- a/sysutils/screen/files/patch-blanker-fix.diff
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -1,168 +0,0 @@
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-Fix blanker to work when screen is suid root
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-* Change RunBlanker to call OpenDevice so permissions on slave
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-  PTY are correctly set.
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-* Update handling of file descriptors after fork to be similar to
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-  ForkWindow on at pty (fixes debug and leaked descriptors)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-* DEBUG now creates screen.blanker to debug blanker fork
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-* Allow display of error message when display blocked by blanker
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-  (because message is probably from blanker failing to start)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-Fixes screen bug: https://savannah.gnu.org/bugs/?55512
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-Signed-off-by: Scott Shambarger <devel@shambarger.net>
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>---- display.c
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+++ display.c
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -3958,6 +3958,7 @@ char **cmdv;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   char *m;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   int pid;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   int slave = -1;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+  int ptype = 0;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   char termname[MAXTERMLEN + 6];
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- #ifndef TIOCSWINSZ
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   char libuf[20], cobuf[20];
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -3969,9 +3970,9 @@ char **cmdv;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   termname[sizeof(termname) - 1] = 0;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   KillBlanker();
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   D_blankerpid = -1;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--  if ((D_blankerev.fd = OpenPTY(&m)) == -1)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+  if ((D_blankerev.fd = OpenDevice(cmdv, 0, &ptype, &m)) == -1)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-     {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--      Msg(0, "OpenPty failed");
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+      Msg(0, "OpenDevice failed");
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-       return;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-     }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- #ifdef O_NOCTTY
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -3996,25 +3997,48 @@ char **cmdv;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-       return;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-     case 0:
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-       displays = 0;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--#ifdef DEBUG
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--      if (dfp && dfp != stderr)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--  {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--    fclose(dfp);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--    dfp = 0;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--  }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+#ifdef SIGPIPE
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+      signal(SIGPIPE, SIG_DFL);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- #endif
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-       if (setgid(real_gid) || setuid(real_uid))
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-         Panic(errno, "setuid/setgid");
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-       brktty(D_userfd);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-       freetty();
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+#ifdef DEBUG
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+      if (dfp && dfp != stderr)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    fclose(dfp);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+#endif
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+      if (slave != -1)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+  {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    close(0);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    dup(slave);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    close(slave);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    closeallfiles(D_blankerev.fd);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    slave = dup(0);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+  }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+      else
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+        closeallfiles(D_blankerev.fd);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+#ifdef DEBUG
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+      if (dfp)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+        {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+          char buf[256];
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    sprintf(buf, "%s/screen.blanker", DEBUGDIR);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    if ((dfp = fopen(buf, "a")) == 0)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+      dfp = stderr;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    else
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+      (void) chmod(buf, 0666);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+  }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+      debug1("=== RunBlanker: pid %d\n", (int)getpid());
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+#endif
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-       close(0);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-       close(1);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-       close(2);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--      closeallfiles(slave);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-       if (open(m, O_RDWR))
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   Panic(errno, "Cannot open %s", m);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-       dup(0);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-       dup(0);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+      close(D_blankerev.fd);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-       if (slave != -1)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   close(slave);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-       InitPTY(0);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -4028,17 +4052,17 @@ char **cmdv;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-       glwz.ws_row = D_height;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-       (void)ioctl(0, TIOCSWINSZ, (char *)&glwz);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- #else
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+      /* Always turn off nonblocking mode */
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+      (void)fcntl(0, F_SETFL, 0);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-       sprintf(libuf, "LINES=%d", D_height);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-       sprintf(cobuf, "COLUMNS=%d", D_width);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-       *np++ = libuf;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-       *np++ = cobuf;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- #endif
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--#ifdef SIGPIPE
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--      signal(SIGPIPE, SIG_DFL);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--#endif
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--      display = 0;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+      debug1("calling execvpe %s\n", *cmdv);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-       execvpe(*cmdv, cmdv, NewEnv + 3);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--      Panic(errno, "%s", *cmdv);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+      debug1("exec error: %d\n", errno);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+      Panic(errno, "Cannot exec '%s'", *cmdv);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-     default:
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-       break;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-     }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>---- socket.c
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+++ socket.c
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -742,6 +742,7 @@ char *tty, *buf;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   struct msg m;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   bool is_socket;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+  debug2("SendErrorMsg: %s %s\n", tty, buf);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   strncpy(m.m.message, buf, sizeof(m.m.message) - 1);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   m.m.message[sizeof(m.m.message) - 1] = 0;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   is_socket = IsSocket(SockPath);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -1237,7 +1238,13 @@ ReceiveMsg()
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-           FinishAttach(&m);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-         break;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-       case MSG_ERROR:
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+      {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+        int blocked=D_blocked;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+        if(D_blocked == 4) /* allow error messages while in blanker mode */
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+          D_blocked=0; /* likely they're from failed blanker */
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-         Msg(0, "%s", m.m.message);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+        D_blocked=blocked;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+      }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-         break;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-       case MSG_HANGUP:
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-         if (!wi) /* ignore hangups from inside */
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>---- window.c
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+++ window.c
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -102,7 +102,6 @@ static void pseu_writeev_fn __P((struct event *, char *));
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- static void win_silenceev_fn __P((struct event *, char *));
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- static void win_destroyev_fn __P((struct event *, char *));
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--static int  OpenDevice __P((char **, int, int *, char **));
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- static int  ForkWindow __P((struct win *, char **, char *));
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- #ifdef ZMODEM
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- static void zmodem_found __P((struct win *, int, char *, int));
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -1091,7 +1090,7 @@ struct win *wp;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   free((char *)wp);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--static int
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+int
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- OpenDevice(args, lflag, typep, namep)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- char **args;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- int lflag;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>---- window.h
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+++ window.h
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -351,6 +351,7 @@ struct win
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- #define Layer2Window(l) ((struct win *)(l)->l_bottom->l_data)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- int WindowChangeNumber __P((int, int));
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+int OpenDevice __P((char **, int, int *, char **));
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- #endif /* SCREEN_WINDOW_H */
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;color:#808080;'>diff --git a/sysutils/screen/files/patch-panic-fix.diff b/sysutils/screen/files/patch-panic-fix.diff
</span>deleted file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index 5f619ec..0000000
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>--- a/sysutils/screen/files/patch-panic-fix.diff
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -1,140 +0,0 @@
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-Prevent Panic causing Panic, and children removing sockets
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-* Set eff_uid/eff_gid after setuid/setgid to prevent nested Panic in
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-  MakeClientSocket which calls xseteuid(eff_uid=0) - results in nested
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-  Panic and SendErrorMsg not getting sent.
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-* Set ServerSocket to -1 after fork so that child Panic doesn't
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-  remove socket in eexit.
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-* Fix descriptor leak if fork fails
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-Fixes screen bug: https://savannah.gnu.org/bugs/?55511
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-Signed-off-by: Scott Shambarger <devel@shambarger.net>
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>---- attacher.c
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+++ attacher.c
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -55,6 +55,8 @@ static sigret_t AttacherChld __P(SIGPROTOARG);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- static sigret_t AttachSigCont __P(SIGPROTOARG);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- extern int real_uid, real_gid, eff_uid, eff_gid;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+extern int ServerSocket;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+extern struct display *displays;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- extern char *SockName, *SockMatch, SockPath[];
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- extern char HostName[];
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- extern struct passwd *ppp;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -307,9 +309,9 @@ int how;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-       xseteuid(real_uid); /* multi_uid, allow backend to send signals */
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-     }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- #endif
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+  eff_uid = real_uid;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   if (setgid(real_gid))
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-     Panic(errno, "setgid");
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--  eff_uid = real_uid;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   eff_gid = real_gid;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   debug2("Attach: uid %d euid %d\n", (int)getuid(), (int)geteuid());
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -737,6 +739,8 @@ LockTerminal()
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-       if ((pid = fork()) == 0)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-         {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-           /* Child */
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+          displays = 0;           /* beware of Panic() */
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+          ServerSocket = -1;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-           if (setgid(real_gid))
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-             Panic(errno, "setgid");
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- #ifdef MULTIUSER
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>---- display.c
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+++ display.c
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -102,6 +102,7 @@ extern struct winsize glwz;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- #endif
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- extern char **NewEnv;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- extern int real_uid, real_gid;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+extern int ServerSocket, eff_uid, eff_gid;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- #endif
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- /*
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -3997,11 +3998,14 @@ char **cmdv;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-       return;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-     case 0:
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-       displays = 0;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+      ServerSocket = -1;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- #ifdef SIGPIPE
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-       signal(SIGPIPE, SIG_DFL);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- #endif
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-       if (setgid(real_gid) || setuid(real_uid))
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-         Panic(errno, "setuid/setgid");
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+      eff_uid = real_uid;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+      eff_gid = real_gid;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-       brktty(D_userfd);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-       freetty();
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- #ifdef DEBUG
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>---- fileio.c
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+++ fileio.c
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -42,6 +42,7 @@
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- extern struct display *display, *displays;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- extern struct win *fore;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- extern struct layer *flayer;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+extern int ServerSocket;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- extern int real_uid, eff_uid;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- extern int real_gid, eff_gid;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- extern char *extra_incap, *extra_outcap;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -704,7 +705,7 @@ int printpipe(struct win *p, char *cmd) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-     case 0:
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-       display = p->w_pdisplay;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-       displays = 0;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+      ServerSocket = -1;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- #ifdef DEBUG
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-       if (dfp && dfp != stderr)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-         fclose(dfp);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -714,6 +715,8 @@ int printpipe(struct win *p, char *cmd) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-       closeallfiles(0);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-       if (setgid(real_gid) || setuid(real_uid))
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-         Panic(errno, "printpipe setuid");
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+      eff_uid = real_uid;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+      eff_gid = real_gid;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- #ifdef SIGPIPE
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-       signal(SIGPIPE, SIG_DFL);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -741,6 +744,7 @@ int readpipe(char **cmdv) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-     return -1;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   case 0:
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-     displays = 0;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    ServerSocket = -1;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- #ifdef DEBUG
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-     if (dfp && dfp != stderr)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-       fclose(dfp);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -756,6 +760,8 @@ int readpipe(char **cmdv) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-       close(1);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-       Panic(errno, "setuid/setgid");
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-     }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    eff_uid = real_uid;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    eff_gid = real_gid;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- #ifdef SIGPIPE
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-     signal(SIGPIPE, SIG_DFL);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- #endif
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>---- window.c
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+++ window.c
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -55,6 +55,7 @@ extern char *screenlogfile;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- extern char HostName[];
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- extern int TtyMode;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- extern int SilenceWait;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+extern int ServerSocket;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- extern int real_uid, real_gid, eff_uid, eff_gid;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- extern char Termcap[];
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- extern char **NewEnv;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -1253,6 +1254,7 @@ char **args, *ttyn;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-     {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-     case -1:
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-       Msg(errno, "fork");
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+      close(slave);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-       break;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-     case 0:
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-       signal(SIGHUP, SIG_DFL);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -1271,6 +1273,7 @@ char **args, *ttyn;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- #endif
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-       displays = 0;               /* beware of Panic() */
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+      ServerSocket = -1;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-       if (setgid(real_gid) || setuid(real_uid))
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   Panic(errno, "Setuid/gid");
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-       eff_uid = real_uid;
</span></pre><pre style='margin:0'>

</pre>