Commit 3b83a220 authored by Wayne Davison's avatar Wayne Davison

Define and use "our_gid" variable.

parent 8e15bd87
...@@ -85,6 +85,7 @@ extern struct file_list *first_flist; ...@@ -85,6 +85,7 @@ extern struct file_list *first_flist;
extern filter_rule_list daemon_filter_list; extern filter_rule_list daemon_filter_list;
uid_t our_uid; uid_t our_uid;
gid_t our_gid;
int am_generator = 0; int am_generator = 0;
int local_server = 0; int local_server = 0;
int daemon_over_rsh = 0; int daemon_over_rsh = 0;
...@@ -1485,6 +1486,7 @@ int main(int argc,char *argv[]) ...@@ -1485,6 +1486,7 @@ int main(int argc,char *argv[])
starttime = time(NULL); starttime = time(NULL);
our_uid = MY_UID(); our_uid = MY_UID();
our_gid = MY_GID();
am_root = our_uid == 0; am_root = our_uid == 0;
memset(&stats, 0, sizeof(stats)); memset(&stats, 0, sizeof(stats));
......
...@@ -33,6 +33,7 @@ extern int preserve_uid; ...@@ -33,6 +33,7 @@ extern int preserve_uid;
extern int preserve_gid; extern int preserve_gid;
extern int preserve_acls; extern int preserve_acls;
extern int numeric_ids; extern int numeric_ids;
extern gid_t our_gid;
extern char *usermap; extern char *usermap;
extern char *groupmap; extern char *groupmap;
...@@ -101,7 +102,6 @@ static int is_in_group(gid_t gid) ...@@ -101,7 +102,6 @@ static int is_in_group(gid_t gid)
if (gid == last_in) if (gid == last_in)
return last_out; return last_out;
if (ngroups < -1) { if (ngroups < -1) {
gid_t mygid = MY_GID();
if ((ngroups = getgroups(0, NULL)) < 0) if ((ngroups = getgroups(0, NULL)) < 0)
ngroups = 0; ngroups = 0;
gidset = new_array(GETGROUPS_T, ngroups+1); gidset = new_array(GETGROUPS_T, ngroups+1);
...@@ -111,11 +111,11 @@ static int is_in_group(gid_t gid) ...@@ -111,11 +111,11 @@ static int is_in_group(gid_t gid)
ngroups = getgroups(ngroups, gidset); ngroups = getgroups(ngroups, gidset);
/* The default gid might not be in the list on some systems. */ /* The default gid might not be in the list on some systems. */
for (n = 0; n < ngroups; n++) { for (n = 0; n < ngroups; n++) {
if (gidset[n] == mygid) if (gidset[n] == our_gid)
break; break;
} }
if (n == ngroups) if (n == ngroups)
gidset[ngroups++] = mygid; gidset[ngroups++] = our_gid;
if (DEBUG_GTE(OWN, 2)) { if (DEBUG_GTE(OWN, 2)) {
int pos; int pos;
char *gidbuf = new_array(char, ngroups*21+32); char *gidbuf = new_array(char, ngroups*21+32);
...@@ -139,13 +139,7 @@ static int is_in_group(gid_t gid) ...@@ -139,13 +139,7 @@ static int is_in_group(gid_t gid)
return last_out = 0; return last_out = 0;
#else #else
static gid_t mygid = GID_NONE; return gid == our_gid;
if (mygid == GID_NONE) {
mygid = MY_GID();
if (DEBUG_GTE(OWN, 2))
rprintf(FINFO, "process has gid %u\n", (unsigned)mygid);
}
return gid == mygid;
#endif #endif
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment