<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<!DOCTYPE bugzilla SYSTEM "https://bugs.webkit.org/page.cgi?id=bugzilla.dtd">

<bugzilla version="5.0.4.1"
          urlbase="https://bugs.webkit.org/"
          
          maintainer="admin@webkit.org"
>

    <bug>
          <bug_id>127421</bug_id>
          
          <creation_ts>2014-01-22 03:24:13 -0800</creation_ts>
          <short_desc>[curl] Improve realm string parsing in WWW-Authenticate headers</short_desc>
          <delta_ts>2014-01-30 10:57:48 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKit Misc.</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Szabolcs David">davidsz</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>bfulgham</cc>
    
    <cc>commit-queue</cc>
    
    <cc>galpeter</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>970652</commentid>
    <comment_count>0</comment_count>
    <who name="Szabolcs David">davidsz</who>
    <bug_when>2014-01-22 03:24:13 -0800</bug_when>
    <thetext>The realm string contains quotes at the beginning and end - this is the opposite of the libsoup implementation. Furthermore, if the header is concatenated from two or more another headers, it contains more incorrect part.

For example, if the header is:
WWW-Authenticate: Basic realm=&quot;First realm&quot;, Basic realm=&quot;Second realm&quot;

realm string will be:
&quot;First realm&quot;, Basic realm=&quot;Second realm&quot;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>970654</commentid>
    <comment_count>1</comment_count>
      <attachid>221852</attachid>
    <who name="Szabolcs David">davidsz</who>
    <bug_when>2014-01-22 03:26:58 -0800</bug_when>
    <thetext>Created attachment 221852
Proposed patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>970728</commentid>
    <comment_count>2</comment_count>
      <attachid>221852</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2014-01-22 09:54:16 -0800</bug_when>
    <thetext>Comment on attachment 221852
Proposed patch

View in context: https://bugs.webkit.org/attachment.cgi?id=221852&amp;action=review

Looks good. I have a couple of minor comments for your consideration.

&gt; Source/WebCore/platform/network/curl/ResourceHandleManager.cpp:351
&gt;      String authHeader = response.httpHeaderField(&quot;WWW-Authenticate&quot;);

I just noticed that this could probably be const, since we aren&apos;t modifying it.

&gt; Source/WebCore/platform/network/curl/ResourceHandleManager.cpp:358
&gt; +        if (realm.startsWith(&apos;&quot;&apos;) &amp;&amp; realm.endsWith(&apos;&quot;&apos;) &amp;&amp; realm.length() &gt; 1)

What happens if we get the input &quot;&quot;? Are we supposed to create a protection space for the &quot;&quot; realm? Or should we be bailing out early?

&gt; Source/WebCore/platform/network/curl/ResourceHandleManager.cpp:359
&gt; +            realm = realm.substring(1, realm.length()-2);

This might be clearer if it were wrapped up as a little function:

static void removeLeadingAndTrailingQuotes(String&amp; value) ...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>971090</commentid>
    <comment_count>3</comment_count>
      <attachid>221966</attachid>
    <who name="Szabolcs David">davidsz</who>
    <bug_when>2014-01-23 02:36:06 -0800</bug_when>
    <thetext>Created attachment 221966
Proposed patch II.

Thanks for your comments!

&gt; What happens if we get the input &quot;&quot;? Are we supposed to create a protection space for the &quot;&quot; realm? Or should we be bailing out early?

I think we should accept the empty string as realm, because the most popular browsers accept it too.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>973805</commentid>
    <comment_count>4</comment_count>
      <attachid>221966</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2014-01-30 10:30:09 -0800</bug_when>
    <thetext>Comment on attachment 221966
Proposed patch II.

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>973820</commentid>
    <comment_count>5</comment_count>
      <attachid>221966</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-01-30 10:57:46 -0800</bug_when>
    <thetext>Comment on attachment 221966
Proposed patch II.

Clearing flags on attachment: 221966

Committed r163091: &lt;http://trac.webkit.org/changeset/163091&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>973821</commentid>
    <comment_count>6</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-01-30 10:57:48 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>221852</attachid>
            <date>2014-01-22 03:26:58 -0800</date>
            <delta_ts>2014-01-23 03:23:47 -0800</delta_ts>
            <desc>Proposed patch</desc>
            <filename>www-auth-parse.diff</filename>
            <type>text/plain</type>
            <size>1864</size>
            <attacher name="Szabolcs David">davidsz</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCA1MDM3OTkzLi42OGI1ZDViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcg
