mirror of
https://github.com/DeusData/codebase-memory-mcp.git
synced 2026-11-04 18:58:00 +00:00
fix(win): compile cleanly with MinGW GCC
Signed-off-by: Oxygen56 <jiangth99@163.com>
This commit is contained in:
1 parent
5e7d3eb77e
commit
52e46f3fc4
4 files changed
+30
-25
No files matched your search
+15
-14
@@ -3554,13 +3554,13 @@ static void *win_token_user_query(win_security_t *security, HANDLE token, PSID *
|
||||
return buffer;
|
||||
}
|
||||
|
||||
#define RESOLVE_ADVAPI_MEMBER(context, member, type, symbol) \
|
||||
do { \
|
||||
(context)->member = (type)GetProcAddress((context)->advapi, (symbol)); \
|
||||
if (!(context)->member) { \
|
||||
win_security_destroy((context)); \
|
||||
return false; \
|
||||
} \
|
||||
#define RESOLVE_ADVAPI_MEMBER(context, member, type, symbol) \
|
||||
do { \
|
||||
(context)->member = (type)(void (*)(void))GetProcAddress((context)->advapi, (symbol)); \
|
||||
if (!(context)->member) { \
|
||||
win_security_destroy((context)); \
|
||||
return false; \
|
||||
} \
|
||||
} while (0)
|
||||
|
||||
static bool win_security_init(win_security_t *security) {
|
||||
@@ -4619,7 +4619,8 @@ static bool win_generation_nonce(uint8_t nonce[CBM_DAEMON_IPC_WINDOWS_NONCE_SIZE
|
||||
enum { WIN_BCRYPT_USE_SYSTEM_PREFERRED_RNG = 0x00000002 };
|
||||
HMODULE bcrypt = LoadLibraryW(L"bcrypt.dll");
|
||||
bcrypt_gen_random_fn generate =
|
||||
bcrypt ? (bcrypt_gen_random_fn)GetProcAddress(bcrypt, "BCryptGenRandom") : NULL;
|
||||
bcrypt ? (bcrypt_gen_random_fn)(void (*)(void))GetProcAddress(bcrypt, "BCryptGenRandom")
|
||||
: NULL;
|
||||
LONG status = generate ? generate(NULL, nonce, CBM_DAEMON_IPC_WINDOWS_NONCE_SIZE,
|
||||
WIN_BCRYPT_USE_SYSTEM_PREFERRED_RNG)
|
||||
: (LONG)-1;
|
||||
@@ -5174,8 +5175,8 @@ static bool win_pipe_client_is_current_user(HANDLE pipe) {
|
||||
* has completed a read, which accept must not require. */
|
||||
HMODULE kernel = GetModuleHandleW(L"kernel32.dll");
|
||||
get_named_pipe_server_process_id_fn get_client_pid =
|
||||
kernel ? (get_named_pipe_server_process_id_fn)GetProcAddress(kernel,
|
||||
"GetNamedPipeClientProcessId")
|
||||
kernel ? (get_named_pipe_server_process_id_fn)(void (*)(void))GetProcAddress(
|
||||
kernel, "GetNamedPipeClientProcessId")
|
||||
: NULL;
|
||||
if (!get_client_pid) {
|
||||
cbm_log_warn("daemon.accept.client_identity", "step", "pid_fn_missing");
|
||||
@@ -5319,8 +5320,8 @@ int cbm_daemon_ipc_accept(cbm_daemon_ipc_listener_t *listener, uint32_t timeout_
|
||||
static bool win_pipe_server_is_current_user(HANDLE pipe) {
|
||||
HMODULE kernel = GetModuleHandleW(L"kernel32.dll");
|
||||
get_named_pipe_server_process_id_fn get_server_pid =
|
||||
kernel ? (get_named_pipe_server_process_id_fn)GetProcAddress(kernel,
|
||||
"GetNamedPipeServerProcessId")
|
||||
kernel ? (get_named_pipe_server_process_id_fn)(void (*)(void))GetProcAddress(
|
||||
kernel, "GetNamedPipeServerProcessId")
|
||||
: NULL;
|
||||
ULONG process_id = 0;
|
||||
if (!get_server_pid) {
|
||||
@@ -5612,7 +5613,7 @@ uint64_t cbm_daemon_ipc_connection_peer_pid(const cbm_daemon_ipc_connection_t *c
|
||||
ULONG process_id = 0;
|
||||
if (connection->role == CBM_DAEMON_IPC_PIPE_ROLE_ACCEPTED_SERVER) {
|
||||
get_named_pipe_client_process_id_fn get_client_pid =
|
||||
kernel ? (get_named_pipe_client_process_id_fn)GetProcAddress(
|
||||
kernel ? (get_named_pipe_client_process_id_fn)(void (*)(void))GetProcAddress(
|
||||
kernel, "GetNamedPipeClientProcessId")
|
||||
: NULL;
|
||||
if (!get_client_pid || !get_client_pid(connection->handle, &process_id)) {
|
||||
@@ -5620,7 +5621,7 @@ uint64_t cbm_daemon_ipc_connection_peer_pid(const cbm_daemon_ipc_connection_t *c
|
||||
}
|
||||
} else if (connection->role == CBM_DAEMON_IPC_PIPE_ROLE_CONNECTED_CLIENT) {
|
||||
get_named_pipe_server_process_id_fn get_server_pid =
|
||||
kernel ? (get_named_pipe_server_process_id_fn)GetProcAddress(
|
||||
kernel ? (get_named_pipe_server_process_id_fn)(void (*)(void))GetProcAddress(
|
||||
kernel, "GetNamedPipeServerProcessId")
|
||||
: NULL;
|
||||
if (!get_server_pid || !get_server_pid(connection->handle, &process_id)) {
|
||||
|
||||
@@ -883,7 +883,9 @@ int cbm_canonical_path(const char *path, char *out, size_t out_sz) {
|
||||
}
|
||||
DWORD needed =
|
||||
GetFinalPathNameByHandleW(handle, NULL, 0, FILE_NAME_NORMALIZED | VOLUME_NAME_DOS);
|
||||
if (needed == 0 || needed == MAXDWORD || (size_t)needed > SIZE_MAX / sizeof(wchar_t) - 1) {
|
||||
/* MAXDWORD keeps the +1 below safe; calloc rejects an unrepresentable
|
||||
* capacity * sizeof(wchar_t) allocation on narrower size_t targets. */
|
||||
if (needed == 0 || needed == MAXDWORD) {
|
||||
(void)CloseHandle(handle);
|
||||
return 0;
|
||||
}
|
||||
|
||||
@@ -735,13 +735,13 @@ static void *private_win_token_user_query(private_win_security_t *security, HAND
|
||||
return buffer;
|
||||
}
|
||||
|
||||
#define PRIVATE_RESOLVE_ADVAPI(context, member, type, symbol) \
|
||||
do { \
|
||||
(context)->member = (type)GetProcAddress((context)->advapi, (symbol)); \
|
||||
if (!(context)->member) { \
|
||||
private_win_security_destroy((context)); \
|
||||
return false; \
|
||||
} \
|
||||
#define PRIVATE_RESOLVE_ADVAPI(context, member, type, symbol) \
|
||||
do { \
|
||||
(context)->member = (type)(void (*)(void))GetProcAddress((context)->advapi, (symbol)); \
|
||||
if (!(context)->member) { \
|
||||
private_win_security_destroy((context)); \
|
||||
return false; \
|
||||
} \
|
||||
} while (0)
|
||||
|
||||
static bool private_win_security_init(private_win_security_t *security) {
|
||||
|
||||
@@ -847,10 +847,12 @@ TEST(daemon_ipc_windows_legacy_bridge_covers_handoff_and_lifetime) {
|
||||
typedef BOOL(WINAPI * ipc_test_set_dacl_fn)(PSECURITY_DESCRIPTOR, BOOL, PACL, BOOL);
|
||||
HMODULE advapi = LoadLibraryW(L"advapi32.dll");
|
||||
ipc_test_initialize_sd_fn initialize_sd =
|
||||
advapi ? (ipc_test_initialize_sd_fn)GetProcAddress(advapi, "InitializeSecurityDescriptor")
|
||||
advapi ? (ipc_test_initialize_sd_fn)(void (*)(void))GetProcAddress(
|
||||
advapi, "InitializeSecurityDescriptor")
|
||||
: NULL;
|
||||
ipc_test_set_dacl_fn set_dacl =
|
||||
advapi ? (ipc_test_set_dacl_fn)GetProcAddress(advapi, "SetSecurityDescriptorDacl") : NULL;
|
||||
ipc_test_set_dacl_fn set_dacl = advapi ? (ipc_test_set_dacl_fn)(void (*)(void))GetProcAddress(
|
||||
advapi, "SetSecurityDescriptorDacl")
|
||||
: NULL;
|
||||
SECURITY_DESCRIPTOR unsafe_descriptor;
|
||||
bool unsafe_descriptor_ok = initialize_sd && set_dacl &&
|
||||
initialize_sd(&unsafe_descriptor, SECURITY_DESCRIPTOR_REVISION) &&
|
||||
|
||||
Reference in new issue
Block a user