Steve VanDevender writes:
> Something really hosed Digital/Tru64 UNIX SIA support in 2.5.2p1.
Now that I look closer, I notice that in session.c, this stayed the same
in session.c:do_child():
#ifdef HAVE_OSF_SIA
session_setup_sia(pw->pw_name, ttyname);
#else /* HAVE_OSF_SIA */
But between 2.5.1p2 and 2.5.2p1, the declaration of do_child() changed
to remove the ttyname parameter:
***************
*** 1008,1018 ****
* ids, and executing the command or shell.
*/
void
! do_child(const char *command, struct passwd * pw, const char *term,
! const char *display, const char *auth_proto,
! const char *auth_data, const char *ttyname)
{
const char *shell, *hostname = NULL, *cp = NULL;
char buf[256];
char cmd[1024];
FILE *f = NULL;
--- 1000,1009 ----
* ids, and executing the command or shell.
*/
void
! do_child(Session *s, const char *command)
{
const char *shell, *hostname = NULL, *cp = NULL;
+ struct passwd * pw = s->pw;
char buf[256];
char cmd[1024];
FILE *f = NULL;
This means that the 'ttyname' that is being passed to session_setup_sia
is a function pointer to the ttyname() function, not the name of the
tty. I'm not sure how this results in only the first eight characters
of the real tty name being recorded, but it's clearly the Wrong Thing.
This explains the problem I'm having with SIA in Digital UNIX, but it's
not immediately obvious to me how to fix it. This is probably also
breaking the AIX code which refers to ttyname later in do_child.