QEAKKzIwMTQtMDEtMjIgIFN6YWJvbGNzIERhdmlkICA8ZGF2aWRzekBpbmYudS1zemVnZWQuaHU+
CisKKyAgICAgICAgW2N1cmxdIEltcHJvdmUgcmVhbG0gc3RyaW5nIHBhcnNpbmcgaW4gV1dXLUF1
dGhlbnRpY2F0ZSBoZWFkZXJzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xMjc0MjEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBUaGUgcmVhbG0gc3RyaW5nIGNvbnRhaW5zIHF1b3RlcyBhdCB0aGUgYmVnaW5u
aW5nIGFuZCBlbmQgLSB0aGlzIGlzIHRoZQorICAgICAgICBvcHBvc2l0ZSBvZiB0aGUgbGlic291
cCBpbXBsZW1lbnRhdGlvbi4gRnVydGhlcm1vcmUsIGlmIHRoZSBoZWFkZXIgaXMKKyAgICAgICAg
Y29uY2F0ZW5hdGVkIGZyb20gdHdvIG9yIG1vcmUgYW5vdGhlciBoZWFkZXJzLCBpdCBjb250YWlu
cyBtb3JlIGluY29ycmVjdCBwYXJ0LgorCisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jdXJs
L1Jlc291cmNlSGFuZGxlTWFuYWdlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpnZXRQcm90ZWN0
aW9uU3BhY2UpOgorCiAyMDE0LTAxLTIyICBNaWhuZWEgT3ZpZGVuaWUgIDxtaWhuZWFAYWRvYmUu
Y29tPgogCiAgICAgICAgIFtDU1NSZWdpb25zXSBJbmNvcnJlY3QgbGF5b3V0IG9mIGEgcmVnaW9u
IHBzZXVkbyBjaGlsZHJlbgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9jdXJsL1Jlc291cmNlSGFuZGxlTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL2N1cmwvUmVzb3VyY2VIYW5kbGVNYW5hZ2VyLmNwcAppbmRleCAzM2Q3ZjQ1
Li5kMGY4NmEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1
cmwvUmVzb3VyY2VIYW5kbGVNYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL2N1cmwvUmVzb3VyY2VIYW5kbGVNYW5hZ2VyLmNwcApAQCAtMzUxLDggKzM1MSwx
MyBAQCBzdGF0aWMgYm9vbCBnZXRQcm90ZWN0aW9uU3BhY2UoQ1VSTCogaCwgY29uc3QgUmVzb3Vy
Y2VSZXNwb25zZSYgcmVzcG9uc2UsIFByb3RlYwogICAgIFN0cmluZyBhdXRoSGVhZGVyID0gcmVz
cG9uc2UuaHR0cEhlYWRlckZpZWxkKCJXV1ctQXV0aGVudGljYXRlIik7CiAgICAgY29uc3QgU3Ry
aW5nIHJlYWxtU3RyaW5nID0gInJlYWxtPSI7CiAgICAgaW50IHJlYWxtUG9zID0gYXV0aEhlYWRl
ci5maW5kKHJlYWxtU3RyaW5nKTsKLSAgICBpZiAocmVhbG1Qb3MgPiAwKQorICAgIGlmIChyZWFs
bVBvcyA+IDApIHsKICAgICAgICAgcmVhbG0gPSBhdXRoSGVhZGVyLnN1YnN0cmluZyhyZWFsbVBv
cyArIHJlYWxtU3RyaW5nLmxlbmd0aCgpKTsKKyAgICAgICAgcmVhbG0gPSByZWFsbS5sZWZ0KHJl
YWxtLmZpbmQoJywnKSk7CisKKyAgICAgICAgaWYgKHJlYWxtLnN0YXJ0c1dpdGgoJyInKSAmJiBy
ZWFsbS5lbmRzV2l0aCgnIicpICYmIHJlYWxtLmxlbmd0aCgpID4gMSkKKyAgICAgICAgICAgIHJl
YWxtID0gcmVhbG0uc3Vic3RyaW5nKDEsIHJlYWxtLmxlbmd0aCgpLTIpOworICAgIH0KIAogICAg
IFByb3RlY3Rpb25TcGFjZVNlcnZlclR5cGUgc2VydmVyVHlwZSA9IFByb3RlY3Rpb25TcGFjZVNl
cnZlckhUVFA7CiAgICAgaWYgKHByb3RvY29sID09ICJodHRwcyIpCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>221966</attachid>
            <date>2014-01-23 02:36:06 -0800</date>
            <delta_ts>2014-01-30 10:57:46 -0800</delta_ts>
            <desc>Proposed patch II.</desc>
            <filename>www-auth-parse.diff</filename>
            <type>text/plain</type>
            <size>2363</size>
            <attacher name="Szabolcs David">davidsz</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCA3YmU5YTQ2Li41NGQ5NzFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTgg
