[PATCH] kernelbase: Add CreateBoundaryDescriptorA stub.

Mohamad Al-Jaf mohamadaljaf at gmail.com
Tue Feb 15 23:13:35 CST 2022


Needed for IE11.
---
I didn't sign this because I'm looking for feedback.

The function CreateBoundaryDescriptorA has a spec entry in kernel32 but not
kernelbase. However, doing grep -rnw . -e 'CreateBoundaryDescriptorA'
reveals that both kernel32 and kernelbase match. Why is this?

Still, I don't see a security file in kernel32. I suppose I could add
it to kernel_main.c. Would this be okay?
---
 dlls/kernel32/kernel32.spec     | 2 +-
 dlls/kernelbase/kernelbase.spec | 1 +
 dlls/kernelbase/security.c      | 9 +++++++++
 include/namespaceapi.h          | 2 ++
 4 files changed, 13 insertions(+), 1 deletion(-)

diff --git a/dlls/kernel32/kernel32.spec b/dlls/kernel32/kernel32.spec
index 7db82db375d..575f034eed0 100644
--- a/dlls/kernel32/kernel32.spec
+++ b/dlls/kernel32/kernel32.spec
@@ -266,7 +266,7 @@
 @ stdcall CopyLZFile(long long) LZCopy
 @ stdcall CreateActCtxA(ptr)
 @ stdcall -import CreateActCtxW(ptr)
-# @ stub CreateBoundaryDescriptorA
+@ stdcall -import CreateBoundaryDescriptorA(str long)
 @ stdcall -import CreateBoundaryDescriptorW(wstr long)
 @ stdcall -import CreateConsoleScreenBuffer(long long ptr long ptr)
 @ stdcall -import CreateDirectoryA(str ptr)
diff --git a/dlls/kernelbase/kernelbase.spec b/dlls/kernelbase/kernelbase.spec
index e06ecde17d1..60c3b74d331 100644
--- a/dlls/kernelbase/kernelbase.spec
+++ b/dlls/kernelbase/kernelbase.spec
@@ -174,6 +174,7 @@
 # @ stub CouldMultiUserAppsBehaviorBePossibleForPackage
 @ stdcall CreateActCtxW(ptr)
 # @ stub CreateAppContainerToken
+@ stdcall CreateBoundaryDescriptorA(str long)
 @ stdcall CreateBoundaryDescriptorW(wstr long)
 @ stdcall CreateConsoleScreenBuffer(long long ptr long ptr)
 @ stdcall CreateDirectoryA(str ptr)
diff --git a/dlls/kernelbase/security.c b/dlls/kernelbase/security.c
index 3c1a3d7f077..88fdab4699e 100644
--- a/dlls/kernelbase/security.c
+++ b/dlls/kernelbase/security.c
@@ -922,6 +922,15 @@ BOOL WINAPI ConvertToAutoInheritPrivateObjectSecurity( PSECURITY_DESCRIPTOR pare
     return set_ntstatus( RtlConvertToAutoInheritSecurityObject( parent, current, descr, type, is_dir, mapping ));
 }
 
+/******************************************************************************
+ * CreateBoundaryDescriptorA    (kernelbase.@)
+ */
+HANDLE WINAPI CreateBoundaryDescriptorA( LPCSTR name, ULONG flags )
+{
+    FIXME("%s %lu - stub\n", debugstr_a(name), flags);
+    return NULL;
+}
+
 /******************************************************************************
  * CreateBoundaryDescriptorW    (kernelbase.@)
  */
diff --git a/include/namespaceapi.h b/include/namespaceapi.h
index 9446806f82e..f219a2a7488 100644
--- a/include/namespaceapi.h
+++ b/include/namespaceapi.h
@@ -27,7 +27,9 @@ extern "C" {
 
 WINBASEAPI BOOL    WINAPI AddSIDToBoundaryDescriptor(HANDLE*,PSID);
 WINBASEAPI BOOLEAN WINAPI ClosePrivateNamespace(HANDLE,ULONG);
+WINBASEAPI HANDLE  WINAPI CreateBoundaryDescriptorA(LPCSTR,ULONG);
 WINBASEAPI HANDLE  WINAPI CreateBoundaryDescriptorW(LPCWSTR,ULONG);
+#define                   CreateBoundaryDescriptor WINELIB_NAME_AW(CreateBoundaryDescriptor)
 WINBASEAPI HANDLE  WINAPI CreatePrivateNamespaceW(LPSECURITY_ATTRIBUTES,LPVOID,LPCWSTR);
 WINBASEAPI void    WINAPI DeleteBoundaryDescriptor(HANDLE);
 WINBASEAPI HANDLE  WINAPI OpenPrivateNamespaceW(LPVOID,LPCWSTR);
-- 
2.35.1




More information about the wine-devel mailing list