Blame SOURCES/0020-Use-unsigned-int-for-uid-and-gid-representation.patch

d7fdbd
From dcaaf1e0dd3985e229a87de18b83f301d30b6ce9 Mon Sep 17 00:00:00 2001
d7fdbd
From: Martin Sehnoutka <msehnout@redhat.com>
d7fdbd
Date: Thu, 17 Nov 2016 10:31:39 +0100
d7fdbd
Subject: [PATCH 20/59] Use unsigned int for uid and gid representation.
d7fdbd
d7fdbd
---
d7fdbd
 ls.c      |  4 ++--
d7fdbd
 privops.c |  3 +--
d7fdbd
 session.h |  6 +++---
d7fdbd
 sysutil.c | 44 ++++++++++++++------------------------------
d7fdbd
 sysutil.h | 20 ++++++++++----------
d7fdbd
 5 files changed, 30 insertions(+), 47 deletions(-)
d7fdbd
d7fdbd
diff --git a/ls.c b/ls.c
d7fdbd
index b840136..3c0988c 100644
d7fdbd
--- a/ls.c
d7fdbd
+++ b/ls.c
d7fdbd
@@ -503,7 +503,7 @@ build_dir_line(struct mystr* p_str, const struct mystr* p_filename_str,
d7fdbd
   }
d7fdbd
   else
