4.[123]bsd stty command gives garbage for exotic speed codes (with fix)
Arthur David Olson
ado at elsie.UUCP
Wed Apr 30 06:07:43 AEST 1986
Index: bin/stty.c Fix
Description:
The stty command gives wild output for speed values outside the
range it knows about.
Repeat-By:
Compile this source into a.out:
#
#include "sgtty.h"
main(argc, argv)
int argc;
char * argv[];
{
struct sgttyb old, new;
gtty(0, &old);
new = old;
new.sg_ispeed = new.sg_ospeed = atoi(argv[1]);
stty(0, &new);
(void) system("stty 2>&1 1>&0");
stty(0, &old);
return 0;
}
then type in the command
a.out 20 > results ; cat results
and note the "speed" portion of the output:
. . .speed 1701707883 baud; . . .
Fix:
The fix is to stty.c, in particular to the function prspeed.
The changes are shown below, conditioned on OLDVERSION.
As usual, the trade secret status of the code involved precludes
a clearer posting.
prspeed(c, s)
char *c;
{
#ifdef OLDVERSION
fprintf(stderr,"%s%d baud", c, speed[s]);
#else
if (s < 0 || s >= sizeof speed / sizeof speed[0])
(void) fprintf(stderr, "%scode %d", c, s);
else (void) fprintf(stderr, "%s%d baud", c, speed[s]);
#endif OLDVERSION
}
--
UUCP: ..decvax!seismo!elsie!ado ARPA: elsie!ado at seismo.ARPA
DEC, VAX, Elsie & Ado are Digital, Borden & Shakespeare trademarks.
More information about the Comp.bugs.4bsd.ucb-fixes
mailing list