summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorColin Walters <walters@verbum.org>2011-01-07 13:11:36 -0500
committerColin Walters <walters@verbum.org>2011-01-07 13:11:36 -0500
commit765db5f7e8845ff14f392176e45a0cecc72d1314 (patch)
tree1861dd33902d1f1e3c737d41f8683e18a8757982
parentf03e25d5695499de21aabb75db15b827c0176508 (diff)
downloaddbus-765db5f7e8845ff14f392176e45a0cecc72d1314.tar.gz
RHEL-4: Import dbus-0.13-uid.patch
-rw-r--r--dbus/dbus-userdb.c31
1 files changed, 31 insertions, 0 deletions
diff --git a/dbus/dbus-userdb.c b/dbus/dbus-userdb.c
index 1e105b29..c9157880 100644
--- a/dbus/dbus-userdb.c
+++ b/dbus/dbus-userdb.c
@@ -64,6 +64,19 @@ free_group_info (void *data)
dbus_free (info);
}
+static dbus_bool_t
+is_a_number (const DBusString *str,
+ unsigned long *num)
+{
+ int end;
+
+ if (_dbus_string_parse_int (str, 0, num, &end) &&
+ end == _dbus_string_get_length (str))
+ return TRUE;
+ else
+ return FALSE;
+}
+
static DBusUserInfo*
_dbus_user_database_lookup (DBusUserDatabase *db,
dbus_uid_t uid,
@@ -74,6 +87,15 @@ _dbus_user_database_lookup (DBusUserDatabase *db,
_DBUS_ASSERT_ERROR_IS_CLEAR (error);
_dbus_assert (uid != DBUS_UID_UNSET || username != NULL);
+
+ /* See if the username is really a number */
+ if (uid == DBUS_UID_UNSET)
+ {
+ unsigned long n;
+
+ if (is_a_number (username, &n))
+ uid = n;
+ }
if (uid != DBUS_UID_UNSET)
info = _dbus_hash_table_lookup_ulong (db->users, uid);
@@ -152,6 +174,15 @@ _dbus_user_database_lookup_group (DBusUserDatabase *db,
_DBUS_ASSERT_ERROR_IS_CLEAR (error);
+ /* See if the group is really a number */
+ if (gid == DBUS_UID_UNSET)
+ {
+ unsigned long n;
+
+ if (is_a_number (groupname, &n))
+ gid = n;
+ }
+
if (gid != DBUS_GID_UNSET)
info = _dbus_hash_table_lookup_ulong (db->groups, gid);
else