Date: Sun, 24 Aug 1997 09:09:38 -0700 (PDT) From: sumii@is.s.u-tokyo.ac.jp To: freebsd-gnats-submit@FreeBSD.ORG Subject: bin/4370: Getty(8) Parses 'ic' and 'ac' Fields in Gettytab(5) INCORRECTLY Message-ID: <199708241609.JAA06611@hub.freebsd.org> Resent-Message-ID: <199708241610.JAA06677@hub.freebsd.org>
next in thread | raw e-mail | index | archive | help
>Number: 4370 >Category: bin >Synopsis: Getty(8) Parses 'ic' and 'ac' Fields in Gettytab(5) INCORRECTLY >Confidential: no >Severity: non-critical >Priority: medium >Responsible: freebsd-bugs >State: open >Class: sw-bug >Submitter-Id: current-users >Arrival-Date: Sun Aug 24 09:10:01 PDT 1997 >Last-Modified: >Originator: Eijiro Sumii >Organization: Department of Information Science, Facility of Science, University of Tokyo >Release: 2.2.2-RELEASE >Environment: FreeBSD proside.sumii.or.jp 2.2.2-RELEASE FreeBSD 2.2.2-RELEASE #0: Sat Aug 2 11:21:48 JST 1997 sumii@proside.sumii.or.jp:/usr/src/sys/compile/PROSIDE+ACVC i386 >Description: Getty (8) parses 'ic' and 'ac' fields in gettytab(5) INCORRECTLY, when some escape characters are included in them. That is known by the debugging messages of getty(8) itself. The cause of this problem is two simple mistakes in the program. I think they are not corrected in FreeBSD-current now. >How-To-Repeat: An Example: 1. Edit /etc/syslog.conf to print debugging messages of getty(8). *.notice;*.debug;lpr.info;mail.crit;news.err /var/log/messages ^^^^^^^ 2. Add an entry like this to /etc/gettytab. mymodem:\ :hw:np:sp#38400:de#1:dc#255:ic="" \pATZ\r OK\r:ac=RING\r \pATA\r CONNECT: 3. Use it from init(8). % grep mymodem /etc/ttys ttyd1 "/usr/libexec/getty mymodem" dialup on insecure 4. Read the debugging messages in /var/log/messages. Aug 24 21:47:30 proside getty[491]: getty_chat script='"" pATZ^M OK' Aug 24 21:47:30 proside getty[491]: chat_expect '' Aug 24 21:47:30 proside getty[491]: chat_expect OK Aug 24 21:47:30 proside getty[491]: chat_send 'pATZ^M' ^ Here! >Fix: % diff -c /usr/src/libexec/getty/chat.c{~,} *** /usr/src/libexec/getty/chat.c~ Sat Feb 22 23:21:36 1997 --- /usr/src/libexec/getty/chat.c Sun Aug 24 22:49:51 1997 *************** *** 223,229 **** } } else { /* copy standard character */ ! *r++ == *q; } } --- 223,229 ---- } } else { /* copy standard character */ ! *r++ = *q; } } % diff -c /usr/src/libexec/getty/subr.c{~,} *** /usr/src/libexec/getty/subr.c~ Sun May 11 14:28:54 1997 --- /usr/src/libexec/getty/subr.c Sun Aug 24 22:24:56 1997 *************** *** 79,85 **** return; for (sp = gettystrs; sp->field; sp++) ! cgetstr(buf, (char*)sp->field, &sp->value); for (np = gettynums; np->field; np++) { if (cgetnum(buf, (char*)np->field, &n) == -1) np->set = 0; --- 79,85 ---- return; for (sp = gettystrs; sp->field; sp++) ! cgetustr(buf, (char*)sp->field, &sp->value); for (np = gettynums; np->field; np++) { if (cgetnum(buf, (char*)np->field, &n) == -1) np->set = 0; *************** *** 99,105 **** #ifdef DEBUG printf("name=\"%s\", buf=\"%s\"\r\n", name, buf); for (sp = gettystrs; sp->field; sp++) ! printf("cgetstr: %s=%s\r\n", sp->field, sp->value); for (np = gettynums; np->field; np++) printf("cgetnum: %s=%d\r\n", np->field, np->value); for (fp = gettyflags; fp->field; fp++) --- 99,105 ---- #ifdef DEBUG printf("name=\"%s\", buf=\"%s\"\r\n", name, buf); for (sp = gettystrs; sp->field; sp++) ! printf("cgetustr: %s=%s\r\n", sp->field, sp->value); for (np = gettynums; np->field; np++) printf("cgetnum: %s=%d\r\n", np->field, np->value); for (fp = gettyflags; fp->field; fp++) >Audit-Trail: >Unformatted:
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?199708241609.JAA06611>