diff options
author | Dag-Erling Smørgrav <des@FreeBSD.org> | 2022-11-04 14:43:06 +0000 |
---|---|---|
committer | Dag-Erling Smørgrav <des@FreeBSD.org> | 2022-11-04 14:54:01 +0000 |
commit | eb4d86d529e2523a19fd7454976923319954a49d (patch) | |
tree | 10a9a724df9917bb12212e4dbcad816d57d02bf3 /libexec | |
parent | f285f41498ebe0bfc1dbe47d67af12ec2d131521 (diff) | |
download | src-eb4d86d529e2523a19fd7454976923319954a49d.tar.gz src-eb4d86d529e2523a19fd7454976923319954a49d.zip |
getty: Avoid NULL deref if stdin is not a tty.
Sponsored by: Klara, Inc.
Obtained from: Apple OSS Distributions
Differential Revision: https://reviews.freebsd.org/D37265
Diffstat (limited to 'libexec')
-rw-r--r-- | libexec/getty/main.c | 11 |
1 files changed, 8 insertions, 3 deletions
diff --git a/libexec/getty/main.c b/libexec/getty/main.c index bc01ab83b8b2..b8af86c22e92 100644 --- a/libexec/getty/main.c +++ b/libexec/getty/main.c @@ -212,9 +212,14 @@ main(int argc, char *argv[]) * that the file descriptors are already set up for us. * J. Gettys - MIT Project Athena. */ - if (argc <= 2 || strcmp(argv[2], "-") == 0) - snprintf(ttyn, sizeof(ttyn), "%s", ttyname(STDIN_FILENO)); - else { + if (argc <= 2 || strcmp(argv[2], "-") == 0) { + char *n = ttyname(STDIN_FILENO); + if (n == NULL) { + syslog(LOG_ERR, "ttyname: %m"); + exit(1); + } + snprintf(ttyn, sizeof(ttyn), "%s", n); + } else { snprintf(ttyn, sizeof(ttyn), "%s%s", _PATH_DEV, argv[2]); if (strcmp(argv[0], "+") != 0) { chown(ttyn, 0, 0); |