{"id":6712,"date":"2012-12-18T19:40:11","date_gmt":"2012-12-19T00:40:11","guid":{"rendered":"http:\/\/mjtsai.com\/blog\/?p=6712"},"modified":"2024-10-09T15:37:05","modified_gmt":"2024-10-09T19:37:05","slug":"sandboxing-sandvox","status":"publish","type":"post","link":"https:\/\/mjtsai.com\/blog\/2012\/12\/18\/sandboxing-sandvox\/","title":{"rendered":"Sandboxing Sandvox"},"content":{"rendered":"<p><a href=\"http:\/\/www.mikeabdullah.net\/how-we-sandboxed-sandvox.html\">Mike Abdullah<\/a>:<\/p>\n<blockquote cite=\"http:\/\/www.mikeabdullah.net\/how-we-sandboxed-sandvox.html\"><p>At first glance, Sandvox seems a pretty good fit for the sandbox. It&rsquo;s document-based and doesn&rsquo;t have too deep a hook into the OS&rsquo;s configuration. But as ever in programming, we did run into a few of those pesky edge cases.<\/p><\/blockquote>\n<p>A lot of the work involved sandboxing the <a href=\"https:\/\/github.com\/karelia\/iMedia\/\">iMedia framework<\/a>, a cool open-source attempt to provide the iLife SDK that Apple never did. However, once Karelia developers found the media files they ran into problems storing references to them:<\/p>\n<blockquote cite=\"http:\/\/www.mikeabdullah.net\/how-we-sandboxed-sandvox.html\"><p>There is a nasty bug with security-scoped bookmarks though. Generating one requires <em>write<\/em>&nbsp;access to the target file (<a href=\"rdar:\/\/problem\/11929296\">rdar:\/\/problem\/11929296<\/a>). For files from the media browser, for example, Sandvox only has read access, and so creating the bookmark fails.<\/p><\/blockquote>\n<p>This bug has been known for a really long time. It&rsquo;s a shame that Apple hasn&rsquo;t fixed it yet.<\/p>","protected":false},"excerpt":{"rendered":"<p>Mike Abdullah: At first glance, Sandvox seems a pretty good fit for the sandbox. It&rsquo;s document-based and doesn&rsquo;t have too deep a hook into the OS&rsquo;s configuration. But as ever in programming, we did run into a few of those pesky edge cases. A lot of the work involved sandboxing the iMedia framework, a cool [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"apple_news_api_created_at":"2024-10-09T19:37:06Z","apple_news_api_id":"f633daef-04d8-4b7b-98b3-42c324f15811","apple_news_api_modified_at":"2024-10-09T19:37:07Z","apple_news_api_revision":"AAAAAAAAAAD\/\/\/\/\/\/\/\/\/\/w==","apple_news_api_share_url":"https:\/\/apple.news\/A9jPa7wTYS3uYs0LDJPFYEQ","apple_news_coverimage":0,"apple_news_coverimage_caption":"","apple_news_is_hidden":false,"apple_news_is_paid":false,"apple_news_is_preview":false,"apple_news_is_sponsored":false,"apple_news_maturity_rating":"","apple_news_metadata":"\"\"","apple_news_pullquote":"","apple_news_pullquote_position":"","apple_news_slug":"","apple_news_sections":"\"\"","apple_news_suppress_video_url":false,"apple_news_use_image_component":false,"footnotes":""},"categories":[4],"tags":[30,32,39,71,53,253,2669],"class_list":["post-6712","post","type-post","status-publish","format-standard","hentry","category-programming-category","tag-mac","tag-macapp","tag-macappstore","tag-programming","tag-sandboxing","tag-sandvox","tag-security-scoped-bookmarks"],"apple_news_notices":[],"_links":{"self":[{"href":"https:\/\/mjtsai.com\/blog\/wp-json\/wp\/v2\/posts\/6712","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/mjtsai.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/mjtsai.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/mjtsai.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/mjtsai.com\/blog\/wp-json\/wp\/v2\/comments?post=6712"}],"version-history":[{"count":2,"href":"https:\/\/mjtsai.com\/blog\/wp-json\/wp\/v2\/posts\/6712\/revisions"}],"predecessor-version":[{"id":45317,"href":"https:\/\/mjtsai.com\/blog\/wp-json\/wp\/v2\/posts\/6712\/revisions\/45317"}],"wp:attachment":[{"href":"https:\/\/mjtsai.com\/blog\/wp-json\/wp\/v2\/media?parent=6712"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/mjtsai.com\/blog\/wp-json\/wp\/v2\/categories?post=6712"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/mjtsai.com\/blog\/wp-json\/wp\/v2\/tags?post=6712"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}