<!-- 
RSS generated by JIRA (9.7.1#970001-sha1:2222b88b221c4928ef0de3161136cc90c8356a66) at Wed Feb 07 21:17:53 UTC 2024

It is possible to restrict the fields that are returned in this document by specifying the 'field' parameter in your request.
For example, to request only the issue key and summary append 'field=key&field=summary' to the URL of your request.
-->
<rss version="0.92" >
<channel>
    <title>MongoDB Jira</title>
    <link>https://jira.mongodb.org</link>
    <description>This file is an XML representation of an issue</description>
    <language>en-us</language>    <build-info>
        <version>9.7.1</version>
        <build-number>970001</build-number>
        <build-date>13-04-2023</build-date>
    </build-info>


<item>
            <title>[CDRIVER-3390] Support multi-byte UTF-8 characters as percent-encoded escapes in URI</title>
                <link>https://jira.mongodb.org/browse/CDRIVER-3390</link>
                <project id="10030" key="CDRIVER">C Driver</project>
                    <description>&lt;p&gt;In the &lt;a href=&quot;https://github.com/mongodb/specifications/blob/master/source/auth/auth.rst#step-4&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;auth spec tests, step 4,&lt;/a&gt; there are various test cases defined to test SASLprep behavior. &lt;/p&gt;

&lt;p&gt;Examples are given of how usernames and passwords containing unicode characters that need to be UTF-8 encoded and escaped would be specified in a connection string, e.g.&lt;/p&gt;
&lt;ul&gt;
	&lt;li&gt;mongodb://IX:I%C2%ADX@mongodb.example.com/admin&lt;/li&gt;
	&lt;li&gt;mongodb://%E2%85%A8:IV@mongodb.example.com/admin&lt;/li&gt;
	&lt;li&gt;mongodb://%E2%85%A8:I%C2%ADV@mongodb.example.com/admin&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;It seems that since these cases are in the spec libmongoc should be able to successfully parse all these URIs. However, these cases yield the following errors, respectively:&lt;/p&gt;
&lt;ul&gt;
	&lt;li&gt;Incorrect URI escapes in password&lt;/li&gt;
	&lt;li&gt;Incorrect URI escapes in username. Percent-encode username and password according to RFC 3986&lt;/li&gt;
	&lt;li&gt;Incorrect URI escapes in username. Percent-encode username and password according to RFC 3986&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;libmongoc does seem to implement corresponding tests that set these usernames and password via setters (see &lt;a href=&quot;https://github.com/mongodb/mongo-c-driver/blob/116cde0c2ff07f59ee0afa7831577700d4beb026/src/libmongoc/tests/test-mongoc-scram.c#L515&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;https://github.com/mongodb/mongo-c-driver/blob/116cde0c2ff07f59ee0afa7831577700d4beb026/src/libmongoc/tests/test-mongoc-scram.c#L515&lt;/a&gt;) but I cannot find tests setting them via the connection string.&lt;/p&gt;</description>
                <environment></environment>
        <key id="968208">CDRIVER-3390</key>
            <summary>Support multi-byte UTF-8 characters as percent-encoded escapes in URI</summary>
                <type id="1" iconUrl="https://jira.mongodb.org/secure/viewavatar?size=xsmall&amp;avatarId=14703&amp;avatarType=issuetype">Bug</type>
                                            <priority id="3" iconUrl="https://jira.mongodb.org/images/icons/priorities/major.svg">Major - P3</priority>
                        <status id="6" iconUrl="https://jira.mongodb.org/images/icons/statuses/closed.png" description="The issue is considered finished, the resolution is correct. Issues which are closed can be reopened.">Closed</status>
                    <statusCategory id="3" key="done" colorName="success"/>
                                    <resolution id="13201">Fixed</resolution>
                                        <assignee username="kevin.albertson@mongodb.com">Kevin Albertson</assignee>
                                    <reporter username="kaitlin.mahar@mongodb.com">Kaitlin Mahar</reporter>
                        <labels>
                    </labels>
                <created>Sun, 13 Oct 2019 23:40:40 +0000</created>
                <updated>Sat, 28 Oct 2023 11:29:04 +0000</updated>
                            <resolved>Thu, 16 Jan 2020 20:00:05 +0000</resolved>
                                                    <fixVersion>1.16.0</fixVersion>
                                    <component>libmongoc</component>
                    <component>uri</component>
                                        <votes>0</votes>
                                    <watches>2</watches>
                                                                                                                <comments>
                            <comment id="2735639" author="xgen-internal-githook" created="Thu, 16 Jan 2020 19:51:03 +0000"  >&lt;p&gt;Author:&lt;/p&gt;
{&apos;name&apos;: &apos;Kevin Albertson&apos;, &apos;username&apos;: &apos;kevinAlbs&apos;, &apos;email&apos;: &apos;kevin.albertson@mongodb.com&apos;}
&lt;p&gt;Message: &lt;a href=&quot;https://jira.mongodb.org/browse/CDRIVER-3390&quot; title=&quot;Support multi-byte UTF-8 characters as percent-encoded escapes in URI&quot; class=&quot;issue-link&quot; data-issue-key=&quot;CDRIVER-3390&quot;&gt;&lt;del&gt;CDRIVER-3390&lt;/del&gt;&lt;/a&gt; support multi-byte UTF-8 percent escapes&lt;br/&gt;
Branch: master&lt;br/&gt;
&lt;a href=&quot;https://github.com/mongodb/mongo-c-driver/commit/bda6377419b328f36bdbee62161bd953d2257c23&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;https://github.com/mongodb/mongo-c-driver/commit/bda6377419b328f36bdbee62161bd953d2257c23&lt;/a&gt;&lt;/p&gt;</comment>
                            <comment id="2732723" author="kevin.albertson" created="Wed, 15 Jan 2020 20:36:23 +0000"  >&lt;p&gt;libmongoc can accept multi-byte UTF-8 sequences directly embedded in a URI. E.g.&lt;/p&gt;
&lt;p/&gt;
&lt;div id=&quot;syntaxplugin&quot; class=&quot;syntaxplugin&quot; style=&quot;border: 1px dashed #bbb; border-radius: 5px !important; overflow: auto; max-height: 30em;&quot;&gt;
&lt;table cellspacing=&quot;0&quot; cellpadding=&quot;0&quot; border=&quot;0&quot; width=&quot;100%&quot; style=&quot;font-size: 1em; line-height: 1.4em !important; font-weight: normal; font-style: normal; color: black;&quot;&gt;
		&lt;tbody &gt;
				&lt;tr id=&quot;syntaxplugin_code_and_gutter&quot;&gt;
						&lt;td  style=&quot; line-height: 1.4em !important; padding: 0em; vertical-align: top;&quot;&gt;
					&lt;pre style=&quot;font-size: 1em; margin: 0 10px;  margin-top: 10px;   margin-bottom: 10px;  width: auto; padding: 0;&quot;&gt;&lt;span style=&quot;color: black; font-family: &apos;Consolas&apos;, &apos;Bitstream Vera Sans Mono&apos;, &apos;Courier New&apos;, Courier, monospace !important;&quot;&gt;uri = mongoc_uri_new (&quot;mongodb://IX:\xE2\x85\xA8@localhost:27017/admin&quot;);&lt;/span&gt;&lt;/pre&gt;
			&lt;/td&gt;
		&lt;/tr&gt;
			&lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;
&lt;p/&gt;

&lt;p&gt;Where \xE2 etc. represent literal byte values. Directly embedding is permitted, but not required, by the connection string spec&apos;s Q&amp;amp;A:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Q: Can the connection string contain non-ASCII characters?&lt;br/&gt;
The connection string can contain non-ASCII characters. The connection string is text, which can be encoded in any way appropriate for the application (e.g. the C Driver requires you to pass it a UTF-8 encoded connection string).&lt;/p&gt;&lt;/blockquote&gt;

&lt;p&gt;However, the percent-encoded escapes only permit characters matching the &lt;tt&gt;isprint&lt;/tt&gt; function. So URIs like &lt;tt&gt;mongodb://IX:I%C2%ADX@mongodb.example.com/admin&lt;/tt&gt; are rejected since &lt;tt&gt;%C2%AD&lt;/tt&gt; represents a two byte UTF-8 character.&lt;/p&gt;

&lt;p&gt;I believe the correct behavior is to support percent-encoded multi-byte UTF-8 characters. This would be consistent with other drivers and RFC-3986.&lt;/p&gt;</comment>
                    </comments>
                <issuelinks>
                            <issuelinktype id="10011">
                    <name>Depends</name>
                                                                <inwardlinks description="is depended on by">
                                                        </inwardlinks>
                                    </issuelinktype>
                    </issuelinks>
                <attachments>
                    </attachments>
                <subtasks>
                    </subtasks>
                <customfields>
                                                                                                                                                                                                                                                                                                                                                                    <customfield id="customfield_15850" key="com.atlassian.jira.plugins.jira-development-integration-plugin:devsummary">
                        <customfieldname>Development</customfieldname>
                        <customfieldvalues>
                            
                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            <customfield id="customfield_12550" key="com.pyxis.greenhopper.jira:gh-lexo-rank">
                        <customfieldname>Rank</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>2|hvlqyv:</customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                <customfield id="customfield_10558" key="com.pyxis.greenhopper.jira:gh-global-rank">
                        <customfieldname>Rank (Obsolete)</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>9223372036854775807</customfieldvalue>
                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            </customfields>
    </item>
</channel>
</rss>