Verify that NewRemoteIndexerPath requests are coming from beagled When the IndexHelper process is created, it looks up and saves the DBUS sender id of the com.novell.Beagle owner. On every NewRemoteIndexerPath request, this id is compared against the id of the dbus message sender of the request. Index: beagled/IndexHelper/IndexHelper.cs =================================================================== RCS file: /cvs/gnome/beagle/beagled/IndexHelper/IndexHelper.cs,v retrieving revision 1.6 diff -u -B -p -r1.6 IndexHelper.cs --- beagled/IndexHelper/IndexHelper.cs 24 Feb 2005 02:25:53 -0000 1.6 +++ beagled/IndexHelper/IndexHelper.cs 5 Mar 2005 00:01:21 -0000 @@ -43,6 +43,8 @@ namespace Beagle.IndexHelper { static readonly public string FactoryPath = "/com/novell/BeagleIndexHelper/Factory"; static readonly public string IndexPathPrefix = "/com/novell/BeagleIndexHelper/Index"; + static private string process_owner; + static void Main (string [] args) { bool run_by_hand = (Environment.GetEnvironmentVariable ("BEAGLE_RUN_HELPER_BY_HAND") != null); @@ -74,6 +76,9 @@ namespace Beagle.IndexHelper { Environment.Exit (-1); } + // Save the owner ID of the com.novell.Beagle service + process_owner = Beagle.Daemon.DBusisms.BusDriver.GetServiceOwner (Beagle.DBusisms.Name); + // Start monitoring the beagle daemon GLib.Timeout.Add (2000, new GLib.TimeoutHandler (BeagleDaemonWatcherTimeoutHandler)); @@ -114,6 +119,11 @@ namespace Beagle.IndexHelper { th } #endif + } + + public static bool CheckSenderID (string sender) + { + return sender == process_owner; } static bool BeagleDaemonWatcherTimeoutHandler () Index: beagled/IndexHelper/RemoteIndexerImpl.cs =================================================================== RCS file: /cvs/gnome/beagle/beagled/IndexHelper/RemoteIndexerImpl.cs,v retrieving revision 1.10 diff -u -B -p -r1.10 RemoteIndexerImpl.cs --- beagled/IndexHelper/RemoteIndexerImpl.cs 28 Feb 2005 06:42:06 -0000 1.10 +++ beagled/IndexHelper/RemoteIndexerImpl.cs 5 Mar 2005 00:01:21 -0000 @@ -149,13 +149,16 @@ namespace Beagle.IndexHelper { ///////////////////////////////////////////////////////////////////////////////////// - // FIXME: We should reject calls to NewRemoteIndexerPath from - // anyone except for the process that started us. - static Hashtable remote_indexer_cache = new Hashtable (); override public string NewRemoteIndexerPath (string name) { + if (! IndexHelperTool.CheckSenderID (DBus.Message.Current.Sender)) { + Logger.Log.Error ("NewRemoteIndexerPath: Rejected request from {0}", + DBus.Message.Current.Sender); + return null; + } + string path = Path.Combine (IndexHelperTool.IndexPathPrefix, name); if (! remote_indexer_cache.Contains (name)) { LuceneDriver driver = new LuceneDriver (name);