pkgsrc-Changes archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

CVS commit: pkgsrc/sysutils/rtty



Module Name:    pkgsrc
Committed By:   bouyer
Date:           Wed Sep  6 18:34:24 UTC 2023

Modified Files:
        pkgsrc/sysutils/rtty: Makefile distinfo
        pkgsrc/sysutils/rtty/patches: patch-ac

Log Message:
Fix a bug that showed up on netbsd-10:
serv_input: read@3 need 468 got 396
read(2) isn't garanteed to be atomic on unix sockets. Loop on poll()/read()
until we read the expected len or get an error.


To generate a diff of this commit:
cvs rdiff -u -r1.34 -r1.35 pkgsrc/sysutils/rtty/Makefile
cvs rdiff -u -r1.10 -r1.11 pkgsrc/sysutils/rtty/distinfo
cvs rdiff -u -r1.3 -r1.4 pkgsrc/sysutils/rtty/patches/patch-ac

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: pkgsrc/sysutils/rtty/Makefile
diff -u pkgsrc/sysutils/rtty/Makefile:1.34 pkgsrc/sysutils/rtty/Makefile:1.35
--- pkgsrc/sysutils/rtty/Makefile:1.34  Fri Sep 10 08:28:21 2021
+++ pkgsrc/sysutils/rtty/Makefile       Wed Sep  6 18:34:24 2023
@@ -1,7 +1,7 @@
-# $NetBSD: Makefile,v 1.34 2021/09/10 08:28:21 he Exp $
+# $NetBSD: Makefile,v 1.35 2023/09/06 18:34:24 bouyer Exp $
 
 DISTNAME=      rtty-3.2
-PKGREVISION=   3
+PKGREVISION=   4
 CATEGORIES=    sysutils
 MASTER_SITES=  http://gatekeeper.hpl.hp.com/archive/pub/misc/vixie/
 MASTER_SITES+= ftp://gatekeeper.hpl.hp.com/pub/misc/vixie/

Index: pkgsrc/sysutils/rtty/distinfo
diff -u pkgsrc/sysutils/rtty/distinfo:1.10 pkgsrc/sysutils/rtty/distinfo:1.11
--- pkgsrc/sysutils/rtty/distinfo:1.10  Tue Oct 26 11:20:08 2021
+++ pkgsrc/sysutils/rtty/distinfo       Wed Sep  6 18:34:24 2023
@@ -1,10 +1,10 @@
-$NetBSD: distinfo,v 1.10 2021/10/26 11:20:08 nia Exp $
+$NetBSD: distinfo,v 1.11 2023/09/06 18:34:24 bouyer Exp $
 
 BLAKE2s (rtty-3.2.tar.gz) = da5c9c2d6b19bdb70e87b13e795693d3f746736903451d0235bdd4f433c1b097
 SHA512 (rtty-3.2.tar.gz) = 11d1fa82ddce97320c1aa44f726a2b05e49c7dd67fc9a902a29531e934f7f16b3ad193f9e4f247d8d03fc61bd0337c165faa08e1585374820b8f306b1b5315a4
 Size (rtty-3.2.tar.gz) = 23445 bytes
 SHA1 (patch-aa) = 11cf781b562bfe35c1003db6f3ac94653c1f8e06
 SHA1 (patch-ab) = 32644f9383ef43b45421fc100382509e2e6b2e34
-SHA1 (patch-ac) = 8b1b1be9eb471f68d62b4454f9bd74dddb471d75
+SHA1 (patch-ac) = a300e46abdf5971b05580382b6ecfc95152c9abc
 SHA1 (patch-ad) = dee546ca499fa4fb534f137d58fcbbb800b244d3
 SHA1 (patch-agelogs.sh) = 50754d303652d7c2ee3bce55101b3b0dbe60b044

