diff options
author | Cy Schubert <cy@FreeBSD.org> | 2022-11-24 15:07:43 +0000 |
---|---|---|
committer | Cy Schubert <cy@FreeBSD.org> | 2022-12-01 14:25:52 +0000 |
commit | 7b07c9924f2de5a2d7b9951611770de45c6f8dab (patch) | |
tree | 4230aab059674268051b7c4204d2cd156e0c0cb2 | |
parent | 709a426717c9d8e9eedf92a07f5410f6c05409ac (diff) | |
download | src-7b07c9924f2de5a2d7b9951611770de45c6f8dab.tar.gz src-7b07c9924f2de5a2d7b9951611770de45c6f8dab.zip |
heimdal: Handle other types of garbage data
In addition to garbage realm data, also handle garbage dbname, acl_file,
stash_file, and invalid bitmask garbage data.
PR: 267912
Reported by: Robert Morris <rtm@lcs.mit.edu>
(cherry picked from commit 91db848212e3b95cc689a1e8133a1d550b524919)
-rw-r--r-- | crypto/heimdal/lib/kadm5/marshall.c | 26 |
1 files changed, 26 insertions, 0 deletions
diff --git a/crypto/heimdal/lib/kadm5/marshall.c b/crypto/heimdal/lib/kadm5/marshall.c index 38b9855021b2..fa7388b692fe 100644 --- a/crypto/heimdal/lib/kadm5/marshall.c +++ b/crypto/heimdal/lib/kadm5/marshall.c @@ -333,12 +333,38 @@ _kadm5_unmarshal_params(krb5_context context, ret = krb5_ret_int32(sp, &mask); if (ret) goto out; + if (mask & KADM5_CONFIG_REALM & KADM5_CONFIG_DBNAME + & KADM5_CONFIG_ACL_FILE & KADM5_CONFIG_STASH_FILE) { + ret = EINVAL; + goto out; + } params->mask = mask; if (params->mask & KADM5_CONFIG_REALM) { ret = krb5_ret_string(sp, ¶ms->realm); if (params->realm == NULL) { ret = EINVAL; + goto out; + } + } + if (params->mask & KADM5_CONFIG_DBNAME) { + ret = krb5_ret_string(sp, ¶ms->dbname); + if (params->dbname == NULL) { + ret = EINVAL; + goto out; + } + } + if (params->mask & KADM5_CONFIG_ACL_FILE) { + ret = krb5_ret_string(sp, ¶ms->acl_file); + if (params->acl_file == NULL) { + ret = EINVAL; + goto out; + } + } + if (params->mask & KADM5_CONFIG_STASH_FILE) { + ret = krb5_ret_string(sp, ¶ms->stash_file); + if (params->stash_file == NULL) { + ret = EINVAL; } } out: |