patches/ConsoleKit-08-can-stop.diff
author Jon Tibble <meths@btinternet.com>
Sat, 06 Oct 2012 16:11:50 +0100
branchs11express-2010-11
changeset 22109 db10202d5f6d
parent 16935 c1b9badaf07d
permissions -rw-r--r--
Added tag oi_151a_prestable7 for changeset 25dee50cecca
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
16935
c1b9badaf07d 2009-11-10 Wang Xin <[email protected]>
jedy
parents:
diff changeset
     1
diff --git a/src/ck-manager.c b/src/ck-manager.c
c1b9badaf07d 2009-11-10 Wang Xin <[email protected]>
jedy
parents:
diff changeset
     2
index 99693a3..6bda488 100644
c1b9badaf07d 2009-11-10 Wang Xin <[email protected]>
jedy
parents:
diff changeset
     3
--- a/src/ck-manager.c
c1b9badaf07d 2009-11-10 Wang Xin <[email protected]>
jedy
parents:
diff changeset
     4
+++ b/src/ck-manager.c
c1b9badaf07d 2009-11-10 Wang Xin <[email protected]>
jedy
parents:
diff changeset
     5
@@ -1026,9 +1026,10 @@ get_system_num_users (CkManager *manager)
c1b9badaf07d 2009-11-10 Wang Xin <[email protected]>
jedy
parents:
diff changeset
     6
 }
c1b9badaf07d 2009-11-10 Wang Xin <[email protected]>
jedy
parents:
diff changeset
     7
 
c1b9badaf07d 2009-11-10 Wang Xin <[email protected]>
jedy
parents:
diff changeset
     8
 #ifdef ENABLE_RBAC_SHUTDOWN
c1b9badaf07d 2009-11-10 Wang Xin <[email protected]>
jedy
parents:
diff changeset
     9
-static void
c1b9badaf07d 2009-11-10 Wang Xin <[email protected]>
jedy
parents:
diff changeset
    10
+static gboolean
c1b9badaf07d 2009-11-10 Wang Xin <[email protected]>
jedy
parents:
diff changeset
    11
 check_rbac_permissions (CkManager             *manager,
c1b9badaf07d 2009-11-10 Wang Xin <[email protected]>
jedy
parents:
diff changeset
    12
                         DBusGMethodInvocation *context,
c1b9badaf07d 2009-11-10 Wang Xin <[email protected]>
jedy
parents:
diff changeset
    13
+                        const char            *action,
c1b9badaf07d 2009-11-10 Wang Xin <[email protected]>
jedy
parents:
diff changeset
    14
                         AuthorizedCallback     callback)
