[comp.sys.att] getlogin

lenny@quincy.UUCP (Lenny Tropiano) (12/09/87)

On my UNIX PC I have noticed a problem occasionally with the
getlogin(3C) system call.  At certain times I have noticed
getlogin returning "LOGIN" or "rc" instead of the user's name
who is logged in.

I know what "LOGIN" and "rc" are, but why are they showing up
for a valid logged-in user?  This is quite strange...

--- piece of code ---

	char	*getlogin();

	printf("User is: %s\n", getlogin());

--- end piece of code ---

Any suggestions?  I have recreated the /etc/utmp, /etc/wtmp and
this hasn't cleared up the problem.  Sometimes it goes away
and other times it comes back.

						Thanks,
						Lenny
-- 
Lenny Tropiano                  UUCP:      ...uunet!godfre!quincy!lenny  -or-
American LP Systems, Inc.        ...cmcl2!phri!bc-cis!icus!quincy!lenny  -or-
1777-18 Veterans Memorial Hwy.   	          ...mtune!quincy!lenny  -or
Islandia, New York 11722     +1 516-582-5525 ...ihnp4!icus!quincy!lenny

ignatz@chinet.UUCP (Dave Ihnat) (12/12/87)

Yep; I've seen this one, when I was porting 'mdm'.  I'll bet you're
running more than one shell login window.  It seems that getlogin() isn't
quite swift enough to differentiate between the physical device--probably
'console'--and the virtual windows 'w1', 'w2', etc. on that device; so
it'll return whatever it finds first in /etc/utmp.  I haven't spent
the time yet to yank the object out of the library, rewrite it, stuff
it back in the library, etc.  Not to mention having to muddle around
in the shared library...
-- 
			Dave Ihnat
			ihnp4!homebru!ignatz || ihnp4!chinet!ignatz
			(w) (312) 882-4673

lenny@icus.UUCP (Lenny Tropiano) (08/15/88)

In article <578@proxftl.UUCP> aaron@proxftl.UUCP (Aaron Zimmerman) writes:
|>I have a curious problem on my 3b1...
|>
...
|>$ who am i
|>aaron      w4           Aug 12 08:01
|>$ passwd
|>Changing password for LOGIN
|>Permission denied.
...

The problem occurs not in passwd (or the /etc/passwd file), but in the
getlogin(3C) function call.    This problem occurs if you use multiple
getty's on /dev/window, or you have something running on w1 when the
getty respawns for /dev/window.

The following example with show this:

lenny    + w1           Aug 14 20:05   .     4428  
root     + w4           Aug 14 21:51   .     5623  

(Note:  I'm logged in with two gettys, the current one is w4).

# tty
/dev/w4
# passwd
Changing password for lenny
New password: [...]

getlogin(3C) looks up the /dev/window login finding the first entry in
/etc/utmp it finds.  I maybe logged in on w4 as root, but getlogin thinks
I am logged in as lenny on w1.  In your case with user LOGIN, it found was a
LOGIN_PROCESS.	(A "getty" process waiting for login)

Something like:

LOGIN    + window       Aug 14 21:54   .     5880  
root     + w4           Aug 14 21:51   .     5623  

Those are the disadvantages in running multiple gettys, although having
the capability to login more than once is nice. (Something I'm working into
the window-manager I am rewriting).

-Lenny
-- 
Paper-net: Lenny Tropiano          | @-net:         lenny@icus.UUCP
           ICUS Software Systems   | !-net:      ...sbcs   \
           PO Box 1                |                boulder \
           Islip Terrace, NY 11752 |                talcott  !icus!lenny
Vocal-net: (516) 582-5525 [work]   |                pacbell /
           (516) 968-8576 [home]   |                hombre /
Telex-net: 154232428 ICUS          | Another-net:   attmail!icus!lenny

woods@gpu.utcs.toronto.edu (Greg Woods) (08/16/88)

In article <467@icus.UUCP> lenny@icus.UUCP (Lenny Tropiano) writes:
>In article <578@proxftl.UUCP> aaron@proxftl.UUCP (Aaron Zimmerman) writes:
>|>I have a curious problem on my 3b1...
>|>
>...
>|>$ who am i
>|>aaron      w4           Aug 12 08:01
>|>$ passwd
>|>Changing password for LOGIN
>|>Permission denied.
>...
>
>The problem occurs not in passwd (or the /etc/passwd file), but in the
>getlogin(3C) function call.    This problem occurs if you use multiple
>getty's on /dev/window, or you have something running on w1 when the
>getty respawns for /dev/window.

I've also had this problem with 386/ix, when a getty in the LOGIN state
dies abnormally.  A 'who -a' shows LOGIN and xyzzy both on the port, but
it gives an exit status for LOGIN.

I'd call this a bug (and I will bug-report it too).  The problem occurs
with any utility that calls getlogin(3C), including mail, etc.
-- 
						Greg Woods.

UUCP: utgpu!woods, utgpu!{ontmoh, ontmoh!ixpierre}!woods
VOICE: (416) 242-7572 [h]		LOCATION: Toronto, Ontario, Canada