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