cu coredumps (fwd)

Timour Ezeev timour at pivotaldynamics.com
Thu Oct 28 16:03:47 PDT 2004


	Oops, I don't think my original post got to bugs@, so reposting...

--
Timour Ezeev
Pivotal Dynamics
timour at xxxxxxxxxxxxxxxxxxx
V: 305.406.9904
F: 305.406.9689
---------- Forwarded message ----------

On Tue, 26 Oct 2004, Mark Cullen wrote:

I managed to update to HEAD a few hours before you announced slipping the 
Stable tag (I think). While I don't actually need to use cu on this machine, 
I did discover it seems to core dump...

(root|beast)/home/mrboo# cu -l cuaa0
zsh: segmentation fault (core dumped)  cu -l cuaa0
(root|beast)/home/mrboo# cu -l cuaa1
zsh: segmentation fault (core dumped)  cu -l cuaa1
(root|beast)/home/mrboo#
... 

 	Sorry to bring this subject up again, but I finally had a chance to
 	examine the source code. Here is a patch that I think addresses the
 	problem with minimal modification to the original code and algorithm.
 	Instead of adding a prefix to a device name it simply bails out (this
 	of course can be changed). The main difference with the suggested fix is
 	that this patch fixes the lookup procedure rather then creating a hack
 	around it.
 	Regards,

 	- Timour

--
Timour Ezeev
Pivotal Dynamics
timour at xxxxxxxxxxxxxxxxxxx
V: 305.406.9904
F: 305.406.9689
Index: remote.c
===================================================================
RCS file: /home/dcvs/src/usr.bin/tip/tip/remote.c,v
retrieving revision 1.3
diff -u -r1.3 remote.c
--- remote.c	3 Nov 2003 19:31:33 -0000	1.3
+++ remote.c	28 Oct 2004 22:18:17 -0000
@@ -120,17 +120,21 @@
  		}
  	if ((stat = cgetent(&bp, db_array, host)) < 0) {
-		if (DV ||
-		    (host[0] == '/' && access(DV = host, R_OK | W_OK) == 0)) {
-			CU = DV;
-			HO = host;
-			HW = 1;
-			DU = 0;
-			if (!BR)
-				BR = DEFBR;
-			FS = DEFFS;
-			return;
+		/* Check for valid device */
+		if (DV && access(DV, R_OK | W_OK) != 0) {
+			err(errno, "bad device `%s\'", DV);
  		}
+		else
+			if (DV || host[0] == '/' && access(DV = host, R_OK | W_OK) == 0) {
+				CU = DV;
+				HO = host;
+				HW = 1;
+				DU = 0;
+				if (!BR)
+					BR = DEFBR;
+				FS = DEFFS;
+				return;
+			}
  		switch(stat) {
  		case -1:
  			warnx("unknown host %s", host);





More information about the Bugs mailing list