This one has me perplexed. OpenSSH6.4p1 on a FreeBSD 7 box (I know it's old; it's being replaced this month). I can't spot anything changed in OpenSSH commit logs or git blame of the current file. I ssh into the box from a system with OpenSSH6.6p1 and three keys loaded, RSA, ECDSA and ED25519. As expected, key_from_blob and key_fingerprint complain about the ED25519 key in the agent, because they can't handle it. Not a problem. However, in this scenario, "ssh-add -l" will only produce output to stdout if stdout is a tty. "ssh-add -L" reliably produces output to stdout. "ssh-add -l" reliably produces output to stdout _unless_ it can't parse one of the blobs from the agent. ktrace outputs of the working and non-working scenarios below. As you can see, in the broken scenario there's no I/O to stdout. Can anyone explain what's going on, please? -Phil % ktrace ssh-add -l 2>/dev/null 3072 8b:c1:ae:d1:48:5d:a1:c6:1b:3d:50:e1:6b:cd:65:32 /home/pdp/.ssh/id_rsa (RSA) 521 ee:2e:72:bc:53:6d:c2:57:42:2a:3d:e3:67:85:27:a6 /home/pdp/.ssh/id_ecdsa (ECDSA) % kdump |less ----------------------------8< cut here >8------------------------------ 63697 ssh-add CALL socket(PF_LOCAL,SOCK_STREAM,0) 63697 ssh-add RET socket 3 63697 ssh-add CALL fcntl(0x3,F_SETFD,FD_CLOEXEC) 63697 ssh-add RET fcntl 0 63697 ssh-add CALL connect(0x3,0x7fffffffdd80,0x6a) 63697 ssh-add NAMI "/tmp/ssh-fEfqnn0cp4/agent.63353" 63697 ssh-add RET connect 0 63697 ssh-add CALL write(0x3,0x7fffffffd930,0x4) [... ssh-agent communications, reads back keys, etc ] 63697 ssh-add CALL read(0x3,0x7fffffffd930,0x2d8) 63697 ssh-add GIO fd 3 read 728 bytes [...] 63697 ssh-add RET read 728/0x2d8 63697 ssh-add CALL fstat(0x1,0x7fffffffd420) 63697 ssh-add RET fstat 0 63697 ssh-add CALL ioctl(0x1,TIOCGETA,0x7fffffffd480) 63697 ssh-add RET ioctl 0 63697 ssh-add CALL write(0x1,0x80202c000,0x51) 63697 ssh-add GIO fd 1 wrote 81 bytes "3072 8b:c1:ae:d1:48:5d:a1:c6:1b:3d:50:e1:6b:cd:65:32 /home/pdp/.ssh/id_rsa (RSA) " 63697 ssh-add RET write 81/0x51 63697 ssh-add CALL write(0x1,0x80202c000,0x54) 63697 ssh-add GIO fd 1 wrote 84 bytes "521 ee:2e:72:bc:53:6d:c2:57:42:2a:3d:e3:67:85:27:a6 /home/pdp/.ssh/id_ecdsa (ECDSA) " 63697 ssh-add RET write 84/0x54 63697 ssh-add CALL write(0x2,0x7fffffffd7f0,0x2f) 63697 ssh-add GIO fd 2 wrote 47 bytes "key_from_blob: remaining bytes in key blob 36\r " 63697 ssh-add RET write 47/0x2f 63697 ssh-add CALL write(0x2,0x7fffffffd880,0x32) 63697 ssh-add GIO fd 2 wrote 50 bytes "key_fingerprint: null from key_fingerprint_raw()\r " 63697 ssh-add RET write 50/0x32 63697 ssh-add CALL exit(0xff) ----------------------------8< cut here >8------------------------------ % ktrace ssh-add -l 2>/dev/null | cat ----------------------------8< cut here >8------------------------------ 64004 ssh-add CALL socket(PF_LOCAL,SOCK_STREAM,0) 64004 ssh-add RET socket 3 64004 ssh-add CALL fcntl(0x3,F_SETFD,FD_CLOEXEC) 64004 ssh-add RET fcntl 0 64004 ssh-add CALL connect(0x3,0x7fffffffdd90,0x6a) 64004 ssh-add NAMI "/tmp/ssh-74wsYwRh3v/agent.62945" 64004 ssh-add RET connect 0 64004 ssh-add CALL write(0x3,0x7fffffffd940,0x4) [... ssh-agent communications, reads back keys, etc ] 64004 ssh-add CALL read(0x3,0x7fffffffd940,0x2d8) 64004 ssh-add GIO fd 3 read 728 bytes [...] 64004 ssh-add RET read 728/0x2d8 64004 ssh-add CALL fstat(0x1,0x7fffffffd430) 64004 ssh-add RET fstat 0 64004 ssh-add CALL write(0x2,0x7fffffffd800,0x2f) 64004 ssh-add GIO fd 2 wrote 47 bytes "key_from_blob: remaining bytes in key blob 36\r " 64004 ssh-add RET write 47/0x2f 64004 ssh-add CALL write(0x2,0x7fffffffd890,0x32) 64004 ssh-add GIO fd 2 wrote 50 bytes "key_fingerprint: null from key_fingerprint_raw()\r " 64004 ssh-add RET write 50/0x32 64004 ssh-add CALL exit(0xff) ----------------------------8< cut here >8------------------------------ _______________________________________________ openssh-unix-dev mailing list openssh-unix-dev@xxxxxxxxxxx https://lists.mindrot.org/mailman/listinfo/openssh-unix-dev