dbus/dbus dbus-sysdeps.h, 1.63, 1.64 dbus-sysdeps-unix.c, 1.13, 1.14 dbus-internals.c, 1.53, 1.54

Thiago J. Macieira thiago at kemper.freedesktop.org
Tue Oct 24 13:25:03 PDT 2006


Update of /cvs/dbus/dbus/dbus
In directory kemper:/tmp/cvs-serv28940/dbus

Modified Files:
	dbus-sysdeps.h dbus-sysdeps-unix.c dbus-internals.c 
Log Message:
	* 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.


Index: dbus-sysdeps.h
===================================================================
RCS file: /cvs/dbus/dbus/dbus/dbus-sysdeps.h,v
retrieving revision 1.63
retrieving revision 1.64
diff -u -d -r1.63 -r1.64
--- dbus-sysdeps.h	21 Oct 2006 23:09:18 -0000	1.63
+++ dbus-sysdeps.h	24 Oct 2006 20:25:01 -0000	1.64
@@ -273,6 +273,9 @@
                                        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,

Index: dbus-sysdeps-unix.c
===================================================================
RCS file: /cvs/dbus/dbus/dbus/dbus-sysdeps-unix.c,v
retrieving revision 1.13
retrieving revision 1.14
diff -u -d -r1.13 -r1.14
--- dbus-sysdeps-unix.c	21 Oct 2006 18:17:02 -0000	1.13
+++ dbus-sysdeps-unix.c	24 Oct 2006 20:25:01 -0000	1.14
@@ -1802,6 +1802,33 @@
   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 @@
     }
   
   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 @@
       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: dbus-internals.c
===================================================================
RCS file: /cvs/dbus/dbus/dbus/dbus-internals.c,v
retrieving revision 1.53
retrieving revision 1.54
diff -u -d -r1.53 -r1.54
--- dbus-internals.c	20 Oct 2006 03:25:22 -0000	1.53
+++ dbus-internals.c	24 Oct 2006 20:25:01 -0000	1.54
@@ -639,6 +639,8 @@
   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);
 



More information about the dbus-commit mailing list