summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAhmad Samir <[email protected]>2025-05-17 15:57:14 +0300
committerAhmad Samir <[email protected]>2025-05-26 18:56:49 +0300
commitffc5491757d3148edbe855834ffee2861d7b9ee8 (patch)
treec595da666c6c78a863453baa2300ccd8ed709491
parent9eb2c404ee1ad60c1cc764b0d9221c7a841251e4 (diff)
QLocalServer: use std::unique_ptr instead of QScopedPointer
Task-number: QTBUG-132213 Change-Id: I6a18e787efa9a2ecfe89339569a9724467ac3e6a Reviewed-by: MÃ¥rten Nordheim <[email protected]>
-rw-r--r--src/network/socket/qlocalserver_win.cpp26
1 files changed, 16 insertions, 10 deletions
diff --git a/src/network/socket/qlocalserver_win.cpp b/src/network/socket/qlocalserver_win.cpp
index f075d0f0a16..071e4b5d798 100644
--- a/src/network/socket/qlocalserver_win.cpp
+++ b/src/network/socket/qlocalserver_win.cpp
@@ -12,6 +12,8 @@
#include <accctrl.h>
#include <sddl.h>
+#include <memory>
+
// The buffer size need to be 0 otherwise data could be
// lost if the socket that has written data closes the connection
// before it is read. Pipewriter is used for write buffering.
@@ -33,7 +35,7 @@ bool QLocalServerPrivate::addListener()
sa.bInheritHandle = FALSE; //non inheritable handle, same as default
sa.lpSecurityDescriptor = 0; //default security descriptor
- QScopedPointer<SECURITY_DESCRIPTOR> pSD;
+ std::unique_ptr<SECURITY_DESCRIPTOR> pSD;
PSID worldSID = 0;
QByteArray aclBuffer;
QByteArray tokenUserBuffer;
@@ -42,7 +44,7 @@ bool QLocalServerPrivate::addListener()
// create security descriptor if access options were specified
if ((socketOptions.value() & QLocalServer::WorldAccessOption)) {
pSD.reset(new SECURITY_DESCRIPTOR);
- if (!InitializeSecurityDescriptor(pSD.data(), SECURITY_DESCRIPTOR_REVISION)) {
+ if (!InitializeSecurityDescriptor(pSD.get(), SECURITY_DESCRIPTOR_REVISION)) {
setError("QLocalServerPrivate::addListener"_L1);
return false;
}
@@ -76,10 +78,14 @@ bool QLocalServerPrivate::addListener()
SID_NAME_USE groupNameUse;
LPWSTR groupNameSid;
LookupAccountSid(0, pTokenGroup->PrimaryGroup, 0, &groupNameSize, 0, &domainNameSize, &groupNameUse);
- QScopedPointer<wchar_t, QScopedPointerArrayDeleter<wchar_t>> groupName(new wchar_t[groupNameSize]);
- QScopedPointer<wchar_t, QScopedPointerArrayDeleter<wchar_t>> domainName(new wchar_t[domainNameSize]);
- if (LookupAccountSid(0, pTokenGroup->PrimaryGroup, groupName.data(), &groupNameSize, domainName.data(), &domainNameSize, &groupNameUse)) {
- qDebug() << "primary group" << QString::fromWCharArray(domainName.data()) << "\\" << QString::fromWCharArray(groupName.data()) << "type=" << groupNameUse;
+ auto groupName = std::unique_ptr<wchar_t[]>(new wchar_t[groupNameSize]);
+ auto domainName = std::unique_ptr<wchar_t[]>(new wchar_t[domainNameSize]);
+ const bool lookup = LookupAccountSid(0, pTokenGroup->PrimaryGroup, groupName.get(),
+ &groupNameSize, domainName.get(), &domainNameSize,
+ &groupNameUse);
+ if (lookup) {
+ qDebug() << "primary group" << QString::fromWCharArray(domainName.get()) << "\\"
+ << QString::fromWCharArray(groupName.get()) << "type=" << groupNameUse;
}
if (ConvertSidToStringSid(pTokenGroup->PrimaryGroup, &groupNameSid)) {
qDebug() << "primary group SID" << QString::fromWCharArray(groupNameSid) << "valid" << IsValidSid(pTokenGroup->PrimaryGroup);
@@ -127,15 +133,15 @@ bool QLocalServerPrivate::addListener()
return false;
}
}
- SetSecurityDescriptorOwner(pSD.data(), pTokenUser->User.Sid, FALSE);
- SetSecurityDescriptorGroup(pSD.data(), pTokenGroup->PrimaryGroup, FALSE);
- if (!SetSecurityDescriptorDacl(pSD.data(), TRUE, acl, FALSE)) {
+ SetSecurityDescriptorOwner(pSD.get(), pTokenUser->User.Sid, FALSE);
+ SetSecurityDescriptorGroup(pSD.get(), pTokenGroup->PrimaryGroup, FALSE);
+ if (!SetSecurityDescriptorDacl(pSD.get(), TRUE, acl, FALSE)) {
setError("QLocalServerPrivate::addListener"_L1);
FreeSid(worldSID);
return false;
}
- sa.lpSecurityDescriptor = pSD.data();
+ sa.lpSecurityDescriptor = pSD.get();
}
listener->handle = CreateNamedPipe(