View previous topic :: View next topic |
Author |
Message |
diegoto Guru
Joined: 10 Jun 2006 Posts: 305 Location: Argentina
|
Posted: Sun Dec 16, 2007 5:39 pm Post subject: |
|
|
Le comento como lo hice, bueno en realidad es lo que hace el patch que puso pacho2.
La linea de codigo de main.c
Code: |
#define ROOTSESSION_RESPONSE_CONTINUE 1
#define ROOTSESSION_RESPONSE_QUIT 3
static gboolean
gsm_check_for_root (void)
{
GtkWidget *dlg;
gint response;
if (geteuid () != 0)
return FALSE;
dlg = gtk_message_dialog_new (NULL, GTK_DIALOG_MODAL, GTK_MESSAGE_WARNING,
GTK_BUTTONS_NONE,
_("This session is running as a privileged user"));
gtk_message_dialog_format_secondary_text (GTK_MESSAGE_DIALOG (dlg),
_("Running a session as a privileged user should be avoided for security reasons. If possible, you should log in as a normal user."));
/* FIXME: would be nice to have a icon for Continue */
gtk_dialog_add_buttons (GTK_DIALOG (dlg),
_("_Continue"), ROOTSESSION_RESPONSE_CONTINUE,
GTK_STOCK_QUIT, ROOTSESSION_RESPONSE_QUIT,
NULL);
gtk_dialog_set_default_response (GTK_DIALOG (dlg),
ROOTSESSION_RESPONSE_QUIT);
gtk_window_set_title (GTK_WINDOW (dlg), "");
gtk_window_set_position (GTK_WINDOW (dlg), GTK_WIN_POS_CENTER);
response = gtk_dialog_run (GTK_DIALOG (dlg));
gtk_widget_destroy (dlg);
return !(response == ROOTSESSION_RESPONSE_CONTINUE);
}
|
La modifique y quedo de esta manera
Code: |
#define ROOTSESSION_RESPONSE_CONTINUE 1
#define ROOTSESSION_RESPONSE_QUIT 3
static gboolean
gsm_check_for_root (void)
{
return FALSE;
}
Osea que siempre devuelva FALSO en caso de que este utilizando el usuario root. Y como lo veo ahorra crear la ventana de dialogo también | .
Muchas gracias gente!.. Saludos _________________ Diego Najar
http://www.muser.com.ar <-- Blog Personal |
|
Back to top |
|
|
i92guboj Bodhisattva
Joined: 30 Nov 2004 Posts: 10315 Location: Córdoba (Spain)
|
Posted: Sun Dec 16, 2007 10:15 pm Post subject: |
|
|
Es lo bastante elegante
Al comentar esa línea se fuerza la ejecución del "return FALSE;" de forma incondicional. Es decir, que aunque se rompa la condición impuesta (es decir, aún si el UID fuera igual a cero, y por tanto el usuario sería root) se saldrá de la función inmediatamente, sin ejecutar lo que hay bajo el "return FALSE;"
La forma más elegante de arreglarlo sería anular la llamada a la función. Ahora mismo aún se llama a la función, y la función se ejecuta, aunque sea para salir de forma inmediata. Lo cual es virtualmente inocuo, pero ocupa recursos (aunque sean pocos) de forma totalmente innecesaria. Muy probablemente la llamada a la función debe estar en algún punto dentro de la función main() en ese mismo fichero, aunque como no he mirado tampoco puedo decir mucho. Si alguien adjunta el fichero y lo pega en un pastebin o algo le puedo echar un vistazo. Aunque el parche de más arriba funcionará de todas formas, aunque no sea técnicamente óptimo |
|
Back to top |
|
|
|
|
You cannot post new topics in this forum You cannot reply to topics in this forum You cannot edit your posts in this forum You cannot delete your posts in this forum You cannot vote in polls in this forum
|
|