@@ -50,6 +50,13 @@ bool is_existing_windows_group_name(const char *group_name)
50
50
51
51
bool is_valid_named_pipe_full_access_group (const char *group_name)
52
52
{
53
+ // Treat the DEFAULT_NAMED_PIPE_FULL_ACCESS_GROUP value
54
+ // as a special case: we (later) convert it to the "world" SID
55
+ if (strcmp (group_name, DEFAULT_NAMED_PIPE_FULL_ACCESS_GROUP) == 0 )
56
+ {
57
+ return true ;
58
+ }
59
+
53
60
if (!group_name || group_name[0 ] == ' \0 ' ||
54
61
is_existing_windows_group_name (group_name))
55
62
{
@@ -74,25 +81,44 @@ bool my_security_attr_add_rights_to_group(SECURITY_ATTRIBUTES *psa,
74
81
DWORD size_referencedDomainName= MAX_PATH;
75
82
SID_NAME_USE sid_name_use;
76
83
77
- if (! LookupAccountName ( nullptr , group_name, soughtSID, &size_sid,
78
- referencedDomainName, &size_referencedDomainName,
79
- &sid_name_use) )
84
+ // Treat the DEFAULT_NAMED_PIPE_FULL_ACCESS_GROUP value
85
+ // as a special case: we convert it to the "world" SID
86
+ if ( strcmp (group_name, DEFAULT_NAMED_PIPE_FULL_ACCESS_GROUP) == 0 )
80
87
{
81
- DWORD last_error_num= GetLastError ();
82
- FormatMessage (FORMAT_MESSAGE_FROM_SYSTEM | FORMAT_MESSAGE_IGNORE_INSERTS,
83
- NULL , last_error_num,
84
- MAKELANGID (LANG_NEUTRAL, SUBLANG_DEFAULT), last_error_msg,
85
- sizeof (last_error_msg) / sizeof (TCHAR), NULL );
86
- sql_print_error (" my_security_attr_add_rights_to_group, LookupAccountName failed: %s" ,
87
- last_error_msg);
88
- return true ;
88
+ if (!CreateWellKnownSid (WinWorldSid, NULL , soughtSID, &size_sid))
89
+ {
90
+ DWORD last_error_num= GetLastError ();
91
+ FormatMessage (FORMAT_MESSAGE_FROM_SYSTEM | FORMAT_MESSAGE_IGNORE_INSERTS,
92
+ NULL , last_error_num,
93
+ MAKELANGID (LANG_NEUTRAL, SUBLANG_DEFAULT), last_error_msg,
94
+ sizeof (last_error_msg) / sizeof (TCHAR), NULL );
95
+ sql_print_error (" my_security_attr_add_rights_to_group, CreateWellKnownSid failed: %s" ,
96
+ last_error_msg);
97
+ return true ;
98
+ }
89
99
}
90
-
91
- // sid_name_use is SidTypeAlias when group_name is a local group
92
- if (sid_name_use != SidTypeAlias && sid_name_use != SidTypeWellKnownGroup)
100
+ else
93
101
{
94
- sql_print_error (" LookupAccountName failed: unexpected sid_name_use" );
95
- return true ;
102
+ if (!LookupAccountName (NULL , group_name, soughtSID, &size_sid,
103
+ referencedDomainName, &size_referencedDomainName,
104
+ &sid_name_use))
105
+ {
106
+ DWORD last_error_num= GetLastError ();
107
+ FormatMessage (FORMAT_MESSAGE_FROM_SYSTEM | FORMAT_MESSAGE_IGNORE_INSERTS,
108
+ NULL , last_error_num,
109
+ MAKELANGID (LANG_NEUTRAL, SUBLANG_DEFAULT), last_error_msg,
110
+ sizeof (last_error_msg) / sizeof (TCHAR), NULL );
111
+ sql_print_error (" my_security_attr_add_rights_to_group, LookupAccountName failed: %s" ,
112
+ last_error_msg);
113
+ return true ;
114
+ }
115
+
116
+ // sid_name_use is SidTypeAlias when group_name is a local group
117
+ if (sid_name_use != SidTypeAlias && sid_name_use != SidTypeWellKnownGroup)
118
+ {
119
+ sql_print_error (" LookupAccountName failed: unexpected sid_name_use" );
120
+ return true ;
121
+ }
96
122
}
97
123
98
124
PACL pNewDACL= nullptr ;
0 commit comments