d7fdbd
   {
d7fdbd
-    int uid = vsf_sysutil_statbuf_get_uid(p_stat);
d7fdbd
+    unsigned int uid = vsf_sysutil_statbuf_get_uid(p_stat);
d7fdbd
     struct vsf_sysutil_user* p_user = 0;
d7fdbd
     if (tunable_text_userdb_names)
d7fdbd
     {
d7fdbd
@@ -528,7 +528,7 @@ build_dir_line(struct mystr* p_str, const struct mystr* p_filename_str,
d7fdbd
   }
d7fdbd
   else
d7fdbd
   {
d7fdbd
-    int gid = vsf_sysutil_statbuf_get_gid(p_stat);
d7fdbd
+    unsigned int gid = vsf_sysutil_statbuf_get_gid(p_stat);
d7fdbd
     struct vsf_sysutil_group* p_group = 0;
d7fdbd
     if (tunable_text_userdb_names)
d7fdbd
     {
d7fdbd
diff --git a/privops.c b/privops.c
d7fdbd
index 21d7267..f27c5c4 100644
d7fdbd
--- a/privops.c
d7fdbd
+++ b/privops.c
d7fdbd
@@ -236,8 +236,7 @@ vsf_privop_do_file_chown(struct vsf_session* p_sess, int fd)
d7fdbd
   /* Drop it like a hot potato unless it's a regular file owned by
d7fdbd
    * the the anonymous ftp user
d7fdbd
    */
d7fdbd
-  if (p_sess->anon_upload_chown_uid == -1 ||
d7fdbd
-      !vsf_sysutil_statbuf_is_regfile(s_p_statbuf) ||
d7fdbd
+  if (!vsf_sysutil_statbuf_is_regfile(s_p_statbuf) ||
d7fdbd
       (vsf_sysutil_statbuf_get_uid(s_p_statbuf) != p_sess->anon_ftp_uid &&
d7fdbd
        vsf_sysutil_statbuf_get_uid(s_p_statbuf) != p_sess->guest_user_uid))
d7fdbd
   {
d7fdbd
diff --git a/session.h b/session.h
d7fdbd
index 27a488f..956bfb7 100644
d7fdbd
--- a/session.h
d7fdbd
+++ b/session.h
d7fdbd
@@ -54,9 +54,9 @@ struct vsf_session
d7fdbd
   struct mystr_list* p_visited_dir_list;
d7fdbd
 
d7fdbd
   /* Details of userids which are interesting to us */
d7fdbd
-  int anon_ftp_uid;
d7fdbd
-  int guest_user_uid;
d7fdbd
-  int anon_upload_chown_uid;
d7fdbd
+  unsigned int anon_ftp_uid;
d7fdbd
+  unsigned int guest_user_uid;
d7fdbd
+  unsigned int anon_upload_chown_uid;
d7fdbd
 
d7fdbd
   /* Things we need to cache before we chroot() */
d7fdbd
   struct mystr banned_email_str;
d7fdbd
diff --git a/sysutil.c b/sysutil.c
d7fdbd
index 2abdd13..9881a66 100644
d7fdbd
--- a/sysutil.c
d7fdbd
+++ b/sysutil.c
d7fdbd
@@ -1454,14 +1454,14 @@ vsf_sysutil_statbuf_get_size(const struct vsf_sysutil_statbuf* p_statbuf)
d7fdbd
   return p_stat->st_size;
d7fdbd
 }
d7fdbd
 
d7fdbd
-int
d7fdbd
+unsigned int
d7fdbd
 vsf_sysutil_statbuf_get_uid(const struct vsf_sysutil_statbuf* p_statbuf)
d7fdbd
 {
d7fdbd
   const struct stat* p_stat = (const struct stat*) p_statbuf;
d7fdbd
   return p_stat->st_uid;
d7fdbd
 }
d7fdbd
 
d7fdbd
-int
d7fdbd
+unsigned int
d7fdbd
 vsf_sysutil_statbuf_get_gid(const struct vsf_sysutil_statbuf* p_statbuf)
d7fdbd
 {
d7fdbd
   const struct stat* p_stat = (const struct stat*) p_statbuf;
d7fdbd
@@ -1502,7 +1502,7 @@ vsf_sysutil_statbuf_get_sortkey_mtime(
d7fdbd
 }
d7fdbd
 
d7fdbd
 void
d7fdbd
-vsf_sysutil_fchown(const int fd, const int uid, const int gid)
d7fdbd
+vsf_sysutil_fchown(const int fd, const unsigned int uid, const unsigned int gid)
d7fdbd
 {
d7fdbd
   if (fchown(fd, uid, gid) != 0)
d7fdbd
   {
d7fdbd
@@ -2320,13 +2320,9 @@ vsf_sysutil_dns_resolve(struct vsf_sysutil_sockaddr** p_sockptr,
d7fdbd
 }
d7fdbd
 
d7fdbd
 struct vsf_sysutil_user*
d7fdbd
-vsf_sysutil_getpwuid(const int uid)
d7fdbd
+vsf_sysutil_getpwuid(const unsigned int uid)
d7fdbd
 {
d7fdbd
-  if (uid < 0)
d7fdbd
-  {
d7fdbd
-    bug("negative uid in vsf_sysutil_getpwuid");
d7fdbd
-  }
d7fdbd
-  return (struct vsf_sysutil_user*) getpwuid((unsigned int) uid);
d7fdbd
+  return (struct vsf_sysutil_user*) getpwuid(uid);
d7fdbd
 }
d7fdbd
 
d7fdbd
 struct vsf_sysutil_user*
d7fdbd
@@ -2349,14 +2345,14 @@ vsf_sysutil_user_get_homedir(const struct vsf_sysutil_user* p_user)
d7fdbd
   return p_passwd->pw_dir;
d7fdbd
 }
d7fdbd
 
d7fdbd
-int
d7fdbd
+unsigned int
d7fdbd
 vsf_sysutil_user_getuid(const struct vsf_sysutil_user* p_user)
d7fdbd
 {
d7fdbd
   const struct passwd* p_passwd = (const struct passwd*) p_user;
d7fdbd
   return p_passwd->pw_uid;
d7fdbd
 }
d7fdbd
 
d7fdbd
-int
d7fdbd
+unsigned int
d7fdbd
 vsf_sysutil_user_getgid(const struct vsf_sysutil_user* p_user)
d7fdbd
 { 
d7fdbd
   const struct passwd* p_passwd = (const struct passwd*) p_user;
d7fdbd
@@ -2364,13 +2360,9 @@ vsf_sysutil_user_getgid(const struct vsf_sysutil_user* p_user)
d7fdbd
 }
d7fdbd
 
d7fdbd
 struct vsf_sysutil_group*
d7fdbd
-vsf_sysutil_getgrgid(const int gid)
d7fdbd
+vsf_sysutil_getgrgid(const unsigned int gid)
d7fdbd
 {
d7fdbd
-  if (gid < 0)
d7fdbd
-  {
d7fdbd
-    die("negative gid in vsf_sysutil_getgrgid");
d7fdbd
-  }
d7fdbd
-  return (struct vsf_sysutil_group*) getgrgid((unsigned int) gid);
d7fdbd
+  return (struct vsf_sysutil_group*) getgrgid(gid);
d7fdbd
 }
d7fdbd
 
d7fdbd
 const char*
d7fdbd
@@ -2445,25 +2437,17 @@ vsf_sysutil_setgid_numeric(int gid)
d7fdbd
   }
d7fdbd
 }
d7fdbd
 
d7fdbd
-int
d7fdbd
+unsigned int
d7fdbd
 vsf_sysutil_geteuid(void)
d7fdbd
 {
d7fdbd
-  int retval = geteuid();
d7fdbd
-  if (retval < 0)
d7fdbd
-  {
d7fdbd
-    die("geteuid");
d7fdbd
-  }
d7fdbd
+  unsigned int retval = geteuid();
d7fdbd
   return retval;
d7fdbd
 }
d7fdbd
 
d7fdbd
-int
d7fdbd
+unsigned int
d7fdbd
 vsf_sysutil_getegid(void)
d7fdbd
 {
d7fdbd
-  int retval = getegid();
d7fdbd
-  if (retval < 0)
d7fdbd
-  {
d7fdbd
-    die("getegid");
d7fdbd
-  }
d7fdbd
+  unsigned int retval = getegid();
d7fdbd
   return retval;
d7fdbd
 }
d7fdbd
 
d7fdbd
@@ -2854,7 +2838,7 @@ vsf_sysutil_ftruncate(int fd)
d7fdbd
   }
d7fdbd
 }
d7fdbd
 
d7fdbd
-int
d7fdbd
+unsigned int
d7fdbd
 vsf_sysutil_getuid(void)
d7fdbd
 {
d7fdbd
   return getuid();
d7fdbd
diff --git a/sysutil.h b/sysutil.h
d7fdbd
index bfc92cb..79b5514 100644
d7fdbd
--- a/sysutil.h
d7fdbd
+++ b/sysutil.h
d7fdbd
@@ -129,15 +129,15 @@ const char* vsf_sysutil_statbuf_get_numeric_date(
d7fdbd
   const struct vsf_sysutil_statbuf* p_stat, int use_localtime);
d7fdbd
 unsigned int vsf_sysutil_statbuf_get_links(
d7fdbd
   const struct vsf_sysutil_statbuf* p_stat);
d7fdbd
-int vsf_sysutil_statbuf_get_uid(const struct vsf_sysutil_statbuf* p_stat);
d7fdbd
-int vsf_sysutil_statbuf_get_gid(const struct vsf_sysutil_statbuf* p_stat);
d7fdbd
+unsigned int vsf_sysutil_statbuf_get_uid(const struct vsf_sysutil_statbuf* p_stat);
d7fdbd
+unsigned int vsf_sysutil_statbuf_get_gid(const struct vsf_sysutil_statbuf* p_stat);
d7fdbd
 int vsf_sysutil_statbuf_is_readable_other(
d7fdbd
   const struct vsf_sysutil_statbuf* p_stat);
d7fdbd
 const char* vsf_sysutil_statbuf_get_sortkey_mtime(
d7fdbd
   const struct vsf_sysutil_statbuf* p_stat);
d7fdbd
 
d7fdbd
 int vsf_sysutil_chmod(const char* p_filename, unsigned int mode);
d7fdbd
-void vsf_sysutil_fchown(const int fd, const int uid, const int gid);
d7fdbd
+void vsf_sysutil_fchown(const int fd, const unsigned int uid, const unsigned int gid);
d7fdbd
 void vsf_sysutil_fchmod(const int fd, unsigned int mode);
d7fdbd
 int vsf_sysutil_readlink(const char* p_filename, char* p_dest,
d7fdbd
                          unsigned int bufsiz);
d7fdbd
@@ -290,15 +290,15 @@ int vsf_sysutil_inet_aton(
d7fdbd
 struct vsf_sysutil_user;
d7fdbd
 struct vsf_sysutil_group;
d7fdbd
 
d7fdbd
-struct vsf_sysutil_user* vsf_sysutil_getpwuid(const int uid);
d7fdbd
+struct vsf_sysutil_user* vsf_sysutil_getpwuid(const unsigned int uid);
d7fdbd
 struct vsf_sysutil_user* vsf_sysutil_getpwnam(const char* p_user);
d7fdbd
 const char* vsf_sysutil_user_getname(const struct vsf_sysutil_user* p_user);
d7fdbd
 const char* vsf_sysutil_user_get_homedir(
d7fdbd
   const struct vsf_sysutil_user* p_user);
d7fdbd
-int vsf_sysutil_user_getuid(const struct vsf_sysutil_user* p_user);
d7fdbd
-int vsf_sysutil_user_getgid(const struct vsf_sysutil_user* p_user);
d7fdbd
+unsigned int vsf_sysutil_user_getuid(const struct vsf_sysutil_user* p_user);
d7fdbd
+unsigned int vsf_sysutil_user_getgid(const struct vsf_sysutil_user* p_user);
d7fdbd
 
d7fdbd
-struct vsf_sysutil_group* vsf_sysutil_getgrgid(const int gid);
d7fdbd
+struct vsf_sysutil_group* vsf_sysutil_getgrgid(const unsigned int gid);
d7fdbd
 const char* vsf_sysutil_group_getname(const struct vsf_sysutil_group* p_group);
d7fdbd
 
d7fdbd
 /* More random things */
d7fdbd
@@ -316,7 +316,7 @@ void vsf_sysutil_qsort(void* p_base, unsigned int num_elem,
d7fdbd
 char* vsf_sysutil_getenv(const char* p_var);
d7fdbd
 typedef void (*exitfunc_t)(void);
d7fdbd
 void vsf_sysutil_set_exit_func(exitfunc_t exitfunc);
d7fdbd
-int vsf_sysutil_getuid(void);
d7fdbd
+unsigned int vsf_sysutil_getuid(void);
d7fdbd
 
d7fdbd
 /* Syslogging (bah) */
d7fdbd
 void vsf_sysutil_openlog(int force);
d7fdbd
@@ -329,8 +329,8 @@ void vsf_sysutil_setuid(const struct vsf_sysutil_user* p_user);
d7fdbd
 void vsf_sysutil_setgid(const struct vsf_sysutil_user* p_user);
d7fdbd
 void vsf_sysutil_setuid_numeric(int uid);
d7fdbd
 void vsf_sysutil_setgid_numeric(int gid);
d7fdbd
-int vsf_sysutil_geteuid(void);
d7fdbd
-int vsf_sysutil_getegid(void);
d7fdbd
+unsigned int vsf_sysutil_geteuid(void);
d7fdbd
+unsigned int vsf_sysutil_getegid(void);
d7fdbd
 void vsf_sysutil_seteuid(const struct vsf_sysutil_user* p_user);
d7fdbd
 void vsf_sysutil_setegid(const struct vsf_sysutil_user* p_user);
d7fdbd
 void vsf_sysutil_seteuid_numeric(int uid);
d7fdbd
-- 
d7fdbd
2.14.4
d7fdbd