[
https://issues.apache.org/jira/browse/COUCHDB-2748?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15237750#comment-15237750
]
ASF GitHub Bot commented on COUCHDB-2748:
-----------------------------------------
GitHub user eiri opened a pull request:
https://github.com/apache/couchdb-chttpd/pull/113
Reject incorrectly encoded urls
This makes chttpd to raise `400 Bad Request` error in case provided URL
consist "%" character that not followed by two hex characters as required by
RFC 2141.
Related issue: COUCHDB-2748
You can merge this pull request into a Git repository by running:
$ git pull https://github.com/cloudant/couchdb-chttpd
2748-reject-incorrectly-encoded-url
Alternatively you can review and apply these changes as the patch at:
https://github.com/apache/couchdb-chttpd/pull/113.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 #113
----
commit 18648b973e64bea387cff51d831c9e7a67a0d8ca
Author: Eric Avdey <[email protected]>
Date: 2016-04-12T18:39:29Z
Reject incorrectly encoded urls
----
> encoding problems with reserved chars
> -------------------------------------
>
> Key: COUCHDB-2748
> URL: https://issues.apache.org/jira/browse/COUCHDB-2748
> Project: CouchDB
> Issue Type: Bug
> Components: Database Core
> Reporter: Robert Kowalski
>
> Let's create a database!
> {noformat}
> curl -X PUT http://localhost:5984/testrainyday
> {noformat}
> I get: {{{"ok":true}}}
> Let's create a document called BANANA%253A21%25
> {noformat}
> curl -X PUT http://localhost:5984/testrainyday/BANANA%253A21%25 -d '{}'
> {noformat}
> CouchDB returns:
> {noformat}
> {"_id":"BANANA%3A21%","_rev":"1-967a00dff5e02add41819138abb3284d"}
> {noformat}
> (note the changed id - it misses the 25)
> lets use the id from the response to retrieve the doc:
> {noformat}
> curl http://localhost:5984/testrainyday/BANANA%3A21%
> {noformat}
> i get:
> {noformat}
> {"error":"not_found","reason":"missing"}
> {noformat}
> :(
> New try:
> curl http://localhost:5984/testrainyday/_all_docs
> returns:
> {noformat}
> {"total_rows":1,"offset":0,"rows":[
> {"id":"BANANA%3A21%","key":"BANANA%3A21%","value":{"rev":"1-967a00dff5e02add41819138abb3284d"}}
> ]}
> {noformat}
> I get BANANA%3A21% as id again, but when I want to curl it or use in my JS
> application, I get `{"error":"not_found","reason":"missing"}`
> I noticed that it works for these two ids:
> curl -X PUT http://localhost:5984/testrainyday/BANANA%25 -d '{}'
> {noformat}
> {"ok":true,"id":"BANANA%","rev":"1-967a00dff5e02add41819138abb3284d"}
> {noformat}
> In this last case it works magically for both ids:
> {noformat}
> (17:54:11) [robert@tequila-work] ~ $ curl -X PUT
> http://localhost:5984/testrainyday/BANANA%25 -d '{}'
> {"ok":true,"id":"BANANA%","rev":"1-967a00dff5e02add41819138abb3284d"}
> (17:55:45) [robert@tequila-work] ~ $ curl
> http://localhost:5984/testrainyday/BANANA%25
> {"_id":"BANANA%","_rev":"1-967a00dff5e02add41819138abb3284d"}
> (17:55:57) [robert@tequila-work] ~ $ curl
> http://localhost:5984/testrainyday/BANANA%
> {"_id":"BANANA%","_rev":"1-967a00dff5e02add41819138abb3284d"}
> {noformat}
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)