From 2276490a6a448e0e6847db287c96c2272546602e Mon Sep 17 00:00:00 2001 From: mm Date: Sun, 9 Sep 2012 20:26:19 +0000 Subject: [PATCH] MFC r230454 (pjd): Use provided name when allocating ksid domain. It isn't really used on FreeBSD, but should fix a panic when pool is imported from another OS that is using this. MFC r240162 (mm): Make r230454 more readable and vendor-like. PR: kern/171380 Approved by: re (kib) git-svn-id: svn://svn.freebsd.org/base/releng/9.1@240288 ccf9f872-aa2e-dd11-9fc8-001c23d0bc1f --- sys/cddl/compat/opensolaris/sys/sid.h | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/sys/cddl/compat/opensolaris/sys/sid.h b/sys/cddl/compat/opensolaris/sys/sid.h index d6c1b0cf..26bfdaad 100644 --- a/sys/cddl/compat/opensolaris/sys/sid.h +++ b/sys/cddl/compat/opensolaris/sys/sid.h @@ -30,7 +30,8 @@ #define _OPENSOLARIS_SYS_SID_H_ typedef struct ksiddomain { - char kd_name[16]; /* Domain part of SID */ + char *kd_name; /* Domain part of SID */ + uint_t kd_len; } ksiddomain_t; typedef void ksid_t; @@ -38,9 +39,13 @@ static __inline ksiddomain_t * ksid_lookupdomain(const char *domain) { ksiddomain_t *kd; + size_t len; + len = strlen(domain) + 1; kd = kmem_alloc(sizeof(*kd), KM_SLEEP); - strlcpy(kd->kd_name, "FreeBSD", sizeof(kd->kd_name)); + kd->kd_len = (uint_t)len; + kd->kd_name = kmem_alloc(len, KM_SLEEP); + strcpy(kd->kd_name, domain); return (kd); } @@ -48,6 +53,7 @@ static __inline void ksiddomain_rele(ksiddomain_t *kd) { + kmem_free(kd->kd_name, kd->kd_len); kmem_free(kd, sizeof(*kd)); } -- 2.42.0