diff options
author | Joseph Sutton <josephsutton@catalyst.net.nz> | 2023-02-27 12:19:08 +1300 |
---|---|---|
committer | Jule Anger <janger@samba.org> | 2023-03-20 10:03:50 +0100 |
commit | 9c9a03d020addea342b48eb962c8ba7749fbc74c (patch) | |
tree | 6ce7737b7a68322e7b527f3607234727e5444ea8 | |
parent | db65f5f76287afcd4ca4037a7029b63744317e5f (diff) | |
download | samba-9c9a03d020addea342b48eb962c8ba7749fbc74c.tar.gz |
CVE-2023-0614 s4-dsdb: Add samdb_result_dom_sid_buf()
This function parses a SID from an ldb_message, similar to
samdb_result_dom_sid(), but does it without allocating anything.
BUG: https://bugzilla.samba.org/show_bug.cgi?id=15270
Signed-off-by: Joseph Sutton <josephsutton@catalyst.net.nz>
Reviewed-by: Andrew Bartlett <abartlet@samba.org>
-rw-r--r-- | source4/dsdb/common/util.c | 20 |
1 files changed, 20 insertions, 0 deletions
diff --git a/source4/dsdb/common/util.c b/source4/dsdb/common/util.c index 55940227106..58040a62165 100644 --- a/source4/dsdb/common/util.c +++ b/source4/dsdb/common/util.c @@ -366,6 +366,26 @@ struct dom_sid *samdb_result_dom_sid(TALLOC_CTX *mem_ctx, const struct ldb_messa } /* + pull a dom_sid structure from a objectSid in a result set. +*/ +int samdb_result_dom_sid_buf(const struct ldb_message *msg, + const char *attr, + struct dom_sid *sid) +{ + ssize_t ret; + const struct ldb_val *v = NULL; + v = ldb_msg_find_ldb_val(msg, attr); + if (v == NULL) { + return LDB_ERR_NO_SUCH_ATTRIBUTE; + } + ret = sid_parse(v->data, v->length, sid); + if (ret == -1) { + return LDB_ERR_OPERATIONS_ERROR; + } + return LDB_SUCCESS; +} + +/* pull a guid structure from a objectGUID in a result set. */ struct GUID samdb_result_guid(const struct ldb_message *msg, const char *attr) |