Skip to content
GitLab
Menu
Projects
Groups
Snippets
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Menu
Open sidebar
ruanhaishen
redis
Commits
21e84cda
Commit
21e84cda
authored
Feb 04, 2019
by
antirez
Browse files
ACL: initial appending of users in user loading list.
parent
8f16e1ea
Changes
3
Hide whitespace changes
Inline
Side-by-side
src/acl.c
View file @
21e84cda
...
@@ -937,11 +937,18 @@ int ACLAppendUserForLoading(sds *argv, int argc) {
...
@@ -937,11 +937,18 @@ int ACLAppendUserForLoading(sds *argv, int argc) {
/* Try to apply the user rules in a fake user to see if they
/* Try to apply the user rules in a fake user to see if they
* are actually valid. */
* are actually valid. */
user
fu
=
{
0
};
char
*
funame
=
"__fakeuser__"
;
user
*
fakeuser
=
&
fu
;
user
*
fakeuser
=
ACLCreateUser
(
funame
,
strlen
(
funame
));
serverAssert
(
fakeuser
!=
NULL
);
int
retval
=
raxRemove
(
Users
,(
unsigned
char
*
)
funame
,
strlen
(
funame
),
NULL
);
serverAssert
(
retval
!=
0
);
for
(
int
j
=
2
;
j
<
argc
;
j
++
)
{
for
(
int
j
=
2
;
j
<
argc
;
j
++
)
{
if
(
ACLSetUser
(
fakeuser
,
argv
[
j
],
sdslen
(
argv
[
j
]))
==
C_ERR
)
{
if
(
ACLSetUser
(
fakeuser
,
argv
[
j
],
sdslen
(
argv
[
j
]))
==
C_ERR
)
{
if
(
errno
!=
ENOENT
)
return
C_ERR
;
if
(
errno
!=
ENOENT
)
{
ACLFreeUser
(
fakeuser
);
return
C_ERR
;
}
}
}
}
}
...
@@ -950,6 +957,7 @@ int ACLAppendUserForLoading(sds *argv, int argc) {
...
@@ -950,6 +957,7 @@ int ACLAppendUserForLoading(sds *argv, int argc) {
for
(
int
j
=
1
;
j
<
argc
;
j
++
)
copy
[
j
-
1
]
=
sdsdup
(
argv
[
j
]);
for
(
int
j
=
1
;
j
<
argc
;
j
++
)
copy
[
j
-
1
]
=
sdsdup
(
argv
[
j
]);
copy
[
argc
-
1
]
=
NULL
;
copy
[
argc
-
1
]
=
NULL
;
listAddNodeTail
(
UsersToLoad
,
copy
);
listAddNodeTail
(
UsersToLoad
,
copy
);
ACLFreeUser
(
fakeuser
);
return
C_OK
;
return
C_OK
;
}
}
...
...
src/config.c
View file @
21e84cda
...
@@ -791,6 +791,11 @@ void loadServerConfigFromString(char *config) {
...
@@ -791,6 +791,11 @@ void loadServerConfigFromString(char *config) {
"Allowed values: 'upstart', 'systemd', 'auto', or 'no'"
;
"Allowed values: 'upstart', 'systemd', 'auto', or 'no'"
;
goto
loaderr
;
goto
loaderr
;
}
}
}
else
if
(
!
strcasecmp
(
argv
[
0
],
"user"
)
&&
argc
>=
2
)
{
if
(
ACLAppendUserForLoading
(
argv
,
argc
)
==
C_ERR
)
{
err
=
"Syntax error in user declaration"
;
goto
loaderr
;
}
}
else
if
(
!
strcasecmp
(
argv
[
0
],
"loadmodule"
)
&&
argc
>=
2
)
{
}
else
if
(
!
strcasecmp
(
argv
[
0
],
"loadmodule"
)
&&
argc
>=
2
)
{
queueLoadModule
(
argv
[
1
],
&
argv
[
2
],
argc
-
2
);
queueLoadModule
(
argv
[
1
],
&
argv
[
2
],
argc
-
2
);
}
else
if
(
!
strcasecmp
(
argv
[
0
],
"sentinel"
))
{
}
else
if
(
!
strcasecmp
(
argv
[
0
],
"sentinel"
))
{
...
...
src/server.h
View file @
21e84cda
...
@@ -1738,6 +1738,7 @@ int ACLCheckCommandPerm(client *c);
...
@@ -1738,6 +1738,7 @@ int ACLCheckCommandPerm(client *c);
int
ACLSetUser
(
user
*
u
,
const
char
*
op
,
ssize_t
oplen
);
int
ACLSetUser
(
user
*
u
,
const
char
*
op
,
ssize_t
oplen
);
sds
ACLDefaultUserFirstPassword
(
void
);
sds
ACLDefaultUserFirstPassword
(
void
);
uint64_t
ACLGetCommandCategoryFlagByName
(
const
char
*
name
);
uint64_t
ACLGetCommandCategoryFlagByName
(
const
char
*
name
);
int
ACLAppendUserForLoading
(
sds
*
argv
,
int
argc
);
/* Sorted sets data type */
/* Sorted sets data type */
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment