Date: Thu, 8 Aug 2013 02:11:49 GMT From: Garrett Cooper <yaneurabeya@gmail.com> To: freebsd-gnats-submit@FreeBSD.org Subject: kern/181127: [PATCH] set{domain, host}name doesn't permit NUL terminated strings that are MAXHOSTNAMELEN long Message-ID: <201308080211.r782BnsS000117@oldred.freebsd.org> Resent-Message-ID: <201308080220.r782K0r0039941@freefall.freebsd.org>
next in thread | raw e-mail | index | archive | help
>Number: 181127 >Category: kern >Synopsis: [PATCH] set{domain,host}name doesn't permit NUL terminated strings that are MAXHOSTNAMELEN long >Confidential: no >Severity: non-critical >Priority: low >Responsible: freebsd-bugs >State: open >Quarter: >Keywords: >Date-Required: >Class: sw-bug >Submitter-Id: current-users >Arrival-Date: Thu Aug 08 02:20:00 UTC 2013 >Closed-Date: >Last-Modified: >Originator: Garrett Cooper >Release: 10-CURRENT >Organization: EMC Isilon >Environment: FreeBSD gran-tourismo.west.isilon.com 10.0-CURRENT FreeBSD 10.0-CURRENT #8 bc57ffb: Fri Aug 2 15:14:32 PDT 2013 root@:/usr/obj/usr/src/sys/GRAN-TOURISMO amd64 >Description: The noted link/patch fixes POSIX and generic requirement compliance for set{domain,host}name per the manpages by accounting for the fact that the string must be NUL terminated. Found with the NetBSD t_set{domain,host}name testcases: Before: $ pwd /usr/tests/lib/libc/gen $ sudo atf-run t_setdomainname | atf-report t_setdomainname (1/1): 3 test cases setdomainname_basic: [0.019497s] Failed: /usr/src/lib/libc/tests/gen/t_setdomainname.c:66: setdomainname(domains[i],sizeof(domains[i])) == 0 not met setdomainname_limit: [0.004173s] Passed. setdomainname_perm: [0.005297s] Passed. [0.029872s] Failed test cases: t_setdomainname:setdomainname_basic Summary for 1 test programs: 2 passed test cases. 1 failed test cases. 0 expected failed test cases. 0 skipped test cases. After: # atf-run t_setdomainname t_sethostname | atf-report t_setdomainname (1/2): 3 test cases setdomainname_basic: [0.004606s] Passed. setdomainname_limit: [0.004276s] Passed. setdomainname_perm: [0.004848s] Passed. [0.014680s] t_sethostname (2/2): 3 test cases sethostname_basic: [0.003908s] Passed. sethostname_limit: [0.004842s] Passed. sethostname_perm: [0.004738s] Passed. [0.014337s] Summary for 2 test programs: 6 passed test cases. 0 failed test cases. 0 expected failed test cases. 0 skipped test cases. >How-To-Repeat: >Fix: Patch attached with submission follows: >From 1b8333ca810b682d8ef049887a3b6cc9abd80807 Mon Sep 17 00:00:00 2001 From: Garrett Cooper <yanegomi@gmail.com> Date: Wed, 7 Aug 2013 18:59:44 -0700 Subject: [PATCH] Permit setting hostnames that are MAX_HOSTNAMELEN long and are NUL terminated Sponsored-by: EMC Isilon --- sys/kern/kern_mib.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/sys/kern/kern_mib.c b/sys/kern/kern_mib.c index c84d4b2..384c14d 100644 --- a/sys/kern/kern_mib.c +++ b/sys/kern/kern_mib.c @@ -266,7 +266,7 @@ sysctl_hostname(SYSCTL_HANDLER_ARGS) { struct prison *pr, *cpr; size_t pr_offset; - char tmpname[MAXHOSTNAMELEN]; + char tmpname[MAXHOSTNAMELEN+1]; int descend, error, len; /* @@ -314,11 +314,11 @@ sysctl_hostname(SYSCTL_HANDLER_ARGS) SYSCTL_PROC(_kern, KERN_HOSTNAME, hostname, CTLTYPE_STRING | CTLFLAG_RW | CTLFLAG_PRISON | CTLFLAG_MPSAFE, - (void *)(offsetof(struct prison, pr_hostname)), MAXHOSTNAMELEN, + (void *)(offsetof(struct prison, pr_hostname)), MAXHOSTNAMELEN+1, sysctl_hostname, "A", "Hostname"); SYSCTL_PROC(_kern, KERN_NISDOMAINNAME, domainname, CTLTYPE_STRING | CTLFLAG_RW | CTLFLAG_PRISON | CTLFLAG_MPSAFE, - (void *)(offsetof(struct prison, pr_domainname)), MAXHOSTNAMELEN, + (void *)(offsetof(struct prison, pr_domainname)), MAXHOSTNAMELEN+1, sysctl_hostname, "A", "Name of the current YP/NIS domain"); SYSCTL_PROC(_kern, KERN_HOSTUUID, hostuuid, CTLTYPE_STRING | CTLFLAG_RW | CTLFLAG_PRISON | CTLFLAG_MPSAFE, -- 1.8.3.4 >Release-Note: >Audit-Trail: >Unformatted:
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201308080211.r782BnsS000117>