Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
L
liblongpath-rsync
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
liblongpath
liblongpath-rsync
Commits
7352b873
Commit
7352b873
authored
Jan 02, 2004
by
Wayne Davison
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Moved the is_in_group() function to uidlist.c.
parent
5b540e86
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
2 additions
and
41 deletions
+2
-41
rsync.c
rsync.c
+2
-41
No files found.
rsync.c
View file @
7352b873
...
...
@@ -119,40 +119,6 @@ int delete_file(char *fname)
return
0
;
}
static
int
is_in_group
(
gid_t
gid
)
{
#ifdef GETGROUPS_T
static
gid_t
last_in
=
(
gid_t
)
-
2
,
last_out
;
static
int
ngroups
=
-
2
;
static
GETGROUPS_T
*
gidset
;
int
n
;
if
(
gid
==
last_in
)
return
last_out
;
if
(
ngroups
<
-
1
)
{
/* treat failure (-1) as if not member of any group */
ngroups
=
getgroups
(
0
,
0
);
if
(
ngroups
>
0
)
{
gidset
=
new_array
(
GETGROUPS_T
,
ngroups
);
ngroups
=
getgroups
(
ngroups
,
gidset
);
}
}
last_in
=
gid
;
last_out
=
0
;
for
(
n
=
0
;
n
<
ngroups
;
n
++
)
{
if
(
gidset
[
n
]
==
gid
)
{
last_out
=
1
;
break
;
}
}
return
last_out
;
#else
return
0
;
#endif
}
int
set_perms
(
char
*
fname
,
struct
file_struct
*
file
,
STRUCT_STAT
*
st
,
int
report
)
{
...
...
@@ -186,13 +152,8 @@ int set_perms(char *fname,struct file_struct *file,STRUCT_STAT *st,
}
change_uid
=
am_root
&&
preserve_uid
&&
st
->
st_uid
!=
file
->
uid
;
change_gid
=
preserve_gid
&&
file
->
gid
!=
(
gid_t
)
-
1
&&
\
st
->
st_gid
!=
file
->
gid
;
if
(
change_gid
&&
!
am_root
)
{
/* enforce bsd-style group semantics: non-root can only
change to groups that the user is a member of */
change_gid
=
is_in_group
(
file
->
gid
);
}
change_gid
=
preserve_gid
&&
file
->
gid
!=
(
gid_t
)
-
1
&&
st
->
st_gid
!=
file
->
gid
;
if
(
change_uid
||
change_gid
)
{
if
(
do_lchown
(
fname
,
change_uid
?
file
->
uid
:
st
->
st_uid
,
...
...
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