X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=src%2Fsecurity.c;h=9b274239e8dc8b5d40a04108792d32d3438b2ccf;hb=217e0391609f18725d7d6267045b21960bd81faa;hp=f81fc465002dc4fe5f54518002f37a7790cd0b3a;hpb=e25d3bebe018bfbb85cee46376e5e82325c2f4eb;p=framework%2Fconnectivity%2Fconnman.git diff --git a/src/security.c b/src/security.c index f81fc46..9b27423 100644 --- a/src/security.c +++ b/src/security.c @@ -2,7 +2,7 @@ * * Connection Manager * - * Copyright (C) 2007-2008 Intel Corporation. All rights reserved. + * Copyright (C) 2007-2009 Intel Corporation. All rights reserved. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License version 2 as @@ -25,7 +25,6 @@ #include "connman.h" -static GStaticRWLock security_lock = G_STATIC_RW_LOCK_INIT; static GSList *security_list = NULL; static gint compare_priority(gconstpointer a, gconstpointer b) @@ -36,55 +35,58 @@ static gint compare_priority(gconstpointer a, gconstpointer b) return security2->priority - security1->priority; } +/** + * connman_security_register: + * @security: security module + * + * Register a new security module + * + * Returns: %0 on success + */ int connman_security_register(struct connman_security *security) { DBG("security %p name %s", security, security->name); - g_static_rw_lock_writer_lock(&security_lock); - security_list = g_slist_insert_sorted(security_list, security, compare_priority); - g_static_rw_lock_writer_unlock(&security_lock); - return 0; } +/** + * connman_security_unregister: + * @security: security module + * + * Remove a previously registered security module + */ void connman_security_unregister(struct connman_security *security) { DBG("security %p name %s", security, security->name); - g_static_rw_lock_writer_lock(&security_lock); - security_list = g_slist_remove(security_list, security); - - g_static_rw_lock_writer_unlock(&security_lock); } -int __connman_security_check_privileges(DBusMessage *message) +int __connman_security_check_privilege(DBusMessage *message, + enum connman_security_privilege privilege) { GSList *list; const char *sender; - int err = -EPERM; + int err = 0; DBG("message %p", message); sender = dbus_message_get_sender(message); - g_static_rw_lock_reader_lock(&security_lock); - for (list = security_list; list; list = list->next) { struct connman_security *security = list->data; DBG("%s", security->name); if (security->authorize_sender) { - err = security->authorize_sender(sender); + err = security->authorize_sender(sender, privilege); break; } } - g_static_rw_lock_reader_unlock(&security_lock); - return err; }