Hello community, here is the log from the commit of package screen for openSUSE:Factory checked in at 2016-08-25 09:49:16 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/screen (Old) and /work/SRC/openSUSE:Factory/.screen.new (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "screen" Changes: -------- --- /work/SRC/openSUSE:Factory/screen/screen.changes 2015-09-19 06:52:06.000000000 +0200 +++ /work/SRC/openSUSE:Factory/.screen.new/screen.changes 2016-08-25 09:49:18.000000000 +0200 @@ -1,0 +2,14 @@ +Wed Aug 17 14:02:33 UTC 2016 - [email protected] + +- Remove %postun - it tried to delete "screen.info.gz" file + second time. + +------------------------------------------------------------------- +Thu Aug 11 17:32:44 UTC 2016 - [email protected] + +- GNU screen 4.4.0: + * Support up to 24 function keys + * 'logfile' command, starts logging into new file upon changing + * Fix runtime issues + +------------------------------------------------------------------- Old: ---- screen-4.3.1.tar.gz screen-4.3.1.tar.gz.sig New: ---- screen-4.4.0.tar.gz screen-4.4.0.tar.gz.sig ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ screen.spec ++++++ --- /var/tmp/diff_new_pack.4Zbifr/_old 2016-08-25 09:49:19.000000000 +0200 +++ /var/tmp/diff_new_pack.4Zbifr/_new 2016-08-25 09:49:19.000000000 +0200 @@ -1,7 +1,7 @@ # # spec file for package screen # -# Copyright (c) 2015 SUSE LINUX GmbH, Nuernberg, Germany. +# Copyright (c) 2016 SUSE LINUX GmbH, Nuernberg, Germany. # # All modifications and additions to the file contributed by third parties # remain the property of their copyright owners, unless otherwise agreed @@ -39,7 +39,7 @@ BuildRequires: pam-devel PreReq: %install_info_prereq PreReq: coreutils -Version: 4.3.1 +Version: 4.4.0 Release: 0 Summary: A program to allow multiple screens on a VT100/ANSI Terminal License: GPL-3.0+ @@ -127,7 +127,4 @@ test -d %rundir/screens || mkdir -m 755 %rundir/screens test -d %rundir/uscreens || mkdir -m 1777 %rundir/uscreens -%postun -%install_info_delete --info-dir=%{_infodir} %{_infodir}/%{name}.info.gz - %changelog ++++++ screen-4.3.1.tar.gz -> screen-4.4.0.tar.gz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/screen-4.3.1/ChangeLog new/screen-4.4.0/ChangeLog --- old/screen-4.3.1/ChangeLog 2015-06-28 23:41:01.000000000 +0200 +++ new/screen-4.4.0/ChangeLog 2016-06-19 22:20:33.000000000 +0200 @@ -1,3 +1,8 @@ +Version 4.4.0 (19/06/2016): + * Support up to 24 function keys + * Fix runtime issues + * 'logfile' command, starts logging into new file upon changing + Version 4.3.1 (28/06/2015): * Fix resize bug diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/screen-4.3.1/INSTALL new/screen-4.4.0/INSTALL --- old/screen-4.3.1/INSTALL 2015-06-28 23:39:42.000000000 +0200 +++ new/screen-4.4.0/INSTALL 2016-06-19 21:41:03.000000000 +0200 @@ -1,4 +1,4 @@ -Installation of screen 4.3.1 +Installation of GNU screen. 0.) This instruction is quite lengthy diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/screen-4.3.1/Makefile.in new/screen-4.4.0/Makefile.in --- old/screen-4.3.1/Makefile.in 2015-06-28 23:22:55.000000000 +0200 +++ new/screen-4.4.0/Makefile.in 2016-06-19 21:41:03.000000000 +0200 @@ -352,5 +352,5 @@ braille.h list_generic.o: list_generic.h list_generic.c layer.h screen.h osdef.h list_display.o: list_generic.h list_display.c layer.h screen.h osdef.h -list_window.o: list_generic.h list_window.c window.h layer.h screen.h osdef.h +list_window.o: list_generic.h list_window.c window.h layer.h screen.h osdef.h comm.h diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/screen-4.3.1/README new/screen-4.4.0/README --- old/screen-4.3.1/README 2015-06-28 23:39:55.000000000 +0200 +++ new/screen-4.4.0/README 2016-06-19 21:41:03.000000000 +0200 @@ -5,7 +5,7 @@ -Short introduction to screen (Version 4.3.1) +Short introduction to GNU screen. Send bugreports, fixes, enhancements, t-shirts, money, beer & pizza to [email protected] diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/screen-4.3.1/ansi.c new/screen-4.4.0/ansi.c --- old/screen-4.3.1/ansi.c 2015-06-28 23:22:55.000000000 +0200 +++ new/screen-4.4.0/ansi.c 2016-06-19 21:41:03.000000000 +0200 @@ -2502,13 +2502,13 @@ return; if (n > 0) { + if (ye - ys + 1 < n) + n = ye - ys + 1; if (n > 256) { MScrollV(p, n - 256, ys, ye, bce); n = 256; } - if (ye - ys + 1 < n) - n = ye - ys + 1; #ifdef COPY_PASTE if (compacthist) { @@ -2562,14 +2562,14 @@ } else { - if (n < -256) - { - MScrollV(p, n + 256, ys, ye, bce); - n = -256; - } n = -n; if (ye - ys + 1 < n) n = ye - ys + 1; + if (n > 256) + { + MScrollV(p, - (n - 256), ys, ye, bce); + n = 256; + } ml = p->w_mlines + ye; /* Clear lines */ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/screen-4.3.1/attacher.c new/screen-4.4.0/attacher.c --- old/screen-4.3.1/attacher.c 2015-06-28 23:22:55.000000000 +0200 +++ new/screen-4.4.0/attacher.c 2016-06-19 21:41:03.000000000 +0200 @@ -364,8 +364,8 @@ } #endif ASSERT(how == MSG_ATTACH || how == MSG_CONT); - strncpy(m.m.attach.envterm, attach_term, sizeof(m.m.attach.envterm) - 1); - m.m.attach.envterm[sizeof(m.m.attach.envterm) - 1] = 0; + strncpy(m.m.attach.envterm, attach_term, MAXTERMLEN); + m.m.attach.envterm[MAXTERMLEN] = 0; debug1("attach: sending %d bytes... ", (int)sizeof(m)); strncpy(m.m.attach.auser, LoginName, sizeof(m.m.attach.auser) - 1); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/screen-4.3.1/braille.c new/screen-4.4.0/braille.c --- old/screen-4.3.1/braille.c 2015-06-28 23:22:55.000000000 +0200 +++ new/screen-4.4.0/braille.c 2016-06-19 21:41:03.000000000 +0200 @@ -704,7 +704,7 @@ else if (ParseNum(act, &n)) break; } - if (n < 0 && n > 3) + if (n < 0 || n > 3) { Msg(0, "Out of range; 0 <= bd_info >= 3 "); break; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/screen-4.3.1/canvas.c new/screen-4.4.0/canvas.c --- old/screen-4.3.1/canvas.c 2015-06-28 23:22:55.000000000 +0200 +++ new/screen-4.4.0/canvas.c 2016-06-19 21:41:03.000000000 +0200 @@ -758,11 +758,12 @@ void RemCanvas() { - int xs, xe, ys, ye; + int ye; struct canvas *cv; debug("RemCanvas\n"); cv = D_forecv; + ye = cv->c_slback->c_ye; if (cv->c_slorient == SLICE_UNKN) return; while (cv->c_slprev) @@ -777,10 +778,6 @@ FreePerp(cv->c_slprev ? cv->c_slprev : cv->c_slnext); FreePerp(cv->c_slback); } - xs = cv->c_slback->c_xs; - xe = cv->c_slback->c_xe; - ys = cv->c_slback->c_ys; - ye = cv->c_slback->c_ye; /* free canvas */ cv = D_forecv; D_forecv = cv->c_slprev; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/screen-4.3.1/display.c new/screen-4.4.0/display.c --- old/screen-4.3.1/display.c 2015-06-28 23:22:55.000000000 +0200 +++ new/screen-4.4.0/display.c 2016-06-19 21:41:03.000000000 +0200 @@ -309,8 +309,8 @@ strncpy(D_usertty, utty, sizeof(D_usertty) - 1); D_usertty[sizeof(D_usertty) - 1] = 0; - strncpy(D_termname, term, sizeof(D_termname) - 1); - D_termname[sizeof(D_termname) - 1] = 0; + strncpy(D_termname, term, MAXTERMLEN); + D_termname[MAXTERMLEN] = 0; D_user = *u; D_processinput = ProcessInput; D_mousetrack = defmousetrack; @@ -3725,14 +3725,14 @@ char *m; int pid; int slave = -1; - char termname[30]; + char termname[MAXTERMLEN + 6]; #ifndef TIOCSWINSZ char libuf[20], cobuf[20]; #endif char **np; strcpy(termname, "TERM="); - strncpy(termname + 5, D_termname, sizeof(termname) - 6); + strncpy(termname + 5, D_termname, MAXTERMLEN - 6); termname[sizeof(termname) - 1] = 0; KillBlanker(); D_blankerpid = -1; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/screen-4.3.1/doc/screen.1 new/screen-4.4.0/doc/screen.1 --- old/screen-4.3.1/doc/screen.1 2015-06-28 23:39:33.000000000 +0200 +++ new/screen-4.4.0/doc/screen.1 2016-06-19 21:41:03.000000000 +0200 @@ -5008,13 +5008,6 @@ Pablo Averbuj ([email protected]). .fi - -.SH VERSION -This is version 4.3.1. Its roots are a merge of a custom version -2.3PR7 by Wayne Davison -and several enhancements to Oliver Laumann's version 2.0. Note that all versions -numbered 2.x are copyright by Oliver Laumann. - .SH AVAILABILITY The latest official release of .I screen diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/screen-4.3.1/doc/screen.texinfo new/screen-4.4.0/doc/screen.texinfo --- old/screen-4.3.1/doc/screen.texinfo 2015-06-28 23:39:19.000000000 +0200 +++ new/screen-4.4.0/doc/screen.texinfo 2016-06-19 22:21:26.000000000 +0200 @@ -7,7 +7,7 @@ @finalout @setchapternewpage odd @c %**end of header -@set version 4.3.1 +@set version 4.4.0 @direntry * Screen: (screen). Full-screen window manager. diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/screen-4.3.1/os.h new/screen-4.4.0/os.h --- old/screen-4.3.1/os.h 2015-06-28 23:22:56.000000000 +0200 +++ new/screen-4.4.0/os.h 2016-06-19 21:41:03.000000000 +0200 @@ -250,11 +250,9 @@ #endif #if defined(UTMPOK) || defined(BUGGYGETLOGIN) -# if defined(SVR4) && !defined(DGUX) && !defined(__hpux) +# if defined(SVR4) && !defined(DGUX) && !defined(__hpux) && !defined(linux) # include <utmpx.h> -# ifdef UTMPX_FILE /* GNU extension */ -# define UTMPFILE UTMPX_FILE -# endif +# define UTMPFILE UTMPX_FILE # define utmp utmpx # define getutent getutxent # define getutid getutxid @@ -262,6 +260,7 @@ # define pututline pututxline # define setutent setutxent # define endutent endutxent +# define ut_time ut_xtime # else /* SVR4 */ # include <utmp.h> # endif /* SVR4 */ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/screen-4.3.1/patchlevel.h new/screen-4.4.0/patchlevel.h --- old/screen-4.3.1/patchlevel.h 2015-06-28 23:41:56.000000000 +0200 +++ new/screen-4.4.0/patchlevel.h 2016-06-19 22:21:02.000000000 +0200 @@ -532,7 +532,7 @@ #define ORIGIN "GNU" #define REV 4 -#define VERS 3 -#define PATCHLEVEL 1 -#define DATE "28-Jun-15" +#define VERS 4 +#define PATCHLEVEL 0 +#define DATE "19-Jun-16" #define STATE "" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/screen-4.3.1/process.c new/screen-4.4.0/process.c --- old/screen-4.3.1/process.c 2015-06-28 23:22:56.000000000 +0200 +++ new/screen-4.4.0/process.c 2016-06-19 21:41:03.000000000 +0200 @@ -2615,6 +2615,7 @@ case RC_LOGFILE: if (*args) { + char buf[1024]; if (args[1] && !(strcmp(*args, "flush"))) { log_flush = atoi(args[1]); @@ -2622,7 +2623,12 @@ OutputMsg(0, "log flush timeout set to %ds\n", log_flush); break; } - if (ParseSaveStr(act, &screenlogfile) || !msgok) + if (ParseSaveStr(act, &screenlogfile)) + break; + if (fore && fore->w_log) + if (DoStartLog(fore, buf, sizeof(buf))) + OutputMsg(0, "Error opening logfile \"%s\"", buf); + if (!msgok) break; } OutputMsg(0, "logfile is '%s'", screenlogfile); @@ -2672,13 +2678,14 @@ s = NULL; if (ParseSaveStr(act, &s)) break; - if (strlen(s) >= MAXTERMLEN) + if (strlen(s) > MAXTERMLEN) { OutputMsg(0, "%s: term: argument too long ( < %d)", rc_name, MAXTERMLEN); free(s); break; } - strcpy(screenterm, s); + strncpy(screenterm, s, MAXTERMLEN); + screenterm[MAXTERMLEN] = '\0'; free(s); debug1("screenterm set to %s\n", screenterm); MakeTermcap((display == 0)); @@ -5693,7 +5700,7 @@ char *str; { int i; - debug1("ShowWindowsX: string [%s]", string); + debug1("ShowWindowsX: string [%s]", str); for (i = 0; i < maxwin ; i++) { if (!wtab[i]) continue; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/screen-4.3.1/screen.c new/screen-4.4.0/screen.c --- old/screen-4.3.1/screen.c 2015-06-28 23:22:56.000000000 +0200 +++ new/screen-4.4.0/screen.c 2016-06-19 21:41:03.000000000 +0200 @@ -507,7 +507,8 @@ #endif nwin = nwin_undef; nwin_options = nwin_undef; - strcpy(screenterm, "screen"); + strncpy(screenterm, "screen", MAXTERMLEN); + screenterm[MAXTERMLEN] = '\0'; #ifdef BUILTIN_TELNET af = AF_UNSPEC; #endif @@ -689,9 +690,10 @@ case 'T': if (--ac == 0) exit_with_usage(myname, "Specify terminal-type with -T", NULL); - if (strlen(*++av) < 20) - strcpy(screenterm, *av); - else + if (strlen(*++av) < MAXTERMLEN) { + strncpy(screenterm, *av, MAXTERMLEN); + screenterm[MAXTERMLEN] = '\0'; + } else Panic(0, "-T: terminal name too long. (max. 20 char)"); nwin_options.term = screenterm; break; @@ -1034,7 +1036,7 @@ if ((attach_term = getenv("TERM")) == 0 || *attach_term == 0) Panic(0, "Please set a terminal type."); - if (strlen(attach_term) > sizeof(D_termname) - 1) + if (strlen(attach_term) > MAXTERMLEN) Panic(0, "$TERM too long - sorry."); GetTTY(0, &attach_Mode); #ifdef DEBUGGGGGGGGGGGGGGG diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/screen-4.3.1/screen.h new/screen-4.4.0/screen.h --- old/screen-4.3.1/screen.h 2015-06-28 23:22:56.000000000 +0200 +++ new/screen-4.4.0/screen.h 2016-06-19 21:41:03.000000000 +0200 @@ -184,8 +184,9 @@ * 2: screen version 4.1.0devel (revisions 8b46d8a upto YYYYYYY) * 3: screen version 4.2.0 (was incorrectly originally. Patched here) * 4: screen version 4.2.1 (bumped once again due to changed terminal and login length) + * 5: screen version 4.4.0 (fix screenterm size) */ -#define MSG_VERSION 4 +#define MSG_VERSION 5 #define MSG_REVISION (('m'<<24) | ('s'<<16) | ('g'<<8) | MSG_VERSION) struct msg @@ -204,7 +205,7 @@ int nargs; char line[MAXPATHLEN]; char dir[MAXPATHLEN]; - char screenterm[MAXTERMLEN]; /* is screen really "screen" ? */ + char screenterm[MAXTERMLEN + 1]; /* is screen really "screen" ? */ } create; struct diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/screen-4.3.1/search.c new/screen-4.4.0/search.c --- old/screen-4.3.1/search.c 2015-06-28 23:22:56.000000000 +0200 +++ new/screen-4.4.0/search.c 2016-06-19 21:41:03.000000000 +0200 @@ -132,23 +132,29 @@ revto(x, y); } + +/* + * Search for a string that matches pattern. The first character of the + * match must be on line y, between columns sx and ex (inclusive), but + * the rest of the match can extend beyond column ex and even onto the + * following line. Returns the starting column of the first match found, + * or -1 if there's no match. + */ static int matchword(pattern, y, sx, ex) char *pattern; int y, sx, ex; { - unsigned char *ip, *ipe, *cp, *pp; - struct mline *ml; + unsigned char *ip, *cp, *pp, *cpe; + int cy; - /* *sigh* to make WIN work */ fore = ((struct markdata *)flayer->l_data)->md_window; - ml = WIN(y); - ip = ml->image + sx; - ipe = ml->image + flayer->l_width; for (;sx <= ex; sx++) { - cp = ip++; + cy = y; + cp = WIN(cy)->image + sx; + cpe = WIN(cy)->image + flayer->l_width; pp = (unsigned char *)pattern; for (;;) { @@ -159,8 +165,23 @@ pp++; if (*pp == 0) return sx; - if (cp == ipe) - break; + if (cp == cpe) { + /* + * We have a partial match, but we've hit + * the end of this line. Does it wrap onto + * the following line? If not, we're done. + */ + if (*cp == ' ' || cy >= fore->w_histheight + flayer->l_height - 1) + break; + + /* + * This line does wrap, so look on the next + * line for the rest of our match. + */ + cy++; + cp = WIN(cy)->image; + cpe = WIN(cy)->image + flayer->l_width; + } } } return -1; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/screen-4.3.1/socket.c new/screen-4.4.0/socket.c --- old/screen-4.3.1/socket.c 2015-06-28 23:22:56.000000000 +0200 +++ new/screen-4.4.0/socket.c 2016-06-19 21:41:03.000000000 +0200 @@ -51,6 +51,13 @@ # define dirent direct #endif +#ifndef CMSG_LEN +#define CMSG_LEN(length) ((_CMSG_DATA_ALIGN(sizeof(struct cmsghdr))) + (length)) +#endif +#ifndef CMSG_SPACE +#define CMSG_SPACE(length) ((_CMSG_DATA_ALIGN(sizeof(struct cmsghdr))) + (_CMSG_DATA_ALIGN(length))) +#endif + #include "extern.h" #include "list_generic.h" @@ -695,8 +702,8 @@ return; } if (nwin->term != nwin_undef.term) - strncpy(m.m.create.screenterm, nwin->term, 19); - m.m.create.screenterm[19] = '\0'; + strncpy(m.m.create.screenterm, nwin->term, MAXTERMLEN); + m.m.create.screenterm[MAXTERMLEN] = '\0'; m.protocol_revision = MSG_REVISION; debug1("SendCreateMsg writing '%s'\n", m.m.create.line); if (write(s, (char *) &m, sizeof m) != sizeof m) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/screen-4.3.1/term.c new/screen-4.4.0/term.c --- old/screen-4.3.1/term.c 2015-06-28 23:22:56.000000000 +0200 +++ new/screen-4.4.0/term.c 2016-06-19 21:41:03.000000000 +0200 @@ -205,6 +205,10 @@ { "F8", T_STR }, { "F9", T_STR }, { "FA", T_STR }, + { "FB", T_STR }, + { "FC", T_STR }, + { "FD", T_STR }, + { "FE", T_STR }, { "kb", T_STR }, { "K1", T_STR }, diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/screen-4.3.1/termcap.c new/screen-4.4.0/termcap.c --- old/screen-4.3.1/termcap.c 2015-06-28 23:22:56.000000000 +0200 +++ new/screen-4.4.0/termcap.c 2016-06-19 21:41:03.000000000 +0200 @@ -72,7 +72,7 @@ static int Termcaplen; static int tcLineLen; char Term[MAXSTR+5]; /* +5: "TERM=" */ -char screenterm[20]; /* new $TERM, usually "screen" */ +char screenterm[MAXTERMLEN + 1]; /* new $TERM, usually "screen" */ char *extra_incap, *extra_outcap; @@ -389,11 +389,11 @@ { /* init with default string first */ s = "l+m+k+j+u+t+v+w+q-x|n+o~s_p\"r#`+a:f'g#~o.v-^+<,>h#I#0#y<z>"; - for (i = strlen(s) & ~1; i >= 0; i -= 2) + for (i = (strlen(s) - 2) & ~1; i >= 0; i -= 2) D_c0_tab[(int)(unsigned char)s[i]] = s[i + 1]; } if (D_CC0) - for (i = strlen(D_CC0) & ~1; i >= 0; i -= 2) + for (i = (strlen(D_CC0) - 2) & ~1; i >= 0; i -= 2) D_c0_tab[(int)(unsigned char)D_CC0[i]] = D_CC0[i + 1]; debug1("ISO2022 = %d\n", D_CG0); #endif /* FONT */ @@ -883,7 +883,8 @@ if (*screenterm == '\0' || strlen(screenterm) > MAXSTR - 3) { debug("MakeTermcap sets screenterm=screen\n"); - strcpy(screenterm, "screen"); + strncpy(screenterm, "screen", MAXTERMLEN); + screenterm[MAXTERMLEN] = '\0'; } #if 0 found = 1; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/screen-4.3.1/tty.sh new/screen-4.4.0/tty.sh --- old/screen-4.3.1/tty.sh 2015-06-28 23:22:56.000000000 +0200 +++ new/screen-4.4.0/tty.sh 2016-06-19 21:41:03.000000000 +0200 @@ -74,6 +74,7 @@ #ifdef __hpux # include <sys/modem.h> #endif +#include <limits.h> #ifdef ISC # include <sys/tty.h> @@ -1506,20 +1507,21 @@ char *tty; { struct stat st; - char * real; + char realbuf[PATH_MAX]; + const char *real; int rc; - real = realpath(tty, NULL); + real = realpath(tty, realbuf); if (!real) return -1; + realbuf[sizeof(realbuf)-1]='\0'; if (lstat(real, &st) || !S_ISCHR(st.st_mode) || - (st.st_nlink > 1 && strncmp(real, "/dev/", 5))) + (st.st_nlink > 1 && strncmp(real, "/dev", 4))) rc = -1; else rc = 0; - free(real); return rc; } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/screen-4.3.1/utmp.c new/screen-4.4.0/utmp.c --- old/screen-4.3.1/utmp.c 2015-06-28 23:37:40.000000000 +0200 +++ new/screen-4.4.0/utmp.c 2016-06-19 21:41:03.000000000 +0200 @@ -631,7 +631,7 @@ /* must use temp variable because of NetBSD/sparc64, where * ut_xtime is long(64) but time_t is int(32) */ (void)time(&now); - u->ut_tv.tv_sec = now; + u->ut_time = now; } static slot_t @@ -743,7 +743,7 @@ strncpy(u->ut_line, line, sizeof(u->ut_line)); strncpy(u->ut_name, user, sizeof(u->ut_name)); (void)time(&now); - u->ut_tv.tv_sec = now; + u->ut_time = now; } static slot_t diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/screen-4.3.1/window.c new/screen-4.4.0/window.c --- old/screen-4.3.1/window.c 2015-06-28 23:22:56.000000000 +0200 +++ new/screen-4.4.0/window.c 2016-06-19 21:41:03.000000000 +0200 @@ -1438,7 +1438,7 @@ NewEnv[4] = shellbuf; debug1("ForkWindow: NewEnv[4] = '%s'\n", shellbuf); if (win->w_term && *win->w_term && strcmp(screenterm, win->w_term) && - (strlen(win->w_term) < 20)) + (strlen(win->w_term) < MAXTERMLEN)) { char *s1, *s2, tl;
