Subject: bin/10049: libexec/getty/main.c stuff
To: None <gnats-bugs@gnats.netbsd.org>
From: None <steinarh@pvv.ntnu.no>
List: netbsd-bugs
Date: 05/05/2000 04:48:19
>Number: 10049
>Category: bin
>Synopsis: libexec/getty/main.c stuff
>Confidential: no
>Severity: non-critical
>Priority: high
>Responsible: bin-bug-people
>State: open
>Class: change-request
>Submitter-Id: net
>Arrival-Date: Fri May 05 04:49:01 PDT 2000
>Closed-Date:
>Last-Modified:
>Originator: Steinar Hamre
>Release: 2000-05-04 <NetBSD-current source date>
>Organization:
Programvareverkstedet
Norwegian University of Technology and Science
>Environment:
System: NetBSD lizard.pvv.ntnu.no 1.4X NetBSD 1.4X (LIZARD) #2: Thu May 4 16:02:17 CEST 2000 root@lizard.pvv.ntnu.no:/usr/src/sys/arch/i386/compile/LIZARD i386
>Description:
Possible buffer overflow if %: occurs in gettytab.
Misplaced }
Rewrite of SCCS-workaround. (Is this still necessary?)
Implemented %c as a way to get a ``:'' character in string.
Example:
Pc2|Pc console 2:\
:lm=Login%c :tc=Pc
(we might want a more general solution like %072 )
>How-To-Repeat:
>Fix:
Index: libexec/getty/gettytab.5
===================================================================
RCS file: /cvsroot/basesrc/libexec/getty/gettytab.5,v
retrieving revision 1.24
diff -c -r1.24 gettytab.5
*** gettytab.5 2000/01/04 13:51:55 1.24
--- gettytab.5 2000/05/05 11:43:13
***************
*** 308,313 ****
--- 308,317 ----
operating system, and version of the kernel, respectively, as
returned by
.Xr uname 3 .
+ .It \&%c
+ A
+ .Dq \&:
+ character.
.It \&%%
A
.Dq %
Index: libexec/getty/main.c
===================================================================
RCS file: /cvsroot/basesrc/libexec/getty/main.c,v
retrieving revision 1.31
diff -c -r1.31 main.c
*** main.c 2000/01/14 02:10:08 1.31
--- main.c 2000/05/05 11:43:13
***************
*** 661,672 ****
xputs(editedhost);
break;
! case 'd': {
! static char fmt[] = "%l:% %p on %A, %d %B %Y";
!
! fmt[4] = 'M'; /* I *hate* SCCS... */
(void)time(&t);
! (void)strftime(db, sizeof(db), fmt, localtime(&t));
xputs(db);
break;
--- 661,672 ----
xputs(editedhost);
break;
! case 'd':
(void)time(&t);
! (void)strftime(db, sizeof(db),
! /* stupid SCCS eats %M% */
! "%l:%M" "%p on %A, %d %B %Y",
! localtime(&t));
xputs(db);
break;
***************
*** 685,696 ****
case 'v':
xputs(kerninfo.version);
break;
! }
case '%':
putchr('%');
break;
}
! cp++;
}
}
--- 685,699 ----
case 'v':
xputs(kerninfo.version);
break;
!
! case 'c':
! putchr(':');
! break;
case '%':
putchr('%');
break;
}
! if (*cp) cp++;
}
}
>Release-Note:
>Audit-Trail:
>Unformatted: