From 957b778d361fa270e37bc403c2640698f4718e29 Mon Sep 17 00:00:00 2001 From: Peng Huang Date: Wed, 25 Feb 2009 11:03:31 +0800 Subject: Check current uid during startup. --- bus/main.c | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/bus/main.c b/bus/main.c index 8757af5..7e53144 100644 --- a/bus/main.c +++ b/bus/main.c @@ -19,6 +19,8 @@ */ #include +#include +#include #include #include #include "server.h" @@ -106,6 +108,19 @@ main (gint argc, gchar **argv) exit (-1); } + /* check uid */ + { + gchar *username = ibus_get_user_name (); + uid_t uid = getuid (); + struct passwd *pwd = getpwuid (uid); + + if (pwd == NULL || strcmp (pwd->pw_name, username) != 0) { + g_printerr ("Please run ibus-daemon with login user! Do not run ibus-daemon with sudo or su.\n"); + exit (-1); + } + } + + /* daemonize process */ if (daemonize) { if (daemon (1, 0) != 0) { g_printerr ("Can not daemonize ibus.\n"); -- cgit