Skip to content

Commit 41fb35a

Browse files
author
Daniel Blanchard
committed
Merge branch 'mysql-5.6' into mysql-5.7
2 parents 2308bf7 + b087663 commit 41fb35a

File tree

4 files changed

+49
-23
lines changed

4 files changed

+49
-23
lines changed

mysql-test/r/mysqld--help-win.result

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1449,7 +1449,7 @@ myisam-stats-method nulls_unequal
14491449
myisam-use-mmap FALSE
14501450
mysql-native-password-proxy-users FALSE
14511451
named-pipe FALSE
1452-
named-pipe-full-access-group everyone
1452+
named-pipe-full-access-group *everyone*
14531453
net-buffer-length 16384
14541454
net-read-timeout 30
14551455
net-retry-count 10
Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,17 @@
11
select @@global.named_pipe_full_access_group;
22
@@global.named_pipe_full_access_group
3-
everyone
3+
*everyone*
44
select @@session.named_pipe_full_access_group;
55
ERROR HY000: Variable 'named_pipe_full_access_group' is a GLOBAL variable
66
show global variables like 'named_pipe_full_access_group';
77
Variable_name Value
8-
named_pipe_full_access_group everyone
8+
named_pipe_full_access_group *everyone*
99
show session variables like 'named_pipe_full_access_group';
1010
Variable_name Value
11-
named_pipe_full_access_group everyone
11+
named_pipe_full_access_group *everyone*
1212
select * from performance_schema.global_variables where variable_name='named_pipe_full_access_group';
1313
VARIABLE_NAME VARIABLE_VALUE
14-
named_pipe_full_access_group everyone
14+
named_pipe_full_access_group *everyone*
1515
select * from performance_schema.session_variables where variable_name='named_pipe_full_access_group';
1616
VARIABLE_NAME VARIABLE_VALUE
17-
named_pipe_full_access_group everyone
17+
named_pipe_full_access_group *everyone*

sql/named_pipe.cc

Lines changed: 42 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,13 @@ bool is_existing_windows_group_name(const char *group_name)
5050

5151
bool 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;

sql/named_pipe.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,5 +35,5 @@ bool is_valid_named_pipe_full_access_group(const char *group_name);
3535
bool my_security_attr_add_rights_to_group(SECURITY_ATTRIBUTES *psa,
3636
const char *group_name,
3737
DWORD group_rights);
38-
#define DEFAULT_NAMED_PIPE_FULL_ACCESS_GROUP "everyone"
38+
#define DEFAULT_NAMED_PIPE_FULL_ACCESS_GROUP "*everyone*"
3939
#endif /* NAMED_PIPE_INCLUDED */

0 commit comments

Comments
 (0)