svn commit: r195388 - stable/7/usr.bin/catman
Brooks Davis
brooks at FreeBSD.org
Mon Jul 6 01:32:31 UTC 2009
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, ".");
}
More information about the svn-src-stable
mailing list