* dbus/dbus-sysdeps.h:
authorThiago Macieira <thiago@kde.org>
Tue, 24 Oct 2006 20:25:01 +0000 (20:25 +0000)
committerThiago Macieira <thiago@kde.org>
Tue, 24 Oct 2006 20:25:01 +0000 (20:25 +0000)
* dbus/dbus-sysdeps-unix.c: Add function
_dbus_make_file_world_readable that chmods a file to 0644.

* dbus/dbus-sysdeps-unix.c (_dbus_get_autolaunch_address):
        Avoid writing to the static "argv" array, thereby avoiding a
        COW on the child process.

* dbus/dbus-internals.c (_dbus_create_uuid_file_exclusively):
        call _dbus_make_file_world_readable on the created file.

ChangeLog
dbus/dbus-internals.c
dbus/dbus-sysdeps-unix.c
dbus/dbus-sysdeps.h

index 17a343c..9200d1b 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,16 @@
+2006-10-24  Thiago Macieira  <thiago@kde.org>
+
+       * dbus/dbus-sysdeps.h:
+       * dbus/dbus-sysdeps-unix.c: Add function
+       _dbus_make_file_world_readable that chmods a file to 0644.
+
+       * dbus/dbus-sysdeps-unix.c (_dbus_get_autolaunch_address):
+        Avoid writing to the static "argv" array, thereby avoiding a
+        COW on the child process.
+
+       * dbus/dbus-internals.c (_dbus_create_uuid_file_exclusively):
+        call _dbus_make_file_world_readable on the created file.
+
 2006-10-23  David Zeuthen  <davidz@redhat.com>
 
        * dbus/dbus-memory.c: Use atomic variable to protect
index 73e8e08..961e726 100644 (file)
@@ -639,6 +639,8 @@ _dbus_create_uuid_file_exclusively (const DBusString *filename,
   if (!_dbus_string_save_to_file (&encoded, filename, error))
     goto error;
 
+  if (!_dbus_make_file_world_readable (filename, error))
+    goto error;
 
   _dbus_string_free (&encoded);
 
index 01b712b..4576405 100644 (file)
@@ -1802,6 +1802,33 @@ _dbus_string_save_to_file (const DBusString *str,
   return retval;
 }
 
+/** Makes the file readable by every user in the system.
+ *
+ * @param filename the filename
+ * @param error error location
+ * @returns #TRUE if the file's permissions could be changed.
+ */
+dbus_bool_t
+_dbus_make_file_world_readable(const DBusString *filename,
+                               DBusError *error)
+{
+  const char *filename_c;
+
+  _DBUS_ASSERT_ERROR_IS_CLEAR (error);
+
+  filename_c = _dbus_string_get_const_data (filename);
+  if (chmod (filename_c, 0644) == -1)
+    {
+      dbus_set_error (error,
+                      DBUS_ERROR_FAILED,
+                      "Could not change permissions of file %s: %s\n",
+                      filename_c,
+                      _dbus_strerror (errno));
+      return FALSE;
+    }
+  return TRUE;
+}
+
 /** Creates the given file, failing if the file already exists.
  *
  * @param filename the filename
@@ -2361,11 +2388,11 @@ _dbus_get_autolaunch_address (DBusString *address,
     }
   
   i = 0;
-  argv[i] = DBUS_BINDIR "/dbus-launch";
+  argv[i] = "dbus-launch";
   ++i;
   argv[i] = "--autolaunch";
   ++i;
-  argv[i] = /* const cast */ (char*) _dbus_string_get_const_data (&uuid);
+  argv[i] = _dbus_string_get_data (&uuid);
   ++i;
   argv[i] = "--binary-syntax";
   ++i;
@@ -2423,10 +2450,9 @@ _dbus_get_autolaunch_address (DBusString *address,
       close (fd);
       close (address_pipe[WRITE_END]);
 
-      execv (argv[0], argv);
+      execv (DBUS_BINDIR "/dbus-launch", argv);
 
       /* failed, try searching PATH */
-      argv[0] = "dbus-launch";
       execvp ("dbus-launch", argv);
 
       /* still nothing, we failed */
index 77eda96..9e4e654 100644 (file)
@@ -273,6 +273,9 @@ dbus_bool_t _dbus_string_save_to_file (const DBusString *str,
                                        const DBusString *filename,
                                        DBusError        *error);
 
+dbus_bool_t _dbus_make_file_world_readable   (const DBusString *filename,
+                                              DBusError *error);
+
 dbus_bool_t    _dbus_create_file_exclusively (const DBusString *filename,
                                               DBusError        *error);
 dbus_bool_t    _dbus_delete_file             (const DBusString *filename,