MCPcopy Create free account
hub / github.com/DeusData/codebase-memory-mcp / win_runtime_directory_secure

Function win_runtime_directory_secure

src/daemon/ipc.c:4114–4179  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

4112}
4113
4114static bool win_runtime_directory_secure(const wchar_t *runtime_dir) {
4115 win_security_t security;
4116 if (!win_security_init(&security)) {
4117 return false;
4118 }
4119 bool created = CreateDirectoryW(runtime_dir, &security.directory_attributes) != 0;
4120 if (!created && GetLastError() != ERROR_ALREADY_EXISTS) {
4121 win_security_destroy(&security);
4122 return false;
4123 }
4124 DWORD attributes = GetFileAttributesW(runtime_dir);
4125 if (attributes == INVALID_FILE_ATTRIBUTES || (attributes & FILE_ATTRIBUTE_DIRECTORY) == 0 ||
4126 (attributes & FILE_ATTRIBUTE_REPARSE_POINT) != 0) {
4127 win_security_destroy(&security);
4128 return false;
4129 }
4130 HANDLE directory =
4131 CreateFileW(runtime_dir, READ_CONTROL | WRITE_DAC | WRITE_OWNER,
4132 FILE_SHARE_READ | FILE_SHARE_WRITE | FILE_SHARE_DELETE, NULL, OPEN_EXISTING,
4133 FILE_FLAG_BACKUP_SEMANTICS | FILE_FLAG_OPEN_REPARSE_POINT, NULL);
4134 bool can_write_owner = directory != INVALID_HANDLE_VALUE;
4135 if (!can_write_owner) {
4136 directory =
4137 CreateFileW(runtime_dir, READ_CONTROL | WRITE_DAC,
4138 FILE_SHARE_READ | FILE_SHARE_WRITE | FILE_SHARE_DELETE, NULL, OPEN_EXISTING,
4139 FILE_FLAG_BACKUP_SEMANTICS | FILE_FLAG_OPEN_REPARSE_POINT, NULL);
4140 }
4141 if (directory == INVALID_HANDLE_VALUE) {
4142 win_security_destroy(&security);
4143 return false;
4144 }
4145 BY_HANDLE_FILE_INFORMATION file_info;
4146 bool valid_handle = GetFileInformationByHandle(directory, &file_info) != 0 &&
4147 (file_info.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) != 0 &&
4148 (file_info.dwFileAttributes & FILE_ATTRIBUTE_REPARSE_POINT) == 0;
4149 bool owner_exact = valid_handle && win_file_owner_secure(&security, directory, true);
4150 /* One-time normalization of the admin-group default-owner artifact: a
4151 * directory created by plain mkdir under an Administrators-default-owner
4152 * token (standard policy on Windows Server) is born owned by BUILTIN\
4153 * Administrators even though it is this account's own private dir. A
4154 * TRUSTED owner (the launcher's directory policy: SYSTEM, Administrators,
4155 * TrustedInstaller) is re-stamped to the exact token user inside the same
4156 * repair that already re-protects the DACL; any other owner remains
4157 * refused, and the final validation below still demands the exact user. */
4158 bool owner_ok = owner_exact || (valid_handle && can_write_owner &&
4159 win_file_owner_secure(&security, directory, false));
4160 DWORD secure_result = ERROR_ACCESS_DENIED;
4161 if (valid_handle && owner_ok) {
4162 secure_result = security.set_security_info(
4163 directory, SE_FILE_OBJECT,
4164 (owner_exact ? 0U : (DWORD)OWNER_SECURITY_INFORMATION) | DACL_SECURITY_INFORMATION |
4165 PROTECTED_DACL_SECURITY_INFORMATION,
4166 owner_exact ? NULL : security.user_sid, NULL, security.directory_acl, NULL);
4167 }
4168 if (valid_handle && owner_ok && secure_result != ERROR_SUCCESS) {
4169 ipc_validation_detail_set("owner/DACL repair failed (status %lu%s)",
4170 (unsigned long)secure_result,
4171 can_write_owner ? "" : ", WRITE_OWNER unavailable");

Callers 1

Calls 6

win_security_initFunction · 0.85
win_security_destroyFunction · 0.85
win_file_owner_secureFunction · 0.85
win_file_security_secureFunction · 0.85

Tested by

no test coverage detected