You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

85 lines
2.2 KiB

diff -uNr xtrans-1.3.5/Xtransutil.c xtrans-1.3.5.mod/Xtransutil.c
--- xtrans-1.3.5/Xtransutil.c 2014-09-12 21:32:47.000000000 +0300
+++ xtrans-1.3.5.mod/Xtransutil.c 2018-06-15 19:15:52.525720899 +0300
@@ -478,27 +478,6 @@
}
/* Dir doesn't exist. Try to create it */
-#if !defined(WIN32) && !defined(__CYGWIN__)
- /*
- * 'sticky' bit requested: assume application makes
- * certain security implications. If effective user ID
- * is != 0: fail as we may not be able to meet them.
- */
- if (geteuid() != 0) {
- if (mode & 01000) {
- prmsg(1, "mkdir: ERROR: euid != 0,"
- "directory %s will not be created.\n",
- path);
-#ifdef FAIL_HARD
- return -1;
-#endif
- } else {
- prmsg(1, "mkdir: Cannot create %s with root ownership\n",
- path);
- }
- }
-#endif
-
#ifndef WIN32
if (mkdir(path, mode) == 0) {
if (chmod(path, mode)) {
@@ -521,14 +500,9 @@
} else {
if (S_ISDIR(buf.st_mode)) {
- int updateOwner = 0;
int updateMode = 0;
- int updatedOwner = 0;
int updatedMode = 0;
int status = 0;
- /* Check if the directory's ownership is OK. */
- if (buf.st_uid != 0)
- updateOwner = 1;
/*
* Check if the directory's mode is OK. An exact match isn't
@@ -566,7 +540,7 @@
* directory's owner and mode. Otherwise it isn't safe to attempt
* to do this.
*/
- if (updateMode || updateOwner) {
+ if (updateMode) {
int fd = -1;
struct stat fbuf;
if ((fd = open(path, O_RDONLY)) != -1) {
@@ -588,8 +562,6 @@
close(fd);
return -1;
}
- if (updateOwner && fchown(fd, 0, 0) == 0)
- updatedOwner = 1;
if (updateMode && fchmod(fd, mode) == 0)
updatedMode = 1;
close(fd);
@@ -597,20 +569,6 @@
}
#endif
- if (updateOwner && !updatedOwner) {
-#ifdef FAIL_HARD
- if (status & FAIL_IF_NOT_ROOT) {
- prmsg(1, "mkdir: ERROR: Owner of %s must be set to root\n",
- path);
- return -1;
- }
-#endif
-#if !defined(__APPLE_CC__) && !defined(__CYGWIN__)
- prmsg(1, "mkdir: Owner of %s should be set to root\n",
- path);
-#endif
- }
-
if (updateMode && !updatedMode) {
#ifdef FAIL_HARD
if (status & FAIL_IF_NOMODE) {