Marcus Brinkmann <Marcus.Brinkmann@ruhr-uni-bochum.de> writes: > This piece of the patch is not good, because it is not defined if the > truncated name will be null terminated. This can be fixed by null > terminating the reult no matter what, I think. You are right. Me bad! I read "The returned name is null-terminated" in the standard, and missed the "except" clause. Replacement patch:
diff -u openssh-2.9p2/channels.c~ openssh-2.9p2/channels.c --- openssh-2.9p2/channels.c~ Mon Jul 23 13:50:54 2001 +++ openssh-2.9p2/channels.c Mon Jul 23 13:50:54 2001 @@ -2159,7 +2159,7 @@ char strport[NI_MAXSERV]; int gaierr, n, num_socks = 0, socks[NUM_SOCKS]; char display[512]; - char hostname[MAXHOSTNAMELEN]; + char hostname[401]; /* we only use the first 400 bytes anyway*/ for (display_number = x11_display_offset; display_number < MAX_DISPLAYS; @@ -2232,7 +2232,10 @@ /* Set up a suitable value for the DISPLAY variable. */ if (gethostname(hostname, sizeof(hostname)) < 0) - fatal("gethostname: %.100s", strerror(errno)); + if (errno == ENAMETOOLONG) + hostname[sizeof(hostname) - 1] = 0; + else + fatal("gethostname: %.100s", strerror(errno)); #ifdef IPADDR_IN_DISPLAY /*
-- Robbe
Attachment:
signature.ng
Description: PGP signature