diff options
author | Kyle Evans <kevans@FreeBSD.org> | 2019-12-31 04:53:50 +0000 |
---|---|---|
committer | Kyle Evans <kevans@FreeBSD.org> | 2019-12-31 04:53:50 +0000 |
commit | a1cedb80c6d5ead59bed88f54ff5553f2815b248 (patch) | |
tree | 985530be33dab1e2eb19e9a51810eba04f0b750a /usr.sbin | |
parent | 1c3b9acf2ed7483d48ec7d0da5df120bdf7d2d0e (diff) | |
download | src-a1cedb80c6d5ead59bed88f54ff5553f2815b248.tar.gz src-a1cedb80c6d5ead59bed88f54ff5553f2815b248.zip |
inetd: prefer strlcpy to strlen(3) check + strcpy(3), NFC
This is again functionally equivalent but more concise.
Notes
Notes:
svn path=/head/; revision=356218
Diffstat (limited to 'usr.sbin')
-rw-r--r-- | usr.sbin/inetd/inetd.c | 15 |
1 files changed, 9 insertions, 6 deletions
diff --git a/usr.sbin/inetd/inetd.c b/usr.sbin/inetd/inetd.c index 1c4f9761f028..b25d1e447ac4 100644 --- a/usr.sbin/inetd/inetd.c +++ b/usr.sbin/inetd/inetd.c @@ -1612,6 +1612,7 @@ getconfigent(void) int v6bind; #endif int i; + size_t unsz; #ifdef IPSEC policy = NULL; @@ -1832,16 +1833,18 @@ more: break; #endif case AF_UNIX: - if (strlen(sep->se_service) >= sizeof(sep->se_ctrladdr_un.sun_path)) { - syslog(LOG_ERR, +#define SUN_PATH_MAXSIZE sizeof(sep->se_ctrladdr_un.sun_path) + memset(&sep->se_ctrladdr, 0, sizeof(sep->se_ctrladdr)); + sep->se_ctrladdr_un.sun_family = sep->se_family; + if ((unsz = strlcpy(sep->se_ctrladdr_un.sun_path, + sep->se_service, SUN_PATH_MAXSIZE) >= SUN_PATH_MAXSIZE)) { + syslog(LOG_ERR, "domain socket pathname too long for service %s", sep->se_service); goto more; } - memset(&sep->se_ctrladdr, 0, sizeof(sep->se_ctrladdr)); - sep->se_ctrladdr_un.sun_family = sep->se_family; - sep->se_ctrladdr_un.sun_len = strlen(sep->se_service); - strcpy(sep->se_ctrladdr_un.sun_path, sep->se_service); + sep->se_ctrladdr_un.sun_len = unsz; +#undef SUN_PATH_MAXSIZE sep->se_ctrladdr_size = SUN_LEN(&sep->se_ctrladdr_un); } arg = sskip(&cp); |