cordova-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "ASF GitHub Bot (JIRA)" <j...@apache.org>
Subject [jira] [Commented] (CB-9891) Inconsistent URI encoding causing permission errors on android
Date Thu, 12 Nov 2015 00:18:11 GMT

    [ https://issues.apache.org/jira/browse/CB-9891?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15001385#comment-15001385
] 

ASF GitHub Bot commented on CB-9891:
------------------------------------

GitHub user jasongin opened a pull request:

    https://github.com/apache/cordova-plugin-file/pull/148

    CB-9891: Fix permission errors due to URI encoding inconsistency on Android

    

You can merge this pull request into a Git repository by running:

    $ git pull https://github.com/jasongin/cordova-plugin-file CB-9891

Alternatively you can review and apply these changes as the patch at:

    https://github.com/apache/cordova-plugin-file/pull/148.patch

To close this pull request, make a commit to your master/trunk branch
with (at least) the following in the commit message:

    This closes #148
    
----
commit ef93b58cecc433382f125702934e3ed30d995eb3
Author: Jason Ginchereau <jasongin@microsoft.com>
Date:   2015-11-11T20:05:32Z

    CB-9891: Fix permission errors due to URI encoding inconsistency on Android

----


> Inconsistent URI encoding causing permission errors on android
> --------------------------------------------------------------
>
>                 Key: CB-9891
>                 URL: https://issues.apache.org/jira/browse/CB-9891
>             Project: Apache Cordova
>          Issue Type: Bug
>          Components: Plugin Camera, Plugin File
>    Affects Versions: 2.1.0, 3.0.0
>         Environment: Android 5+
>            Reporter: Connor Pearson
>            Assignee: Jason Ginchereau
>              Labels: Android, reproduced
>
> Using the camera plugin to get a picture from the photo library returns an encoded URI.
If you then call resolveLocalFileSystemURI the fileEntry object returned contains the decoded
path component of the URI. This path property is used in the toInternalURL function which
means it's also decoded. Because Android gave us permission to the encoded URI, but not the
decoded URI, attempting to access the decoded URI results in a permission error. 
> {code:javascript}
> document.getElementById("myButton").addEventListener("click", function(){
>             navigator.camera.getPicture(function(uri){
>                 console.log(uri); //content://com.android.providers.media.documents/document/image%3A27
        
> 		window.resolveLocalFileSystemURI(uri, function(fileEntry){
>                     console.log(fileEntry.toInternalURL()); //cdvfile://localhost/content/com.android.providers.media.documents/document/image:27
                                                                             
>                     fileEntry.file(function(){alert("success");}, function(){alert("fail");});
>                 },function(error){
>                     // resolved by pulling in PR 119
>                     alert("Fail resolveFileSystemURI code: " + error.code);
>                 });
>             }, null, {sourceType: 0, allowEdit: false});
>         });
> {code}
> I feel like something must be wrong in one of the plugins, but I'm not sure where.
> One possible fix is calling uri.getEncodedPath() instead of uri.getPath in LocalFileSystemURL.parse
and then removing the call to encodeURI() from FileSystem.js, but I'm not sure if this is
the right strategy. [Example|https://github.com/cjpearson/cordova-plugin-file/commit/b1b9a5f9f5940223c443be5418f86dbea75106f5]



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

---------------------------------------------------------------------
To unsubscribe, e-mail: issues-unsubscribe@cordova.apache.org
For additional commands, e-mail: issues-help@cordova.apache.org


Mime
View raw message