]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
client: add get_{uid,gid} helpers for consistent uid/gids
authorSage Weil <sage@redhat.com>
Wed, 19 Aug 2015 13:36:16 +0000 (09:36 -0400)
committerSage Weil <sage@redhat.com>
Thu, 1 Oct 2015 13:41:33 +0000 (09:41 -0400)
Signed-off-by: Sage Weil <sage@redhat.com>
src/client/Client.cc
src/client/Client.h

index b28385f31a1506e68e460bfaa8659c4dfdd81edc..d351e5f5fed50a612ab061584ecb26c52a97c950 100644 (file)
@@ -1544,9 +1544,9 @@ int Client::make_request(MetaRequest *request,
     oldest_tid = tid;
 
   if (uid < 0)
-    uid = user_id >= 0 ? user_id : getuid();
+    uid = get_uid();
   if (gid < 0)
-    gid = group_id >= 0 ? group_id : getgid();
+    gid = get_gid();
 
   request->set_caller_uid(uid);
   request->set_caller_gid(gid);
@@ -6925,8 +6925,8 @@ int Client::open(const char *relpath, int flags, mode_t mode, int stripe_unit,
 
   if (!created) {
     // posix says we can only check permissions of existing files
-    uid_t uid = geteuid();
-    gid_t gid = getegid();
+    uid_t uid = get_uid();
+    gid_t gid = get_gid();
     r = check_permissions(in.get(), flags, uid, gid);
     if (r < 0)
       goto out;
@@ -10337,8 +10337,8 @@ int Client::ll_open(Inode *in, int flags, Fh **fhp, int uid, int gid)
 
   int r;
   if (uid < 0) {
-    uid = geteuid();
-    gid = getegid();
+    uid = get_uid();
+    gid = get_gid();
   }
   if (!cct->_conf->fuse_default_permissions) {
     r = check_permissions(in, flags, uid, gid);
index 4428e653347f26f4b2615bd756d7687cde29f6b9..0482360538be59f8b021b94c22d1bcdd97df8735 100644 (file)
@@ -269,6 +269,17 @@ protected:
 
   int user_id, group_id;
 
+  int get_uid() {
+    if (user_id >= 0)
+      return user_id;
+    return ::geteuid();
+  }
+  int get_gid() {
+    if (group_id >= 0)
+      return group_id;
+    return ::getegid();
+  }
+
   void set_cap_epoch_barrier(epoch_t e);
   epoch_t cap_epoch_barrier;