c1b9badaf07d 2009-11-10 Wang Xin <[email protected]>
jedy
parents:
diff changeset
    15
 {
c1b9badaf07d 2009-11-10 Wang Xin <[email protected]>
jedy
parents:
diff changeset
    16
         const char *sender;
c1b9badaf07d 2009-11-10 Wang Xin <[email protected]>
jedy
parents:
diff changeset
    17
@@ -1050,7 +1051,7 @@ check_rbac_permissions (CkManager             *manager,
c1b9badaf07d 2009-11-10 Wang Xin <[email protected]>
jedy
parents:
diff changeset
    18
         username = get_user_name (uid);
c1b9badaf07d 2009-11-10 Wang Xin <[email protected]>
jedy
parents:
diff changeset
    19
 
c1b9badaf07d 2009-11-10 Wang Xin <[email protected]>
jedy
parents:
diff changeset
    20
         if (username == NULL ||
c1b9badaf07d 2009-11-10 Wang Xin <[email protected]>
jedy
parents:
diff changeset
    21
-            !chkauthattr (RBAC_SHUTDOWN_KEY, username)) {
c1b9badaf07d 2009-11-10 Wang Xin <[email protected]>
jedy
parents:
diff changeset
    22
+            !chkauthattr (action, username)) {
c1b9badaf07d 2009-11-10 Wang Xin <[email protected]>
jedy
parents:
diff changeset
    23
                 res = FALSE;
c1b9badaf07d 2009-11-10 Wang Xin <[email protected]>
jedy
parents:
diff changeset
    24
                 goto out;
c1b9badaf07d 2009-11-10 Wang Xin <[email protected]>
jedy
parents:
diff changeset
    25
         }
c1b9badaf07d 2009-11-10 Wang Xin <[email protected]>
jedy
parents:
diff changeset
    26
@@ -1065,9 +1066,11 @@ out:
c1b9badaf07d 2009-11-10 Wang Xin <[email protected]>
jedy
parents:
diff changeset
    27
 
c1b9badaf07d 2009-11-10 Wang Xin <[email protected]>
jedy
parents:
diff changeset
    28
         g_free (username);
c1b9badaf07d 2009-11-10 Wang Xin <[email protected]>
jedy
parents:
diff changeset
    29
 
c1b9badaf07d 2009-11-10 Wang Xin <[email protected]>
jedy
parents:
diff changeset
    30
-        if (res) {
c1b9badaf07d 2009-11-10 Wang Xin <[email protected]>
jedy
parents:
diff changeset
    31
+        if (res && callback) {
c1b9badaf07d 2009-11-10 Wang Xin <[email protected]>
jedy
parents:
diff changeset
    32
                 callback (manager, context);
c1b9badaf07d 2009-11-10 Wang Xin <[email protected]>
jedy
parents:
diff changeset
    33
         }
c1b9badaf07d 2009-11-10 Wang Xin <[email protected]>
jedy
parents:
diff changeset
    34
+
c1b9badaf07d 2009-11-10 Wang Xin <[email protected]>
jedy
parents:
diff changeset
    35
+        return res;
c1b9badaf07d 2009-11-10 Wang Xin <[email protected]>
jedy
parents:
diff changeset
    36
 }
c1b9badaf07d 2009-11-10 Wang Xin <[email protected]>
jedy
parents:
diff changeset
    37
 #endif
c1b9badaf07d 2009-11-10 Wang Xin <[email protected]>
jedy
parents:
diff changeset
    38
 
c1b9badaf07d 2009-11-10 Wang Xin <[email protected]>
jedy
parents:
diff changeset
    39
@@ -1126,7 +1129,7 @@ ck_manager_restart (CkManager             *manager,
c1b9badaf07d 2009-11-10 Wang Xin <[email protected]>
jedy
parents:
diff changeset
    40
 #if defined HAVE_POLKIT
c1b9badaf07d 2009-11-10 Wang Xin <[email protected]>
jedy
parents:
diff changeset
    41
         check_polkit_permissions (manager, context, action, do_restart);
c1b9badaf07d 2009-11-10 Wang Xin <[email protected]>
jedy
parents:
diff changeset
    42
 #elif defined ENABLE_RBAC_SHUTDOWN
c1b9badaf07d 2009-11-10 Wang Xin <[email protected]>
jedy
parents:
diff changeset
    43
-        check_rbac_permissions (manager, context, do_restart);
c1b9badaf07d 2009-11-10 Wang Xin <[email protected]>
jedy
parents:
diff changeset
    44
+        check_rbac_permissions (manager, context, RBAC_SHUTDOWN_KEY, do_restart);
c1b9badaf07d 2009-11-10 Wang Xin <[email protected]>
jedy
parents:
diff changeset
    45
 #else
c1b9badaf07d 2009-11-10 Wang Xin <[email protected]>
jedy
parents:
diff changeset
    46
         g_warning ("Compiled without PolicyKit or RBAC support!");
c1b9badaf07d 2009-11-10 Wang Xin <[email protected]>
jedy
parents:
diff changeset
    47
 #endif
c1b9badaf07d 2009-11-10 Wang Xin <[email protected]>
jedy
parents:
diff changeset
    48
@@ -1146,7 +1149,12 @@ ck_manager_can_restart (CkManager  *manager,
c1b9badaf07d 2009-11-10 Wang Xin <[email protected]>
jedy
parents:
diff changeset
    49
 #if defined HAVE_POLKIT
c1b9badaf07d 2009-11-10 Wang Xin <[email protected]>
jedy
parents:
diff changeset
    50
         get_polkit_permissions (manager, action, context);
c1b9badaf07d 2009-11-10 Wang Xin <[email protected]>
jedy
parents:
diff changeset
    51
 #else
c1b9badaf07d 2009-11-10 Wang Xin <[email protected]>
jedy
parents:
diff changeset
    52
-        dbus_g_method_return (context, TRUE);
c1b9badaf07d 2009-11-10 Wang Xin <[email protected]>
jedy
parents:
diff changeset
    53
+        if (check_rbac_permissions (manager, context, RBAC_SHUTDOWN_KEY,
c1b9badaf07d 2009-11-10 Wang Xin <[email protected]>
jedy
parents:
diff changeset
    54
+                                        NULL)) {
c1b9badaf07d 2009-11-10 Wang Xin <[email protected]>
jedy
parents:
diff changeset
    55
+                dbus_g_method_return (context, TRUE);
c1b9badaf07d 2009-11-10 Wang Xin <[email protected]>
jedy
parents:
diff changeset
    56
+        } else {
c1b9badaf07d 2009-11-10 Wang Xin <[email protected]>
jedy
parents:
diff changeset
    57
+                dbus_g_method_return (context, FALSE);
c1b9badaf07d 2009-11-10 Wang Xin <[email protected]>
jedy
parents:
diff changeset
    58
+        }
c1b9badaf07d 2009-11-10 Wang Xin <[email protected]>
jedy
parents:
diff changeset
    59
 #endif
c1b9badaf07d 2009-11-10 Wang Xin <[email protected]>
jedy
parents:
diff changeset
    60
 
c1b9badaf07d 2009-11-10 Wang Xin <[email protected]>
jedy
parents:
diff changeset
    61
         return TRUE;
c1b9badaf07d 2009-11-10 Wang Xin <[email protected]>
jedy
parents:
diff changeset
    62
@@ -1197,7 +1205,7 @@ ck_manager_stop (CkManager             *manager,
c1b9badaf07d 2009-11-10 Wang Xin <[email protected]>
jedy
parents:
diff changeset
    63
 #if defined HAVE_POLKIT
c1b9badaf07d 2009-11-10 Wang Xin <[email protected]>
jedy
parents:
diff changeset
    64
         check_polkit_permissions (manager, context, action, do_stop);
c1b9badaf07d 2009-11-10 Wang Xin <[email protected]>
jedy
parents:
diff changeset
    65
 #elif defined  ENABLE_RBAC_SHUTDOWN
c1b9badaf07d 2009-11-10 Wang Xin <[email protected]>
jedy
parents:
diff changeset
    66
-        check_rbac_permissions (manager, context, do_stop);
c1b9badaf07d 2009-11-10 Wang Xin <[email protected]>
jedy
parents:
diff changeset
    67
+        check_rbac_permissions (manager, context, RBAC_SHUTDOWN_KEY, do_stop);
c1b9badaf07d 2009-11-10 Wang Xin <[email protected]>
jedy
parents:
diff changeset
    68
 #else
c1b9badaf07d 2009-11-10 Wang Xin <[email protected]>
jedy
parents:
diff changeset
    69
         g_warning ("Compiled without PolicyKit or RBAC support!");
c1b9badaf07d 2009-11-10 Wang Xin <[email protected]>
jedy
parents:
diff changeset
    70
 #endif
c1b9badaf07d 2009-11-10 Wang Xin <[email protected]>
jedy
parents:
diff changeset
    71
@@ -1216,7 +1224,12 @@ ck_manager_can_stop (CkManager  *manager,
c1b9badaf07d 2009-11-10 Wang Xin <[email protected]>
jedy
parents:
diff changeset
    72
 #if defined HAVE_POLKIT
c1b9badaf07d 2009-11-10 Wang Xin <[email protected]>
jedy
parents:
diff changeset
    73
         get_polkit_permissions (manager, action, context);
c1b9badaf07d 2009-11-10 Wang Xin <[email protected]>
jedy
parents:
diff changeset
    74
 #else
c1b9badaf07d 2009-11-10 Wang Xin <[email protected]>
jedy
parents:
diff changeset
    75
-        dbus_g_method_return (context, TRUE);
c1b9badaf07d 2009-11-10 Wang Xin <[email protected]>
jedy
parents:
diff changeset
    76
+        if (check_rbac_permissions (manager, context, RBAC_SHUTDOWN_KEY,
c1b9badaf07d 2009-11-10 Wang Xin <[email protected]>
jedy
parents:
diff changeset
    77
+                                        NULL)) {
c1b9badaf07d 2009-11-10 Wang Xin <[email protected]>
jedy
parents:
diff changeset
    78
+                dbus_g_method_return (context, TRUE);
c1b9badaf07d 2009-11-10 Wang Xin <[email protected]>
jedy
parents:
diff changeset
    79
+        } else {
c1b9badaf07d 2009-11-10 Wang Xin <[email protected]>
jedy
parents:
diff changeset
    80
+                dbus_g_method_return (context, FALSE);
c1b9badaf07d 2009-11-10 Wang Xin <[email protected]>
jedy
parents:
diff changeset
    81
+        }
c1b9badaf07d 2009-11-10 Wang Xin <[email protected]>
jedy
parents:
diff changeset
    82
 #endif
c1b9badaf07d 2009-11-10 Wang Xin <[email protected]>
jedy
parents:
diff changeset
    83
 
c1b9badaf07d 2009-11-10 Wang Xin <[email protected]>
jedy
parents:
diff changeset
    84
         return TRUE;