QEAKKzIwMTQtMDEtMjMgIFN6YWJvbGNzIERhdmlkICA8ZGF2aWRzekBpbmYudS1zemVnZWQuaHU+
CisKKyAgICAgICAgW2N1cmxdIEltcHJvdmUgcmVhbG0gc3RyaW5nIHBhcnNpbmcgaW4gV1dXLUF1
dGhlbnRpY2F0ZSBoZWFkZXJzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xMjc0MjEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBUaGUgcmVhbG0gc3RyaW5nIGNvbnRhaW5zIHF1b3RlcyBhdCB0aGUgYmVnaW5u
aW5nIGFuZCBlbmQgLSB0aGlzIGlzIHRoZQorICAgICAgICBvcHBvc2l0ZSBvZiB0aGUgbGlic291
cCBpbXBsZW1lbnRhdGlvbi4gRnVydGhlcm1vcmUsIGlmIHRoZSBoZWFkZXIgaXMKKyAgICAgICAg
Y29uY2F0ZW5hdGVkIGZyb20gdHdvIG9yIG1vcmUgYW5vdGhlciBoZWFkZXJzLCBpdCBjb250YWlu
cyBtb3JlIGluY29ycmVjdCBwYXJ0LgorCisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jdXJs
L1Jlc291cmNlSGFuZGxlTWFuYWdlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpyZW1vdmVMZWFk
aW5nQW5kVHJhaWxpbmdRdW90ZXMpOgorICAgICAgICAoV2ViQ29yZTo6Z2V0UHJvdGVjdGlvblNw
YWNlKToKKwogMjAxNC0wMS0yMyAgTMOhc3psw7MgTGFuZ8OzICA8bGxhbmdvLnUtc3plZ2VkQHBh
cnRuZXIuc2Ftc3VuZy5jb20+CiAKICAgICAgICAgUmFuZ2Ugc2hvdWxkIGJlIGNvbnN0cnVjdGFi
bGUuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvUmVz
b3VyY2VIYW5kbGVNYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
Y3VybC9SZXNvdXJjZUhhbmRsZU1hbmFnZXIuY3BwCmluZGV4IDEzMjZkZGYuLjNmN2VlN2EgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9SZXNvdXJjZUhh
bmRsZU1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3Vy
bC9SZXNvdXJjZUhhbmRsZU1hbmFnZXIuY3BwCkBAIC0zMjIsNiArMzIyLDEzIEBAIHN0YXRpYyBi
b29sIGlzQXBwZW5kYWJsZUhlYWRlcihjb25zdCBTdHJpbmcgJmtleSkKICAgICByZXR1cm4gZmFs
c2U7CiB9CiAKK3N0YXRpYyB2b2lkIHJlbW92ZUxlYWRpbmdBbmRUcmFpbGluZ1F1b3RlcyhTdHJp
bmcmIHZhbHVlKQoreworICAgIHVuc2lnbmVkIGxlbmd0aCA9IHZhbHVlLmxlbmd0aCgpOworICAg
IGlmICh2YWx1ZS5zdGFydHNXaXRoKCciJykgJiYgdmFsdWUuZW5kc1dpdGgoJyInKSAmJiBsZW5n
dGggPiAxKQorICAgICAgICB2YWx1ZSA9IHZhbHVlLnN1YnN0cmluZygxLCBsZW5ndGgtMik7Cit9
CisKIHN0YXRpYyBib29sIGdldFByb3RlY3Rpb25TcGFjZShDVVJMKiBoLCBjb25zdCBSZXNvdXJj
ZVJlc3BvbnNlJiByZXNwb25zZSwgUHJvdGVjdGlvblNwYWNlJiBwcm90ZWN0aW9uU3BhY2UpCiB7
CiAgICAgQ1VSTGNvZGUgZXJyOwpAQCAtMzQ4LDExICszNTUsMTQgQEAgc3RhdGljIGJvb2wgZ2V0
UHJvdGVjdGlvblNwYWNlKENVUkwqIGgsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNl
LCBQcm90ZWMKIAogICAgIFN0cmluZyByZWFsbTsKIAotICAgIFN0cmluZyBhdXRoSGVhZGVyID0g
cmVzcG9uc2UuaHR0cEhlYWRlckZpZWxkKCJXV1ctQXV0aGVudGljYXRlIik7CisgICAgY29uc3Qg
U3RyaW5nIGF1dGhIZWFkZXIgPSByZXNwb25zZS5odHRwSGVhZGVyRmllbGQoIldXVy1BdXRoZW50
aWNhdGUiKTsKICAgICBjb25zdCBTdHJpbmcgcmVhbG1TdHJpbmcgPSAicmVhbG09IjsKICAgICBp
bnQgcmVhbG1Qb3MgPSBhdXRoSGVhZGVyLmZpbmQocmVhbG1TdHJpbmcpOwotICAgIGlmIChyZWFs
bVBvcyA+IDApCisgICAgaWYgKHJlYWxtUG9zID4gMCkgewogICAgICAgICByZWFsbSA9IGF1dGhI
ZWFkZXIuc3Vic3RyaW5nKHJlYWxtUG9zICsgcmVhbG1TdHJpbmcubGVuZ3RoKCkpOworICAgICAg
ICByZWFsbSA9IHJlYWxtLmxlZnQocmVhbG0uZmluZCgnLCcpKTsKKyAgICAgICAgcmVtb3ZlTGVh
ZGluZ0FuZFRyYWlsaW5nUXVvdGVzKHJlYWxtKTsKKyAgICB9CiAKICAgICBQcm90ZWN0aW9uU3Bh
Y2VTZXJ2ZXJUeXBlIHNlcnZlclR5cGUgPSBQcm90ZWN0aW9uU3BhY2VTZXJ2ZXJIVFRQOwogICAg
IGlmIChwcm90b2NvbCA9PSAiaHR0cHMiKQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>