<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>