Call for testing: OpenSSH 6.8

Tom G. Christensen
Wed, 25 Feb 2015 21:55:59 -0000

On 24/02/15 21:56, Tim Rice wrote:
> On Wed, 25 Feb 2015, Damien Miller wrote:
>
> | On Tue, 24 Feb 2015, Tom G. Christensen wrote:
> |
> | > I've switched to HEAD in the git repo and it now builds on
Solaris
> | > 2.6, 7, 8 and 9 but the testsuite still cannot be built due to the
> | > missing <err.h>.
>
> The err.h issue is fixes but there still msghdr structure differences
> to deal with.
>

Yes I saw that later.

The testsuite build fails on Solaris 2.6 thusly:
regress/netcat.c: In function 'timeout_connect':
regress/netcat.c:703: warning: passing argument 2 of 'connect' discards
qualifiers from pointer target type
regress/netcat.c:709: warning: passing argument 4 of 'getsockopt' from
incompatible pointer type
regress/netcat.c: In function 'local_listen':
regress/netcat.c:735: warning: unused variable 'x'
regress/netcat.c:735: warning: unused variable 'ret'
regress/netcat.c: In function 'fdpass':
regress/netcat.c:1037: error: 'struct msghdr' has no member named
'msg_control'
regress/netcat.c:1038: error: 'struct msghdr' has no member named
'msg_controllen'
regress/netcat.c:1039: error: 'struct msghdr' has no member named
'msg_controllen'
regress/netcat.c:1039: error: 'struct msghdr' has no member named
'msg_control'
regress/netcat.c: In function 'set_common_sockopts':
regress/netcat.c:1196: warning: passing argument 4 of 'setsockopt' from
incompatible pointer type
regress/netcat.c:1201: warning: passing argument 4 of 'setsockopt' from
incompatible pointer type
regress/netcat.c:1206: warning: passing argument 4 of 'setsockopt' from
incompatible pointer type
regress/netcat.c:1211: warning: passing argument 4 of 'setsockopt' from
incompatible pointer type
regress/netcat.c: In function 'decode_addrport':
regress/netcat.c:1419: warning: comparison between signed and unsigned
make: *** [regress/netcat] Error 1

I guess that is what you meant about structure differences.
It looks like on Solaris I can choose between msg_accrights* or
msg_control*/msg_flags in struct msghdr.
The latter requires _XOPEN_SOURCE and _XOPEN_SOURCE_EXTENDED which will
also require __EXTENSIONS__ or other useful things suddenly go away.

Building openssh with CC="gcc -D__EXTENSIONS__ -D_XOPEN_SOURCE
-D_XOPEN_SOURCE_EXTENDED" is possible (tested only on Solaris 9 so far).
Unfortunately now that I can finally run the testsuite I see ssh-keygen
dumps core in keygen-change.sh but all tests before that passes.

$ gdb ssh-keygen
GNU gdb (GDB) 7.8
...
Reading symbols from ssh-keygen...done.
(gdb) core regress/core
[New LWP 1]
Core was generated by
`/export/home/tgc/buildpkg/openssh/src/openssh-git/ssh-keygen -p -P
secret1 -N 2'.
Program terminated with signal SIGSEGV, Segmentation fault.
#0  0xfedb4b14 in strlen () from /usr/lib/libc.so.1
(gdb) bt
#0  0xfedb4b14 in strlen () from /usr/lib/libc.so.1
#1  0xfee07a20 in _doprnt () from /usr/lib/libc.so.1
#2  0xfee095e0 in printf () from /usr/lib/libc.so.1
#3  0x000546b0 in do_change_passphrase (pw=pw at entry=0x92954) at
ssh-keygen.c:1279
#4  0x00059420 in main (argc=0, argv=0xffbfe664) at ssh-keygen.c:2530
(gdb) fram 3
#3  0x000546b0 in do_change_passphrase (pw=pw at entry=0x92954) at
ssh-keygen.c:1279
1279            printf("Key has comment '%s'\n", comment);
(gdb) print comment
$1 = 0x0
(gdb)

I've not had time to look into this further and also I've not verified
if this happens without setting CC.

-tgc