|
1049 |
bool dsdb_module_am_system(struct ldb_module *module) |
1049 |
bool dsdb_module_am_system(struct ldb_module *module) |
1050 |
{ |
1050 |
{ |
1051 |
struct ldb_context *ldb = ldb_module_get_ctx(module); |
1051 |
struct ldb_context *ldb = ldb_module_get_ctx(module); |
|
|
1052 |
|
1053 |
/* Debugging / mitigation for https://forge.univention.org/bugzilla/show_bug.cgi?id=49593 */ |
1054 |
const void *ptr = ldb_get_opaque(ldb, DSDB_SESSION_INFO); |
1055 |
const char *pp = (const char *)ptr; |
1056 |
struct talloc_chunk *tc = discard_const_p(struct talloc_chunk, pp - TC_HDR_SIZE); |
1057 |
if (unlikely((tc->flags & (TALLOC_FLAG_FREE | ~TALLOC_FLAG_MASK)) != talloc_magic)) { |
1058 |
talloc_log("Bad talloc magic value - unknown value"); |
1059 |
talloc_log("Invalid DSDB_SESSION_INFO in dsdb_module_am_system\n"); |
1060 |
return false; |
1061 |
} |
1062 |
|
1052 |
struct auth_session_info *session_info |
1063 |
struct auth_session_info *session_info |
1053 |
= talloc_get_type( |
1064 |
= talloc_get_type( |
1054 |
ldb_get_opaque(ldb, DSDB_SESSION_INFO), |
1065 |
ptr, |
1055 |
struct auth_session_info); |
1066 |
struct auth_session_info); |
1056 |
return security_session_user_level(session_info, NULL) == SECURITY_SYSTEM; |
1067 |
return security_session_user_level(session_info, NULL) == SECURITY_SYSTEM; |
1057 |
} |
1068 |
} |