Commit Graph

50 Commits (185fdc194782e24775db22c26a79687b1598be01)

Author SHA1 Message Date
Alexander Larsson 4f4b8c536b No need to put introspection xml in resources
This is already built in to the gdbus codegen code.
2016-04-26 11:54:59 +02:00
Alexander Larsson af03d2f5b4 Remove unused local variables reported by clang 2016-04-21 09:48:56 +02:00
Alexander Larsson c3bae9af57 No need for newlines in g_debug messages 2016-03-14 13:01:09 +01:00
Alexander Larsson 46a192824c fuse: Store basename in dir so we don't have to keep looking it up
Its immutable for a document anyway
2016-03-14 10:58:08 +01:00
Alexander Larsson 9537bdc339 document portal: Avoid some deadlock
We can't hold the db lock and call into the fuse backend, because that
can create deadlocks if it calls back into the db.
2016-03-14 10:50:34 +01:00
Alexander Larsson e14837308b Now newlines needed in g_debug calls 2016-03-11 17:28:23 +01:00
Alexander Larsson 7a61eaa91d Reimplement fuse backend
The magic inode numbers we used before are problematic.

The inode nrs are tied to the file names, so inode changes on rename, which breaks posix expectations.

Also, it relied on 64bit inode space which is not true on i386.

So, this is a new implementation that uses a more traditional approach
of dynamically allocating inodes as needed.
2016-03-11 17:00:08 +01:00
Simon McVittie 9efe31e8d4 Add systemd user units corresponding to the D-Bus session services
Signed-off-by: Simon McVittie <smcv@debian.org>
2016-01-28 23:45:47 +01:00
Alexander Larsson 4177f358cb common: Make it explicit that XdgAppError are portal errors 2015-12-08 12:16:38 +01:00
Alexander Larsson 3ce0c6f7f9 document portal: Add AddNamed method for host-side use
This is needed for the "save as" file selector portal
2015-12-02 15:55:41 +01:00
Alexander Larsson 106a5b06ec Rename lib/ to common/ in preparation for public xdg-app library 2015-11-26 22:05:38 +01:00
Alexander Larsson 64d7c00045 Move dbus invocation peer app detection to lib/ 2015-10-21 10:23:37 +02:00
Alexander Larsson 6e1c211a5c Correct capitalization on dbus interface filename 2015-10-21 09:48:53 +02:00
Alexander Larsson 7c4898cbb2 document-portal: Fix warning
We need to return something from main()
2015-10-06 10:12:19 +02:00
Alexander Larsson 208eb7b1aa Propagate Xauthority details to the sandbox if X11 is enabled
Some xservers out there (like xorg 1.17.1) have a broken server interpreted
local xauth, which causes apps to fail to connect to the xserver.
This fixes that by propagating Xauthority data such as the MIT-MAGIC-COOKIE-1.
2015-10-01 21:23:23 +02:00
Alexander Larsson cf5050126e fuse: Disable entry cache to work around race condition 2015-10-01 18:02:13 +02:00
Colin Walters b337fc7621 build: Fix srcdir != builddir from git
Was hitting this in gnome-continuous, which does srcdir != builddir by
default.
2015-09-29 23:26:06 +02:00
Alexander Larsson 2d31c3c7da fuse: Supply mode when creating files
https://bugs.freedesktop.org/show_bug.cgi?id=92034
2015-09-18 14:27:32 +02:00
Alexander Larsson 645c433960 Fix distcheck issues 2015-09-17 20:24:04 +02:00
Alexander Larsson eec8798f5e document portal: Add support for transient documents
These are useful for passing temporary files.
2015-09-17 20:09:50 +02:00
Alexander Larsson 4ca4f78483 document portal: Fix crashes when dbus activated
We handle the first message (the activating message) before we
have gotten the name aquired message. Make sure that this
is correctly handled.
2015-09-09 16:25:51 +02:00
Alexander Larsson 8c04d2b532 fuse: Add some more debug spew 2015-09-08 15:33:55 +02:00
Alexander Larsson 31837cdaa3 fuse: Drop DOC_DIR_INO_CLASS
We can just use a APP_DOC_DIR_INO_CLASS with app_id 0.
This gets rid of some duplicated code.
2015-09-08 15:23:18 +02:00
Alexander Larsson 42c6cd4574 document portal: Correctly handle recursive documents
I.e. if you pass in a document fd to the document portal we
reuse the existing id.
2015-09-08 14:53:14 +02:00
Alexander Larsson af331d364f document portal: Move locking explicitly into portal handlers
This is requires because do i/o on the passed in fd in add() and
if you pass in a fd on the fuse mount itself we deadlock.
2015-09-08 14:23:27 +02:00
Alexander Larsson bbc6fa8835 document-portal: Allow dbus owner replacing 2015-09-08 12:18:14 +02:00
Alexander Larsson ad9f05397e fuse: Add some more debug spew 2015-09-08 11:15:31 +02:00
Alexander Larsson bb6e476f62 fuse: Raise entry cache times now that we invalidate 2015-09-08 11:15:05 +02:00
Alexander Larsson 8fe6a115f6 fuse: Properly invalidate inodes and entries 2015-09-08 11:09:40 +02:00
Alexander Larsson 44f295c088 fuse: Add daemonizing switch
This will be used for the tests
2015-09-08 09:47:32 +02:00
Alexander Larsson 8af69c93af fuse: Unmount previous fuse instance if ENOTCONN 2015-09-08 09:33:44 +02:00
Alexander Larsson 2f115c89af document-portal: Actually respect WRITE permissions 2015-09-04 17:00:37 +02:00
Alexander Larsson 6cf4d24a09 document-portal: Use xdg_app_is_valid_name() to validate app names 2015-09-04 14:50:02 +02:00
Alexander Larsson 7ad47c74ea document-portals: Support unique documents
These document id will not be shared for multiple users. The main
difference is this this makes it safe for the creating app to delete
the document if he wants to (i.e. for temporary docs), and thus we can
grant this additional permission for the calling app.
2015-09-04 14:46:02 +02:00
Alexander Larsson 83201bd7e4 fuse: Always open files with O_NOFOLLOW
Following symlinks is risky as the sandbox may control them.
2015-09-04 14:16:45 +02:00
Alexander Larsson 0c07417d5f Add debug output for release 2015-09-03 22:17:00 +02:00
Alexander Larsson 04879fdea5 Store and verify parent dir dev/ino and pass O_PATH fds
In order to be robust against symlink attacks (i.e. make a document
for a path, then replace it with a symlink somewhere else and have the
portal read that instead) we store the parent dev/ino when we create
the document id and always verify that (atomically with the *at
syscalls) on each use.

