Project

General

Profile

Bug #56 » solaris-ttymon.patch

Igor Pashev, 2013-07-27 06:31 PM

View differences:

src/login.c 2013-07-27 19:33:24.107846041 +0400 → src/login.c 2013-07-27 19:33:47.744886053 +0400
517 517
int main (int argc, char **argv)
518 518
{
519 519
	const char *tmptty;
520
	const char *ttyprompt;
520 521
	char tty[BUFSIZ];
521 522

  
522 523
#ifdef RLOGIN
......
628 629

  
629 630
	setup_tty ();
630 631

  
632
	ttyprompt = getenv("TTYPROMPT");
633

  
631 634
#ifndef USE_PAM
632 635
	(void) umask (getdef_num ("UMASK", GETDEF_DEFAULT_UMASK));
633 636

  
......
735 738
		char hostn[256];
736 739
		char loginprompt[256];	/* That's one hell of a prompt :) */
737 740

  
738
		/* Make the login prompt look like we want it */
739
		if (gethostname (hostn, sizeof (hostn)) == 0) {
740
			snprintf (loginprompt,
741
			          sizeof (loginprompt),
742
			          _("%s login: "), hostn);
741
		if (ttyprompt == NULL || ttyprompt[0] == '\0') {
742
			/* Make the login prompt look like we want it */
743
			if (gethostname (hostn, sizeof (hostn)) == 0) {
744
				snprintf (loginprompt,
745
						  sizeof (loginprompt),
746
						  _("%s login: "), hostn);
747
			} else {
748
				strncpy (loginprompt, _("login: "),
749
						 sizeof (loginprompt));
750
			}
751

  
752
			retcode = pam_set_item (pamh, PAM_USER_PROMPT, loginprompt);
753
			PAM_FAIL_CHECK;
743 754
		} else {
744
			strncpy (loginprompt, _("login: "),
745
			         sizeof (loginprompt));
755
			ssize_t r;
756
			size_t n;
757
			retcode = pam_set_item (pamh, PAM_USER_PROMPT, ttyprompt);
758
			PAM_FAIL_CHECK;
759
			r = getline(&username, &n, stdin);
760
			if (r > 0) {
761
				if (username[r-1] == '\n')
762
					username[r-1] = '\0';
763
				retcode = pam_set_item (pamh, PAM_USER, username);
764
				PAM_FAIL_CHECK;
765
			}
746 766
		}
747 767

  
748
		retcode = pam_set_item (pamh, PAM_USER_PROMPT, loginprompt);
749
		PAM_FAIL_CHECK;
750

  
751 768
		/* if we didn't get a user on the command line,
752 769
		   set it to NULL */
753 770
		get_pam_user (&pam_user);
(2-2/2)