Enlightenment CVS committal
Author : atmosphere
Project : e17
Module : apps/entrance
Dir : e17/apps/entrance/src/client
Modified Files:
entrance_auth.c entrance_auth.h entrance_config.c
entrance_ipc.c entrance_session.c entrance_session.h main.c
Log Message:
o entrance_auth.c
- add entrance_auth_reset, this puts a bandaid on the bad user attempt,
good user, good pass, entrance crashes bug, i can not figure out for the
life of me what free this struct is doing incorrectly... still looking
into it
- set_(pass|user) -> (user|pass)_set functions renamed
- simplified user_set some
o entrance_auth.h
- set_(pass|user) -> (user|pass)_set functions renamed
o entrance_config.c
- indent fixup
o entrance_ipc.c
- send some of those printfs to syslog
o entrance_session.c
- entrance_session_free
- cleanup edje, and the containers
- fix incorrect #ifdef in auth_user function
- disable the freeing/reallocating of the Entrance_Auth struct in favor of
resetting
- entrance_session_user_set
- parameter change Entrance_User -> const char *user
- returns and int, 0 on success, 1 on failure
- entrance_session_pass_set, new function
- returns and int, 0 on success, 1 on failure of user auth w/ this pass
- entrance_session_start_user_session
- changed some syslog output from CRIT to INFO
- use entrance_session_free where applicable
- entrance_sesion_x_session_set
- save user's session when changed in entrance again
o main.c
- no more referencing nested member info of entrance_session, namely the
session->auth attribute
- update to new additions/changes in entrance_session
gonna continue trying to cleanup src/client/ when I get time
===================================================================
RCS file: /cvsroot/enlightenment/e17/apps/entrance/src/client/entrance_auth.c,v
retrieving revision 1.20
retrieving revision 1.21
diff -u -3 -r1.20 -r1.21
--- entrance_auth.c 10 Dec 2004 23:33:31 -0000 1.20
+++ entrance_auth.c 20 Dec 2004 03:07:04 -0000 1.21
@@ -92,7 +92,8 @@
e->pam.handle = NULL;
}
#endif
- syslog(LOG_INFO, "Auth: Session Closed Successfully.");
+ /*
+ syslog(LOG_INFO, "Auth: Session Closed Successfully."); */
}
/**
@@ -103,8 +104,13 @@
entrance_auth_clear_pass(Entrance_Auth * e)
{
if (e->pw)
+ {
if (e->pw->pw_passwd)
+ {
free(e->pw->pw_passwd);
+ e->pw->pw_passwd = NULL;
+ }
+ }
memset(e->pass, 0, sizeof(e->pass));
}
@@ -119,9 +125,25 @@
e->pw = struct_passwd_free(e->pw);
memset(e->pass, 0, sizeof(e->pass));
+ entrance_auth_session_end(e);
free(e);
}
+/**
+ * entrance_auth_reset
+ * @e the Entrance_Auth struct to be reset
+ */
+void
+entrance_auth_reset(Entrance_Auth * e)
+{
+ if (e->pw)
+ e->pw = struct_passwd_free(e->pw);
+
+ memset(e->user, 0, sizeof(e->user));
+ memset(e->pass, 0, sizeof(e->pass));
+}
+
+
#if HAVE_PAM
/**
* _entrance_auth_pam_initialize - initialize PAM session, structures etc.
@@ -260,7 +282,7 @@
* Pass it a char* and it'll set it if it should
*/
void
-entrance_auth_set_pass(Entrance_Auth * e, const char *str)
+entrance_auth_pass_set(Entrance_Auth * e, const char *str)
{
if (str)
snprintf(e->pass, PATH_MAX, "%s", str);
@@ -275,15 +297,16 @@
* to the passed in string, if they don't, e->user is unmodified.
*/
int
-entrance_auth_set_user(Entrance_Auth * e, const char *str)
+entrance_auth_user_set(Entrance_Auth * e, const char *str)
{
- int result = 0;
+ int result = 1;
- if (str)
+ if (e && str)
{
struct passwd *pwent;
memset(e->pass, 0, sizeof(e->pass));
+ memset(e->user, 0, sizeof(e->user));
snprintf(e->user, PATH_MAX, "%s", str);
e->pw = struct_passwd_free(e->pw);
@@ -292,9 +315,6 @@
e->pw = struct_passwd_dup(pwent);
result = 0;
}
- else
- result = 1;
-
endpwent();
}
return (result);
===================================================================
RCS file: /cvsroot/enlightenment/e17/apps/entrance/src/client/entrance_auth.h,v
retrieving revision 1.10
retrieving revision 1.11
diff -u -3 -r1.10 -r1.11
--- entrance_auth.h 1 May 2004 20:44:52 -0000 1.10
+++ entrance_auth.h 20 Dec 2004 03:07:05 -0000 1.11
@@ -70,10 +70,11 @@
/* 0 on success, 1 on failure */
int entrance_auth_cmp_pam(Entrance_Auth * e);
int entrance_auth_cmp_crypt(Entrance_Auth * e, Entrance_Config * cfg);
-void entrance_auth_set_pass(Entrance_Auth * e, const char *str);
+void entrance_auth_pass_set(Entrance_Auth * e, const char *str);
/* 0 on success, 1 on no user by that name */
-int entrance_auth_set_user(Entrance_Auth * e, const char *str);
+int entrance_auth_user_set(Entrance_Auth * e, const char *str);
void entrance_auth_setup_environment(Entrance_Auth * e);
+void entrance_auth_reset(Entrance_Auth * e);
#endif
===================================================================
RCS file:
/cvsroot/enlightenment/e17/apps/entrance/src/client/entrance_config.c,v
retrieving revision 1.25
retrieving revision 1.26
diff -u -3 -r1.25 -r1.26
--- entrance_config.c 16 Dec 2004 01:48:11 -0000 1.25
+++ entrance_config.c 20 Dec 2004 03:07:05 -0000 1.26
@@ -190,8 +190,9 @@
{
syslog(LOG_CRIT,
"/etc/shadow was found but couldn't be read. Run entrance as
root.");
- if(getuid() == 0) {
- exit(-1);
+ if (getuid() == 0)
+ {
+ exit(-1);
}
}
}
===================================================================
RCS file: /cvsroot/enlightenment/e17/apps/entrance/src/client/entrance_ipc.c,v
retrieving revision 1.11
retrieving revision 1.12
diff -u -3 -r1.11 -r1.12
--- entrance_ipc.c 4 Dec 2004 04:26:13 -0000 1.11
+++ entrance_ipc.c 20 Dec 2004 03:07:05 -0000 1.12
@@ -163,7 +163,7 @@
if (ipc_title)
free(ipc_title);
ipc_title = strdup(buf);
- printf("Debug: ipc_title = %s\n", ipc_title);
+ syslog(LOG_INFO, "Debug: ipc_title = %s", ipc_title);
ecore_event_handler_add(ECORE_IPC_EVENT_CLIENT_ADD,
_entrance_ipc_client_add, NULL);
@@ -185,10 +185,10 @@
if ((server =
ecore_ipc_server_connect(ECORE_IPC_LOCAL_SYSTEM, ipc_title, 0, NULL)))
{
- fprintf(stderr, "entrance_ipc_init: Success\n");
+ syslog(LOG_INFO, "entrance_ipc_init: Success");
}
else
- fprintf(stderr, "entrance_ipc_init: connect to daemon failed.\n");
+ syslog(LOG_INFO, "entrance_ipc_init: connect to daemon failed.");
return TRUE;
}
@@ -200,7 +200,7 @@
ecore_ipc_server_del(server);
server = NULL;
ecore_ipc_shutdown();
- fprintf(stderr, "entrance_ipc_shutdown: Success\n");
+ syslog(LOG_INFO, "entrance_ipc_shutdown: Success");
}
int
@@ -227,6 +227,6 @@
0);
ecore_ipc_server_send(server, E_XAUTH_REQ, E_HOMEDIR, pid, 0, 0, homedir,
strlen(homedir) + 1);
- fprintf(stderr, "entranced: Requesting auth for uid %d (%s)\n", uid,
- homedir);
+ syslog(LOG_INFO, "entranced: Requesting auth for uid %d (%s)", uid,
+ homedir);
}
===================================================================
RCS file:
/cvsroot/enlightenment/e17/apps/entrance/src/client/entrance_session.c,v
retrieving revision 1.65
retrieving revision 1.66
diff -u -3 -r1.65 -r1.66
--- entrance_session.c 10 Dec 2004 23:33:31 -0000 1.65
+++ entrance_session.c 20 Dec 2004 03:07:05 -0000 1.66
@@ -63,7 +63,7 @@
}
/**
- * entrance_session_free: free the entrance session
+ * entrance_session_ecore_evas_set :
* @param e - the Entrance_Session to set the ecore evas for
* @param ee - the pointer to a fully setup Ecore_Evas we want to run
*/
@@ -104,6 +104,24 @@
entrance_auth_free(e->auth);
e->auth = NULL;
}
+ if (e->edje)
+ {
+ evas_object_hide(e->edje);
+ evas_object_del(e->edje);
+ e->edje = NULL;
+ }
+ if (e->user_container)
+ {
+ evas_object_hide(e->user_container);
+ evas_object_del(e->user_container);
+ e->user_container = NULL;
+ }
+ if (e->session_container)
+ {
+ evas_object_hide(e->session_container);
+ evas_object_del(e->session_container);
+ e->session_container = NULL;
+ }
if (e->config)
{
entrance_config_free(e->config);
@@ -111,6 +129,7 @@
}
if (e->ee)
{
+ ecore_evas_hide(e->ee);
ecore_evas_free(e->ee);
e->ee = NULL;
}
@@ -148,7 +167,7 @@
{
ok = 1;
e->authed = 1;
- entrance_session_user_set(e, eu);
+ entrance_session_user_set(e, eu->name);
}
break;
case ENTRANCE_AUTOLOGIN_THEME:
@@ -158,7 +177,7 @@
e->config->autologin.username)))
{
e->authed = 1;
- entrance_session_user_set(e, eu);
+ entrance_session_user_set(e, eu->name);
edje_object_signal_emit(e->edje, "entrance,user,auth,success", "");
}
break;
@@ -177,7 +196,7 @@
int
entrance_session_auth_user(Entrance_Session * e)
{
-#ifdef HAVE_PAM
+#if HAVE_PAM
if (e->config->auth == ENTRANCE_USE_PAM)
return (entrance_auth_cmp_pam(e->auth));
else
@@ -196,8 +215,13 @@
{
Evas_Object *obj = NULL;
- entrance_auth_free(e->auth);
+#if 0
+ if (e->auth)
+ entrance_auth_free(e->auth);
e->auth = entrance_auth_new();
+#else
+ entrance_auth_reset(e->auth);
+#endif
if ((obj =
edje_object_part_swallow_get(e->edje, "entrance.user.avatar")))
{
@@ -215,14 +239,16 @@
* @param e - the entrance sesssion currently running
* @param eu - the new entrance user we're setting as "current"
*/
-void
-entrance_session_user_set(Entrance_Session * e, Entrance_User * eu)
+int
+entrance_session_user_set(Entrance_Session * e, const char *user)
{
+ int result = 1;
Evas_Object *obj = NULL;
const char *file = NULL;
Entrance_X_Session *exs = NULL;
+ Entrance_User *eu = NULL;
- if (e && eu)
+ if (e)
{
if ((obj =
edje_object_part_swallow_get(e->edje, "entrance.user.avatar")))
@@ -230,71 +256,54 @@
edje_object_part_unswallow(e->edje, obj);
evas_object_del(obj);
}
- edje_object_file_get(e->edje, &file, NULL);
- if ((obj = entrance_user_edje_get(eu, e->edje, file)))
+ if (!entrance_auth_user_set(e->auth, user))
{
- if (!entrance_auth_set_user(e->auth, eu->name))
+ if ((eu = evas_hash_find(e->config->users.hash, user)) == NULL)
+ eu = entrance_user_new(strdup(user), NULL, e->session);
+
+ if ((eu->session) && (strlen(eu->session) > 0))
{
- if ((eu->session) && (strlen(eu->session) > 0))
- {
- if (e->session)
- free(e->session);
- e->session = strdup(eu->session);
- if ((exs =
- evas_hash_find(e->config->sessions.hash, eu->session)))
- {
- entrance_session_x_session_set(e, exs);
- }
- }
-#if 0
- if ((pass = edje_file_data_get(file, "password")))
+ if (e->session)
+ free(e->session);
+ e->session = strdup(eu->session);
+ }
+ edje_object_file_get(e->edje, &file, NULL);
+ if ((obj = entrance_user_edje_get(eu, e->edje, file)))
+ {
+ if ((exs = evas_hash_find(e->config->sessions.hash, eu->session)))
{
- entrance_auth_set_pass(e->auth, pass);
- result = entrance_session_auth_user(e);
- if (result == 0)
- {
- if (edje_object_part_exists
- (e->edje, "entrance.user.avatar"))
- {
- edje_object_part_swallow(e->edje, "entrance.user.avatar",
- obj);
- }
- edje_object_signal_emit(e->edje,
- "entrance,user,auth,success", "");
- e->authed = 1;
- }
- else
- {
- edje_object_signal_emit(e->edje, "entrance,user,auth,fail",
- "");
- evas_object_del(obj);
- }
+ entrance_session_x_session_set(e, exs);
}
- else
+ evas_object_layer_set(obj, evas_object_layer_get(e->edje));
+ if (edje_object_part_exists(e->edje, "entrance.user.avatar"))
{
-#endif
- evas_object_layer_set(obj, evas_object_layer_get(e->edje));
- if (edje_object_part_exists(e->edje, "entrance.user.avatar"))
- {
- edje_object_part_swallow(e->edje, "entrance.user.avatar",
- obj);
- }
- edje_object_signal_emit(e->edje, "In", "entrance.entry.pass");
- edje_object_signal_emit(e->edje, "entrance,user,success", "");
- edje_object_signal_emit(e->edje, "entrance,user,selected", "");
-#if 0
+ edje_object_part_swallow(e->edje, "entrance.user.avatar", obj);
}
-#endif
- }
- else
- {
- evas_object_del(obj);
- /* edje_object_signal_emit(e->edje, "In", "entrance.entry.pass");
- */
- edje_object_signal_emit(e->edje, "entrance,user,fail", "");
}
+ edje_object_signal_emit(e->edje, "In", "entrance.entry.pass");
+ edje_object_signal_emit(e->edje, "entrance,user,success", "");
+ edje_object_signal_emit(e->edje, "entrance,user,selected", "");
+ result = 0;
+ }
+ else
+ {
+ edje_object_signal_emit(e->edje, "entrance,user,fail", "");
}
}
+ return (result);
+}
+
+int
+entrance_session_pass_set(Entrance_Session * e, const char *pass)
+{
+ int result = 1;
+
+ if (e)
+ {
+ entrance_auth_pass_set(e->auth, pass);
+ result = entrance_session_auth_user(e);
+ }
+ return (result);
}
/**
@@ -374,10 +383,11 @@
if (e->testing)
snprintf(buf, PATH_MAX, "/usr/X11R6/bin/xterm");
- syslog(LOG_CRIT, "Executing %s", buf);
+ syslog(LOG_INFO, "Executing %s", buf);
if (e->ee)
{
+ ecore_evas_hide(e->ee);
ecore_evas_free(e->ee);
e->ee = NULL;
}
@@ -413,9 +423,7 @@
if (setuid(e->auth->pw->pw_uid))
syslog(LOG_CRIT, "Unable to set user id.");
shell = strdup(e->auth->pw->pw_shell);
- entrance_auth_clear_pass(e->auth);
- entrance_auth_free(e->auth);
- e->auth = NULL;
+ entrance_session_free(e);
execl(shell, "-", "-c", buf, NULL);
exit(0);
break;
@@ -426,9 +434,7 @@
break;
}
_entrance_session_user_list_fix(e);
- /* clear users's password out of memory */
- if (e->auth)
- entrance_auth_clear_pass(e->auth);
+ entrance_session_free(e);
/* this bypasses a race condition where entrance loses its x connection */
/* before the wm gets it and x goes and resets itself */
sleep(10);
@@ -454,6 +460,7 @@
{
const char *file = NULL;
Evas_Object *o = NULL, *old_o = NULL;
+ Entrance_User *eu = NULL;
edje_object_file_get(e->edje, &file, NULL);
if ((o = entrance_x_session_edje_get(exs, e->edje, file)))
@@ -462,6 +469,14 @@
free(e->session);
e->session = strdup(exs->session);
+ if ((eu =
+ evas_hash_find(e->config->users.hash, e->auth->user)) != NULL)
+ {
+ if (eu->session)
+ free(eu->session);
+ eu->session = strdup(e->session);
+ }
+
old_o =
edje_object_part_swallow_get(e->edje,
"entrance.xsessions.selected");
===================================================================
RCS file:
/cvsroot/enlightenment/e17/apps/entrance/src/client/entrance_session.h,v
retrieving revision 1.20
retrieving revision 1.21
diff -u -3 -r1.20 -r1.21
--- entrance_session.h 7 Dec 2004 02:45:30 -0000 1.20
+++ entrance_session.h 20 Dec 2004 03:07:05 -0000 1.21
@@ -48,8 +48,9 @@
void entrance_session_run(Entrance_Session * e);
int entrance_session_auth_user(Entrance_Session * e);
void entrance_session_user_reset(Entrance_Session * e);
-void entrance_session_user_set(Entrance_Session * e, Entrance_User * user);
+int entrance_session_user_set(Entrance_Session * e, const char *user);
void entrance_session_user_session_default_set(Entrance_Session * e);
+int entrance_session_pass_set(Entrance_Session * e, const char *pass);
void entrance_session_setup_user_session(Entrance_Session * e);
void entrance_session_start_user_session(Entrance_Session * e);
void entrance_session_edje_object_set(Entrance_Session * e,
===================================================================
RCS file: /cvsroot/enlightenment/e17/apps/entrance/src/client/main.c,v
retrieving revision 1.64
retrieving revision 1.65
diff -u -3 -r1.64 -r1.65
--- main.c 10 Dec 2004 23:33:31 -0000 1.64
+++ main.c 20 Dec 2004 03:07:05 -0000 1.65
@@ -155,18 +155,15 @@
interp_return_key(void *data, const char *str)
{
Evas_Object *o = NULL;
- Entrance_User *eu = NULL;
o = (Evas_Object *) data;
if (!strcmp(esmart_text_entry_edje_part_get(o), "entrance.entry.user"))
{
- if (!entrance_auth_set_user(session->auth, str))
+ if (!entrance_session_user_set(session, str))
{
edje_object_signal_emit(esmart_text_entry_edje_object_get(o),
"entrance,user,success", "");
- if ((eu = evas_hash_find(session->config->users.hash, str)))
- entrance_session_user_set(session, eu);
focus_swap(o, 0);
}
else
@@ -180,22 +177,19 @@
}
if (!strcmp(esmart_text_entry_edje_part_get(o), "entrance.entry.pass"))
{
- if (session->auth->user && strlen(session->auth->user) > 0)
+ if (!entrance_session_pass_set(session, str))
{
- entrance_auth_set_pass(session->auth, str);
- if (!entrance_session_auth_user(session))
- {
- session->authed = 1;
- edje_object_signal_emit(esmart_text_entry_edje_object_get(o),
- "entrance,user,auth,success", "");
- }
- else
- {
- entrance_session_user_reset(session);
- edje_object_signal_emit(esmart_text_entry_edje_object_get(o),
- "entrance,user,auth,fail", "");
- focus_swap(o, 0);
- }
+ session->authed = 1;
+ edje_object_signal_emit(esmart_text_entry_edje_object_get(o),
+ "entrance,user,auth,success", "");
+ }
+ else
+ {
+ esmart_text_entry_text_set(o, "");
+ entrance_session_user_reset(session);
+ edje_object_signal_emit(esmart_text_entry_edje_object_get(o),
+ "entrance,user,auth,fail", "");
+ focus_swap(o, 0);
}
}
}
@@ -306,8 +300,8 @@
* Request cookie here and call ecore_main_loop_quit, after we
* receive the cookie back from server
*/
+ entrance_session_setup_user_session(session);
}
- entrance_session_setup_user_session(session);
}
/**
@@ -348,7 +342,7 @@
{
if (session && data)
{
- entrance_session_user_set(session, (Entrance_User *) data);
+ entrance_session_user_set(session, ((Entrance_User *) data)->name);
}
}
@@ -973,16 +967,15 @@
if (session->authed)
{
entrance_session_start_user_session(session);
- entrance_session_free(session);
}
else
{
entrance_session_free(session);
- ecore_evas_shutdown();
}
if (!testing)
entrance_ipc_shutdown();
edje_shutdown();
+ ecore_evas_shutdown();
ecore_x_shutdown();
ecore_shutdown();
}
@@ -991,6 +984,5 @@
fprintf(stderr, "Fatal error: Could not initialize ecore_evas!\n");
exit(1);
}
-
return (0);
}
-------------------------------------------------------
SF email is sponsored by - The IT Product Guide
Read honest & candid reviews on hundreds of IT Products from real users.
Discover which products truly live up to the hype. Start reading now.
http://productguide.itmanagersjournal.com/
_______________________________________________
enlightenment-cvs mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/enlightenment-cvs