@@ -50,6 +50,13 @@ bool is_existing_windows_group_name(const char *group_name)
5050
5151bool is_valid_named_pipe_full_access_group (const char *group_name)
5252{
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+
5360 if (!group_name || group_name[0 ] == ' \0 ' ||
5461 is_existing_windows_group_name (group_name))
5562 {
@@ -74,25 +81,44 @@ bool my_security_attr_add_rights_to_group(SECURITY_ATTRIBUTES *psa,
7481 DWORD size_referencedDomainName= MAX_PATH;
7582 SID_NAME_USE sid_name_use;
7683
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 )
8087 {
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+ }
8999 }
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
93101 {
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+ }
96122 }
97123
98124 PACL pNewDACL= nullptr ;
0 commit comments