On 13 Nov 2013, at 11:46, Oleg Krupnov <oleg.krup...@gmail.com> wrote:

> Thanks for new info, but no, unfortunately, this NSURLIsWritableKey
> cannot discriminate between "not writable due to file permissions” and
> “not writable due to sandbox” cases. The both cases are "not writable"
> for the NSURLIsWritableKey.
> 
> I’ve found another workaround but not sure how reliable it is, because
> the bookmark data is an opaque object and its implementation is not
> clear.
> 
> Namely, when I need to test a URL for writability, I create two
> bookmark datas from the url using the -[NSURL
> bookmarkDataWithOptions:…] method. The first is created with
> NSURLBookmarkCreationSecurityScopeAllowOnlyReadAccess option, and
> another one without it.
> 
> Then I test whether the two NSData objects that I obtain are
> byte-by-byte identical (-[NSData isEqualToData:]), and if yes, then I
> assume this is a read-only bookmark. Otherwise, I assume this bookmark
> is writeable, from sandboxing point of view.
> 
> The weak point of this method is the assumption that the obtained
> bookmark NSData is always identical if the path and its sandbox access
> mode do not change. I could theoretically get a false positive if I
> get a different NSData object while the url is still read-only. The
> false negative seems less likely (that I get an byte-by-byte identical
> NSData object while the URL is not read-only any more.)
> 
> If I could be sure that bookmark data doesn’t involve any changeable
> data (like time stamps etc.), this could be a reliable method.

Hmmm, that sounds very ropey to me. In my experience 
NSURLBookmarkCreationSecurityScopeAllowOnlyReadAccess has little to no effect 
on how the file is handled at a write level. i.e. if you have read-only access 
to the file, creating the bookmark will fail since it tries to achieve write 
access to the file.

I think you should back up and consider your design. The sandbox isn’t really 
designed to be tested in this manner. Instead your app is supposed to track 
things and have a decent idea of which resources it ought to have access to, 
and which not.


_______________________________________________

Cocoa-dev mailing list (Cocoa-dev@lists.apple.com)

Please do not post admin requests or moderator comments to the list.
Contact the moderators at cocoa-dev-admins(at)lists.apple.com

Help/Unsubscribe/Update your Subscription:
https://lists.apple.com/mailman/options/cocoa-dev/archive%40mail-archive.com

This email sent to arch...@mail-archive.com

Reply via email to