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