Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 6 Jul 2009 01:32:29 +0000 (UTC)
From:      Brooks Davis <brooks@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-7@freebsd.org
Subject:   svn commit: r195388 - stable/7/usr.bin/catman
Message-ID:  <200907060132.n661WT0L064915@svn.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: brooks
Date: Mon Jul  6 01:32:29 2009
New Revision: 195388
URL: http://svn.freebsd.org/changeset/base/195388

Log:
  MFC r194493 and r194548
  
  When checking if we can write to a file, use access() instead of a
  manual permission check based on stat output.  Also, get rid of the
  executability check since it is not used.

Modified:
  stable/7/usr.bin/catman/   (props changed)
  stable/7/usr.bin/catman/catman.c

Modified: stable/7/usr.bin/catman/catman.c
==============================================================================
--- stable/7/usr.bin/catman/catman.c	Mon Jul  6 01:04:45 2009	(r195387)
+++ stable/7/usr.bin/catman/catman.c	Mon Jul  6 01:32:29 2009	(r195388)
@@ -57,7 +57,6 @@ __FBSDID("$FreeBSD$");
 #define TEST_FILE	0x04
 #define TEST_READABLE	0x08
 #define TEST_WRITABLE	0x10
-#define TEST_EXECUTABLE	0x20
 
 static int verbose;		/* -v flag: be verbose with warnings */
 static int pretend;		/* -n, -p flags: print out what would be done
@@ -93,8 +92,6 @@ static const char *locale_device[] = {
 enum Ziptype {NONE, BZIP, GZIP};
 
 static uid_t uid;
-static gid_t gids[NGROUPS_MAX];
-static int ngids;
 static int starting_dir;
 static char tmp_file[MAXPATHLEN];
 struct stat test_st;
@@ -320,23 +317,10 @@ test_path(char *name, time_t *mod_time)
 		result |= TEST_DIR;
 	else if (S_ISREG(test_st.st_mode))
 		result |= TEST_FILE;
-	if (test_st.st_uid == uid) {
-		test_st.st_mode >>= 6;
-	} else {
-		int i;
-		for (i = 0; i < ngids; i++) {
-			if (test_st.st_gid == gids[i]) {
-				test_st.st_mode >>= 3;
-				break;
-			}
-		}
-	}
-	if (test_st.st_mode & S_IROTH)
+	if (access(name, R_OK))
 		result |= TEST_READABLE;
-	if (test_st.st_mode & S_IWOTH)
+	if (access(name, W_OK))
 		result |= TEST_WRITABLE;
-	if (test_st.st_mode & S_IXOTH)
-		result |= TEST_EXECUTABLE;
 	return result;
 }
 
@@ -789,7 +773,6 @@ main(int argc, char **argv)
 			/* NOTREACHED */
 		}
 	}
-	ngids = getgroups(NGROUPS_MAX, gids);
 	if ((starting_dir = open(".", 0)) < 0) {
 		err(1, ".");
 	}



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200907060132.n661WT0L064915>