52 lines
1.5 KiB
Diff
52 lines
1.5 KiB
Diff
From 652fecd7d037992b89ed1a4eb17f9f467c2aadf7 Mon Sep 17 00:00:00 2001
|
|
From: Joseph Sutton <josephsutton@catalyst.net.nz>
|
|
Date: Mon, 27 Feb 2023 12:19:08 +1300
|
|
Subject: [PATCH 22/34] 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>
|
|
|
|
Conflict: NA
|
|
Reference: https://attachments.samba.org/attachment.cgi?id=17821
|
|
---
|
|
source4/dsdb/common/util.c | 20 ++++++++++++++++++++
|
|
1 file changed, 20 insertions(+)
|
|
|
|
diff --git a/source4/dsdb/common/util.c b/source4/dsdb/common/util.c
|
|
index a30ae662c1e..b556f06cb63 100644
|
|
--- a/source4/dsdb/common/util.c
|
|
+++ b/source4/dsdb/common/util.c
|
|
@@ -365,6 +365,26 @@ struct dom_sid *samdb_result_dom_sid(TALLOC_CTX *mem_ctx, const struct ldb_messa
|
|
return sid;
|
|
}
|
|
|
|
+/*
|
|
+ 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.
|
|
*/
|
|
--
|
|
2.25.1
|