patches/xscreensaver-23-bug-6859039.diff
author yippi
Mon, 27 Sep 2010 21:07:51 +0000
changeset 20108 51df67ca9307
parent 18061 1ad14cf3c086
permissions -rw-r--r--
I had these modules listed as being owned by me, but they are really owned by wangke, correcting.
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
18061
1ad14cf3c086 2010-06-01 Alan Coopersmith <[email protected]>
alanc
parents:
diff changeset
     1
/*
1ad14cf3c086 2010-06-01 Alan Coopersmith <[email protected]>
alanc
parents:
diff changeset
     2
 * Copyright (c) 2009, 2010, Oracle and/or its affiliates. All rights reserved.
1ad14cf3c086 2010-06-01 Alan Coopersmith <[email protected]>
alanc
parents:
diff changeset
     3
 *
1ad14cf3c086 2010-06-01 Alan Coopersmith <[email protected]>
alanc
parents:
diff changeset
     4
 * Permission is hereby granted, free of charge, to any person obtaining a
1ad14cf3c086 2010-06-01 Alan Coopersmith <[email protected]>
alanc
parents:
diff changeset
     5
 * copy of this software and associated documentation files (the "Software"),
1ad14cf3c086 2010-06-01 Alan Coopersmith <[email protected]>
alanc
parents:
diff changeset
     6
 * to deal in the Software without restriction, including without limitation
1ad14cf3c086 2010-06-01 Alan Coopersmith <[email protected]>
alanc
parents:
diff changeset
     7
 * the rights to use, copy, modify, merge, publish, distribute, sublicense,
1ad14cf3c086 2010-06-01 Alan Coopersmith <[email protected]>
alanc
parents:
diff changeset
     8
 * and/or sell copies of the Software, and to permit persons to whom the
1ad14cf3c086 2010-06-01 Alan Coopersmith <[email protected]>
alanc
parents:
diff changeset
     9
 * Software is furnished to do so, subject to the following conditions:
1ad14cf3c086 2010-06-01 Alan Coopersmith <[email protected]>
alanc
parents:
diff changeset
    10
 *
1ad14cf3c086 2010-06-01 Alan Coopersmith <[email protected]>
alanc
parents:
diff changeset
    11
 * The above copyright notice and this permission notice (including the next
1ad14cf3c086 2010-06-01 Alan Coopersmith <[email protected]>
alanc
parents:
diff changeset
    12
 * paragraph) shall be included in all copies or substantial portions of the
1ad14cf3c086 2010-06-01 Alan Coopersmith <[email protected]>
alanc
parents:
diff changeset
    13
 * Software.
1ad14cf3c086 2010-06-01 Alan Coopersmith <[email protected]>
alanc
parents:
diff changeset
    14
 *
1ad14cf3c086 2010-06-01 Alan Coopersmith <[email protected]>
alanc
parents:
diff changeset
    15
 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
1ad14cf3c086 2010-06-01 Alan Coopersmith <[email protected]>
alanc
parents:
diff changeset
    16
 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
1ad14cf3c086 2010-06-01 Alan Coopersmith <[email protected]>
alanc
parents:
diff changeset
    17
 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
1ad14cf3c086 2010-06-01 Alan Coopersmith <[email protected]>
alanc
parents:
diff changeset
    18
 * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
1ad14cf3c086 2010-06-01 Alan Coopersmith <[email protected]>
alanc
parents:
diff changeset
    19
 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
1ad14cf3c086 2010-06-01 Alan Coopersmith <[email protected]>
alanc
parents:
diff changeset
    20
 * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
1ad14cf3c086 2010-06-01 Alan Coopersmith <[email protected]>
alanc
parents:
diff changeset
    21
 * DEALINGS IN THE SOFTWARE.
1ad14cf3c086 2010-06-01 Alan Coopersmith <[email protected]>
alanc
parents:
diff changeset
    22
 */
1ad14cf3c086 2010-06-01 Alan Coopersmith <[email protected]>
alanc
parents:
diff changeset
    23
1ad14cf3c086 2010-06-01 Alan Coopersmith <[email protected]>
alanc
parents:
diff changeset
    24
