Hi!

I've just realized by performing some more tests that a subtly mistaken
commit from August 31st had introduced a random failure to create users.
Basically, we are checking that an UID is free by comparing all UIDs to
an uninitialized uid_t, which obviously won't work. Sometimes, you
cannot create a new user at all (when the random int is an existing
UID). Sounds like a blocker to me.

The fix I've committed to master is a one-liner with a very low risk
since it only changes the "uid" variable to "user_uid", since it's what
was intended. No need to say, it works as expected in my tests, and
should be system-independent enough to be safe.

What I still don't understand is how it has gone unnoticed for three
weeks, even of myself. Lack of an active development and testing crew is
very sad...


OK to push that to the gnome-2-28 branch?
>From cb83e86d2dbb4df44e7d00a3ae809fe88a718547 Mon Sep 17 00:00:00 2001
From: Milan Bouchet-Valat <nalimi...@club.fr>
Date: Sat, 19 Sep 2009 13:45:07 +0200
Subject: [PATCH] Fix checking whether an UID is free

A mistake in variables could prevent user creation from working at all. We were comparing UIDs with an uninitialized int, leading to strange results. This was introduced by 36cdbf80fa16cfac1a15f24ee32c2b272f68e521.
---
 src/users/user-settings.c |    2 +-
 1 files changed, 1 insertions(+), 1 deletions(-)

diff --git a/src/users/user-settings.c b/src/users/user-settings.c
index 74d68fe..227b27b 100644
--- a/src/users/user-settings.c
+++ b/src/users/user-settings.c
@@ -339,7 +339,7 @@ uid_exists (uid_t uid)
 
 	while (valid) {
 		user = oobs_list_get (list, &list_iter);
-		uid = oobs_user_get_uid (OOBS_USER (user));
+		user_uid = oobs_user_get_uid (OOBS_USER (user));
 		g_object_unref (user);
 
 		if (user_uid == uid)
-- 
1.6.0.4

_______________________________________________
desktop-devel-list mailing list
desktop-devel-list@gnome.org
http://mail.gnome.org/mailman/listinfo/desktop-devel-list

Reply via email to