diff options
author | Anurag S. Maskey <Anurag.Maskey@Sun.COM> | 2008-12-22 08:25:23 -0500 |
---|---|---|
committer | Anurag S. Maskey <Anurag.Maskey@Sun.COM> | 2008-12-22 08:25:23 -0500 |
commit | a9489f613f667faf21ee68381b627b28ddb22188 (patch) | |
tree | 0d3ce994a031c6abc30f4750a1d5d2507363699d /usr/src/lib/libdladm | |
parent | b8ef3d63f88370c11b7163620bbc1206301d39d5 (diff) | |
download | illumos-joyent-a9489f613f667faf21ee68381b627b28ddb22188.tar.gz |
6766937 nwam fails to configure wpa secured wireless network (ath) automatically
Diffstat (limited to 'usr/src/lib/libdladm')
-rw-r--r-- | usr/src/lib/libdladm/common/libdllink.h | 1 | ||||
-rw-r--r-- | usr/src/lib/libdladm/common/mapfile-vers | 1 | ||||
-rw-r--r-- | usr/src/lib/libdladm/common/secobj.c | 25 |
3 files changed, 27 insertions, 0 deletions
diff --git a/usr/src/lib/libdladm/common/libdllink.h b/usr/src/lib/libdladm/common/libdllink.h index 29d078470c..22f396c3a6 100644 --- a/usr/src/lib/libdladm/common/libdllink.h +++ b/usr/src/lib/libdladm/common/libdllink.h @@ -145,6 +145,7 @@ extern dladm_status_t dladm_str2secobjclass(const char *, extern dladm_status_t dladm_init_linkprop(datalink_id_t, boolean_t); extern dladm_status_t dladm_init_secobj(void); +extern boolean_t dladm_valid_secobj_name(const char *); extern dladm_status_t dladm_create_datalink_id(const char *, datalink_class_t, uint_t, uint32_t, datalink_id_t *); diff --git a/usr/src/lib/libdladm/common/mapfile-vers b/usr/src/lib/libdladm/common/mapfile-vers index 4d6fdce190..fbdcb31521 100644 --- a/usr/src/lib/libdladm/common/mapfile-vers +++ b/usr/src/lib/libdladm/common/mapfile-vers @@ -38,6 +38,7 @@ SUNWprivate_1.1 { dladm_get_linkprop; dladm_set_linkprop; dladm_walk_linkprop; + dladm_valid_secobj_name; dladm_init_secobj; dladm_get_secobj; dladm_set_secobj; diff --git a/usr/src/lib/libdladm/common/secobj.c b/usr/src/lib/libdladm/common/secobj.c index 6199f32001..cf9b262a9b 100644 --- a/usr/src/lib/libdladm/common/secobj.c +++ b/usr/src/lib/libdladm/common/secobj.c @@ -130,6 +130,9 @@ dladm_set_secobj(const char *obj_name, dladm_secobj_class_t class, dld_ioc_secobj_set_t secobj_set; dld_secobj_t *objp; + if (!dladm_valid_secobj_name(obj_name)) + return (DLADM_STATUS_BADARG); + if (!dladm_check_secobjclass(class) || flags == 0 || obj_name == NULL || strlen(obj_name) > DLD_SECOBJ_NAME_MAX || obj_val == NULL || obj_len == 0 || obj_len > DLD_SECOBJ_VAL_MAX) @@ -651,3 +654,25 @@ dladm_init_secobj(void) return (SECOBJ_RW_DB(&state, B_FALSE)); } + +boolean_t +dladm_valid_secobj_name(const char *secobj_name) +{ + size_t len = strlen(secobj_name); + const char *cp; + + if (len + 1 > DLADM_SECOBJ_NAME_MAX) + return (B_FALSE); + + /* + * The legal characters in a secobj name are: + * alphanumeric (a-z, A-Z, 0-9), '.', '_', '-'. + */ + for (cp = secobj_name; *cp != '\0'; cp++) { + if (!isalnum(*cp) && + (*cp != '.') && (*cp != '_') && (*cp != '-')) + return (B_FALSE); + } + + return (B_TRUE); +} |