diff --git xscreensaver-5.11/driver/prefs.c xscreensaver-5.11/driver/prefs.c
1ad14cf3c086 2010-06-01 Alan Coopersmith <[email protected]>
alanc
parents:
diff changeset
    25
--- xscreensaver-5.11/driver/prefs.c
1ad14cf3c086 2010-06-01 Alan Coopersmith <[email protected]>
alanc
parents:
diff changeset
    26
+++ xscreensaver-5.11/driver/prefs.c
1ad14cf3c086 2010-06-01 Alan Coopersmith <[email protected]>
alanc
parents:
diff changeset
    27
@@ -382,7 +382,21 @@ parse_init_file (saver_preferences *p)
1ad14cf3c086 2010-06-01 Alan Coopersmith <[email protected]>
alanc
parents:
diff changeset
    28
       return 0;
1ad14cf3c086 2010-06-01 Alan Coopersmith <[email protected]>
alanc
parents:
diff changeset
    29
     }
1ad14cf3c086 2010-06-01 Alan Coopersmith <[email protected]>
alanc
parents:
diff changeset
    30
 
1ad14cf3c086 2010-06-01 Alan Coopersmith <[email protected]>
alanc
parents:
diff changeset
    31
+  /*
1ad14cf3c086 2010-06-01 Alan Coopersmith <[email protected]>
alanc
parents:
diff changeset
    32
+   * 6859039: unprivileged local users can use xscreensaver to show
1ad14cf3c086 2010-06-01 Alan Coopersmith <[email protected]>
alanc
parents:
diff changeset
    33
+   * contents of files they don't have permission to read.
1ad14cf3c086 2010-06-01 Alan Coopersmith <[email protected]>
alanc
parents:
diff changeset
    34
+   */
1ad14cf3c086 2010-06-01 Alan Coopersmith <[email protected]>
alanc
parents:
diff changeset
    35
+
1ad14cf3c086 2010-06-01 Alan Coopersmith <[email protected]>
alanc
parents:
diff changeset
    36
+  /* Drop Privilege before opening .xscreensaver file */
1ad14cf3c086 2010-06-01 Alan Coopersmith <[email protected]>
alanc
parents:
diff changeset
    37
+  uid_t idorg = geteuid ();
1ad14cf3c086 2010-06-01 Alan Coopersmith <[email protected]>
alanc
parents:
diff changeset
    38
+  if (seteuid (getuid ()) != 0)
1ad14cf3c086 2010-06-01 Alan Coopersmith <[email protected]>
alanc
parents:
diff changeset
    39
+    return 0;
1ad14cf3c086 2010-06-01 Alan Coopersmith <[email protected]>
alanc
parents:
diff changeset
    40
+
1ad14cf3c086 2010-06-01 Alan Coopersmith <[email protected]>
alanc
parents:
diff changeset
    41
   in = fopen(name, "r");
1ad14cf3c086 2010-06-01 Alan Coopersmith <[email protected]>
alanc
parents:
diff changeset
    42
+
1ad14cf3c086 2010-06-01 Alan Coopersmith <[email protected]>
alanc
parents:
diff changeset
    43
+  /* Restore Privilege */
1ad14cf3c086 2010-06-01 Alan Coopersmith <[email protected]>
alanc
parents:
diff changeset
    44
+  seteuid (idorg);
1ad14cf3c086 2010-06-01 Alan Coopersmith <[email protected]>
alanc
parents:
diff changeset
    45
+
1ad14cf3c086 2010-06-01 Alan Coopersmith <[email protected]>
alanc
parents:
diff changeset
    46
   if (!in)
1ad14cf3c086 2010-06-01 Alan Coopersmith <[email protected]>
alanc
parents:
diff changeset
    47
     {
1ad14cf3c086 2010-06-01 Alan Coopersmith <[email protected]>
alanc
parents:
diff changeset
    48
       char *buf = (char *) malloc(1024 + strlen(name));
1ad14cf3c086 2010-06-01 Alan Coopersmith <[email protected]>
alanc
parents:
diff changeset
    49