View | Details | Raw Unified | Return to bug 49593
Collapse All | Expand All

(-)a/source4/dsdb/samdb/ldb_modules/util.c (-1 / +12 lines)
 Lines 1049-1057   again: Link Here 
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
}

Return to bug 49593