@@ -52,6 +52,13 @@ bool is_existing_windows_group_name(const char *group_name)
52
52
53
53
bool is_valid_named_pipe_full_access_group (const char *group_name)
54
54
{
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
+
55
62
if (!group_name || group_name[0 ] == ' \0 ' ||
56
63
is_existing_windows_group_name (group_name))
57
64
{
@@ -76,25 +83,44 @@ bool my_security_attr_add_rights_to_group(SECURITY_ATTRIBUTES *psa,
76
83
DWORD size_referencedDomainName= MAX_PATH;
77
84
SID_NAME_USE sid_name_use;
78
85
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 )
82
89
{
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
+ }
91
101
}
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
95
103
{
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
+ }
98
124
}
99
125
100
126
PACL pNewDACL= NULL ;
0 commit comments