Index: pkgsrc/sysutils/rtty/patches/patch-ac
diff -u pkgsrc/sysutils/rtty/patches/patch-ac:1.3 pkgsrc/sysutils/rtty/patches/patch-ac:1.4
--- pkgsrc/sysutils/rtty/patches/patch-ac:1.3   Wed Aug  2 17:33:45 2000
+++ pkgsrc/sysutils/rtty/patches/patch-ac       Wed Sep  6 18:34:24 2023
@@ -1,24 +1,29 @@
-$NetBSD: patch-ac,v 1.3 2000/08/02 17:33:45 thorpej Exp $
+$NetBSD: patch-ac,v 1.4 2023/09/06 18:34:24 bouyer Exp $
 
 Make this compile on Solaris.
 
 Fix a bug where rtty would loop forever if its parent process
 (such as a shell) were to die and close rtty's standard input.
 
---- rtty.c.orig        Fri Aug 23 15:25:28 1996
-+++ rtty.c     Wed Aug  2 10:25:30 2000
-@@ -35,6 +35,10 @@
+Fix a bug where rtty would exit with messages like
+serv_input: read@3 need 468 got 396
+when a read on the unix socket returns a partial read.
+
+--- rtty.c.orig        2023-09-06 18:23:56.430905709 +0200
++++ rtty.c     2023-09-06 18:24:21.275470294 +0200
+@@ -34,6 +34,11 @@
+ #include <string.h>
  #include <pwd.h>
  #include <termios.h>
- 
++#include <poll.h>
++
 +#if (defined(__sun__) && defined(__svr4__))
 +#include <fcntl.h>
 +#endif
-+
+ 
  #include "rtty.h"
  #ifdef NEED_BITYPES_H
- # include "bitypes.h"
-@@ -266,13 +270,16 @@
+@@ -266,13 +271,16 @@
  static void
  tty_input(fd) {
        static enum {base, need_cr, tilde} state = base;
@@ -36,7 +41,7 @@ Fix a bug where rtty would loop forever 
  
                switch (state) {
                case base:
-@@ -346,6 +353,14 @@
+@@ -346,6 +354,14 @@
                        write(Log, buf, 1);
                }
        }
@@ -51,3 +56,55 @@ Fix a bug where rtty would loop forever 
  #if 0
        fcntl(Tty, F_SETFL, fcntl(Tty, F_GETFL, 0)&~O_NONBLOCK);
  #endif
+@@ -502,6 +518,33 @@
+       }
+ }
+ 
++static ssize_t
++read_exact(int fd, void *buf, size_t nbytes)
++{
++      struct pollfd pfd;
++      ssize_t ret = 0, r;
++
++      while (nbytes > 0) {
++              pfd.fd = fd;
++              pfd.events = POLLRDNORM;
++              pfd.revents = 0;
++
++              switch (poll(&pfd, 1, 1000)) {
++              case -1:
++                      return -1;
++              case 0:
++                      return ret;
++              default:
++                      r = read(fd, buf, nbytes);
++                      if (r < 0)
++                              return r;
++                      ret += r;
++                      nbytes -= r;
++                      break;
++              }
++      }
++}
++
+ static void
+ serv_input(fd) {
+       char passwd[TP_MAXVAR], s[3], *c, *crypt();
+@@ -521,7 +564,7 @@
+       switch (t) {
+       case TP_DATA:   /* FALLTHROUGH */
+       case TP_NOTICE:
+-              if (i != (nchars = read(fd, T.c, i))) {
++              if (i != (nchars = read_exact(fd, T.c, i))) {
+                       fprintf(stderr, "serv_input: read@%d need %d got %d\n",
+                               fd, i, nchars);
+                       server_died();
+@@ -563,7 +606,7 @@
+               break;
+       case TP_PARITY:
+               if (o & TP_QUERY) {
+-                      if (i != (nchars = read(fd, T.c, i))) {
++                      if (i != (nchars = read_exact(fd, T.c, i))) {
+                               server_died();
+                       }
+                       T.c[i] = '\0';



Home | Main Index | Thread Index | Old Index