Also, we pass O_PATH fds when creating documents, as it allows us
to be a bit safer. For instance we can verify that the fd is a O_PATH
fd before doing any ops on it, and it makes it possible to avoid other
symlink trickery.

Also, we drop the double add methods, and just use the O_PATH version.
2015-09-03 22:17:00 +02:00
Alexander Larsson 4a298aeec3 fuse: Make filesystem multithreaded
This allows us to handle multiple apps better.
2015-09-03 22:16:43 +02:00
Alexander Larsson 6775dc1002 Use g_auto(GStrv) instead of glnx_strfreev 2015-08-31 09:51:48 +02:00
Alexander Larsson 52525f46fd Remove ununsed variables reported by clang 2015-08-27 16:13:15 +02:00
Alexander Larsson 42012a7d5a Drop the xdp specific errors and use the xdg-app ones 2015-08-27 10:40:58 +02:00
Alexander Larsson b6355e1acb Document portal: Store paths, not uris
There is no way to do this for generic uris anyway, lets not
pretend we're solving a larger problem.
2015-08-27 10:38:22 +02:00
Alexander Larsson 0c25376657 Switch document portal to use strings for document ids 2015-08-26 17:26:53 +02:00
Alexander Larsson 12fbd9ff95 Make document portal use the new permission store 2015-08-26 17:11:35 +02:00
Alexander Larsson a9ffa4960d Move gvdb to lib/ 2015-08-25 09:27:35 +02:00
Alexander Larsson c465c15e51 Don't list empty names in opendir
This happened in my devel system by mistake and it broke readdir.
2015-08-04 12:05:21 +02:00
Alexander Larsson f76f6a39ef document-portal: *always* use the by-app location
This is better as you can't accidentally access another apps docs (although
you can still see the backing real files)
2015-07-11 10:48:53 +02:00
Alexander Larsson 08d05a30a3 Automatically start and mount document portal in sandbox 2015-07-10 17:49:59 +02:00
Alexander Larsson 4c4c66fc2d Add GetMountPoint method for document portal
This is both to get the mount path and to have a nice way
to activate the mount.
2015-07-10 17:02:38 +02:00
Alexander Larsson 929071ad10 Import xdg-document-portal from github repo
This pulls in the daemon code from:
     https://github.com/alexlarsson/xdg-document-portal/

We need this in xdg-app because we need to set up the mounts correctly.
2015-07-10 16:56:39 +02:00