aboutsummaryrefslogtreecommitdiff
path: root/libexec
diff options
context:
space:
mode:
authorDag-Erling Smørgrav <des@FreeBSD.org>2022-11-04 14:43:06 +0000
committerDag-Erling Smørgrav <des@FreeBSD.org>2022-11-04 14:54:01 +0000
commiteb4d86d529e2523a19fd7454976923319954a49d (patch)
tree10a9a724df9917bb12212e4dbcad816d57d02bf3 /libexec
parentf285f41498ebe0bfc1dbe47d67af12ec2d131521 (diff)
downloadsrc-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.c11
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);