Sign Up
Log In
Log In
or
Sign Up
Places
All Projects
Status Monitor
Collapse sidebar
openSUSE:Evergreen:11.1
rpm-python
fixsbits.diff
Overview
Repositories
Revisions
Requests
Users
Attributes
Meta
File fixsbits.diff of Package rpm-python
--- lib/fsm.c.orig 2010-06-04 13:05:35.598307000 +0000 +++ lib/fsm.c 2010-06-04 13:06:57.501726000 +0000 @@ -1421,6 +1421,16 @@ static int fsmStat(/*@special@*/ /*@part } #endif +static void removeSBITS(const char *path) +{ + struct stat stb; + if (lstat(path, &stb) == 0 && S_ISREG(stb.st_mode)) { + if ((stb.st_mode & 06000) != 0) { + (void) chmod(path, stb.st_mode & 0777); + } + } +} + #define IS_DEV_LOG(_x) \ ((_x) != NULL && strlen(_x) >= (sizeof("/dev/log")-1) && \ !strncmp((_x), "/dev/log", sizeof("/dev/log")-1) && \ @@ -2132,11 +2142,8 @@ if (!(fsm->mapFlags & CPIO_ALL_HARDLINKS /*@notreached@*/ break; case FSM_UNLINK: - if (fsm->mapFlags & CPIO_SBIT_CHECK) { - struct stat stb; - if (Lstat(fsm->path, &stb) == 0 && S_ISREG(stb.st_mode) && (stb.st_mode & 06000) != 0) - chmod(fsm->path, stb.st_mode & 0777); - } + if (fsm->mapFlags & CPIO_SBIT_CHECK) + removeSBITS(fsm->path); rc = Unlink(fsm->path); if (_fsm_debug && (stage & FSM_SYSCALL)) rpmMessage(RPMMESS_DEBUG, " %8s (%s) %s\n", cur, @@ -2145,6 +2152,8 @@ if (!(fsm->mapFlags & CPIO_ALL_HARDLINKS rc = (errno == ENOENT ? CPIOERR_ENOENT : CPIOERR_UNLINK_FAILED); break; case FSM_RENAME: + if (fsm->mapFlags & CPIO_SBIT_CHECK) + removeSBITS(fsm->path); rc = Rename(fsm->opath, fsm->path); #if defined(ETXTBSY) if (rc && errno == ETXTBSY) {
Locations
Projects
Search
Status Monitor
Help
OpenBuildService.org
Documentation
API Documentation
Code of Conduct
Contact
Support
@OBShq
Terms
openSUSE Build Service is sponsored by
The Open Build Service is an
openSUSE project
.
Sign Up
Log In
Places
Places
All Projects
Status Monitor