DBusNonceFile: don't always fail when use_subdir=TRUE, i.e. on Unix
authorSimon McVittie <simon.mcvittie@collabora.co.uk>
Tue, 22 Feb 2011 13:42:46 +0000 (13:42 +0000)
committerSimon McVittie <simon.mcvittie@collabora.co.uk>
Wed, 25 May 2011 15:03:31 +0000 (16:03 +0100)
In shell-like pseudocode, the desired result is:

if $use_subdir
  dir = $tmpdir/dbus_nonce-$random
  path = $dir/nonce
  mkdir $dir
  write file at $path
else
  dir = $user_owned_place
  path = $dir/dbus_nonce-$random
  write file at $path

However, /nonce was accidentally appended to $dir instead of $path,
resulting in an attempt to mkdir /tmp/dbus_nonce-XXXX/nonce when
dbus_nonce-XXXX hadn't been created yet.

Bug: https://bugs.freedesktop.org/show_bug.cgi?id=34569
Tested-by: David Zeuthen <davidz@redhat.com>
Reviewed-by: David Zeuthen <davidz@redhat.com>
dbus/dbus-nonce.c

index d7cee64..d30b253 100644 (file)
@@ -275,7 +275,7 @@ do_noncefile_create (DBusNonceFile *noncefile,
           }
         if (!_dbus_string_init (&noncefile->path)
             || !_dbus_string_copy (&noncefile->dir, 0, &noncefile->path, 0)
-            || !_dbus_string_append (&noncefile->dir, "/nonce"))
+            || !_dbus_string_append (&noncefile->path, "/nonce"))
           {
             dbus_set_error (error, DBUS_ERROR_NO_MEMORY, NULL);
             goto on_error;