70 lines
2.3 KiB
Diff
70 lines
2.3 KiB
Diff
|
diff -uNr xorg-server-1.20.1/hw/xfree86/parser/write.c xorg-server-1.20.1.mod/hw/xfree86/parser/write.c
|
||
|
--- xorg-server-1.20.1/hw/xfree86/parser/write.c 2018-08-07 19:31:03.000000000 +0300
|
||
|
+++ xorg-server-1.20.1.mod/hw/xfree86/parser/write.c 2018-10-08 21:07:16.817587230 +0300
|
||
|
@@ -129,64 +129,5 @@
|
||
|
int
|
||
|
xf86writeConfigFile(const char *filename, XF86ConfigPtr cptr)
|
||
|
{
|
||
|
-#ifndef HAS_NO_UIDS
|
||
|
- int ret;
|
||
|
-
|
||
|
- if (getuid() != geteuid()) {
|
||
|
-
|
||
|
-#if !defined(HAS_SAVED_IDS_AND_SETEUID)
|
||
|
- int pid, p;
|
||
|
- int status;
|
||
|
- void (*csig) (int);
|
||
|
-
|
||
|
- /* Need to fork to change ruid without loosing euid */
|
||
|
- csig = OsSignal(SIGCHLD, SIG_DFL);
|
||
|
- switch ((pid = fork())) {
|
||
|
- case -1:
|
||
|
- ErrorF("xf86writeConfigFile(): fork failed (%s)\n",
|
||
|
- strerror(errno));
|
||
|
- return 0;
|
||
|
- case 0: /* child */
|
||
|
- if (setuid(getuid()) == -1)
|
||
|
- FatalError("xf86writeConfigFile(): "
|
||
|
- "setuid failed(%s)\n", strerror(errno));
|
||
|
- ret = doWriteConfigFile(filename, cptr);
|
||
|
- exit(ret);
|
||
|
- break;
|
||
|
- default: /* parent */
|
||
|
- do {
|
||
|
- p = waitpid(pid, &status, 0);
|
||
|
- } while (p == -1 && errno == EINTR);
|
||
|
- }
|
||
|
- OsSignal(SIGCHLD, csig);
|
||
|
- if (p != -1 && WIFEXITED(status) && WEXITSTATUS(status) == 0)
|
||
|
- return 1; /* success */
|
||
|
- else
|
||
|
- return 0;
|
||
|
-
|
||
|
-#else /* HAS_SAVED_IDS_AND_SETEUID */
|
||
|
- int ruid, euid;
|
||
|
-
|
||
|
- ruid = getuid();
|
||
|
- euid = geteuid();
|
||
|
-
|
||
|
- if (seteuid(ruid) == -1) {
|
||
|
- ErrorF("xf86writeConfigFile(): seteuid(%d) failed (%s)\n",
|
||
|
- ruid, strerror(errno));
|
||
|
- return 0;
|
||
|
- }
|
||
|
- ret = doWriteConfigFile(filename, cptr);
|
||
|
-
|
||
|
- if (seteuid(euid) == -1) {
|
||
|
- ErrorF("xf86writeConfigFile(): seteuid(%d) failed (%s)\n",
|
||
|
- euid, strerror(errno));
|
||
|
- }
|
||
|
- return ret;
|
||
|
-
|
||
|
-#endif /* HAS_SAVED_IDS_AND_SETEUID */
|
||
|
-
|
||
|
- }
|
||
|
- else
|
||
|
-#endif /* !HAS_NO_UIDS */
|
||
|
- return doWriteConfigFile(filename, cptr);
|
||
|
+ return doWriteConfigFile(filename, cptr);
|
||
|
}
|