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);
On 2/16/22 08:13, Mohamad Al-Jaf wrote:
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?
This probably means CreateBoundaryDescriptorA is implemented using CreateBoundaryDescriptorW. If A export is missing from kernelbase, you shouldn't add it.
Hi Nikolay,
I understand, thanks for the clarification. I've submitted a patch.
-- Kind regards, Mohamad
On Wed, Feb 16, 2022 at 12:46 AM Nikolay Sivov nsivov@codeweavers.com wrote:
On 2/16/22 08:13, Mohamad Al-Jaf wrote:
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?
This probably means CreateBoundaryDescriptorA is implemented using CreateBoundaryDescriptorW. If A export is missing from kernelbase, you shouldn't add it.