<?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>16729</bug_id>
          
          <creation_ts>2008-01-04 02:38:52 -0800</creation_ts>
          <short_desc>[cURL] Allow multiple files for upload</short_desc>
          <delta_ts>2008-01-11 17:36:25 -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>WebCore Misc.</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc>http://encodable.com/uploaddemo/</bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>Curl</keywords>
          <priority>P2</priority>
          <bug_severity>Trivial</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Luca Bruno">lethalman88</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>lethalman88</cc>
    
    <cc>mrowe</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>66182</commentid>
    <comment_count>0</comment_count>
    <who name="Luca Bruno">lethalman88</who>
    <bug_when>2008-01-04 02:38:52 -0800</bug_when>
    <thetext>Hello,
currently the setupPOST method in the ResourceHandleManager of cURL seems to handle multiple files but doesn&apos;t. Actually it uses two different methods for posting, one POSTFIELDS and the other HTTPPOST which are mutually exclusive.
Current issues:
- No problem without file uploading
- If files need upload, only one file is uploaded
- The other data when the file is uploaded is not POSTed due to the above conflict
- Uploading this file doesn&apos;t respect the field names of the FORM, instead forces to use &quot;sendfile&quot; and &quot;filename&quot;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>66183</commentid>
    <comment_count>1</comment_count>
      <attachid>18259</attachid>
    <who name="Luca Bruno">lethalman88</who>
    <bug_when>2008-01-04 02:44:56 -0800</bug_when>
    <thetext>Created attachment 18259
proof

You can try it here: http://encodable.com/uploaddemo/

No regressions found with the patch. The two parts are just copied from the main.c of curl.
It&apos;s all C since i don&apos;t develop C++, hopefully someone can help.
Also i didn&apos;t change the job internals, by removing m_filename and changing m_postBytes to char*, would be done later.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>66184</commentid>
    <comment_count>2</comment_count>
    <who name="Luca Bruno">lethalman88</who>
    <bug_when>2008-01-04 02:47:59 -0800</bug_when>
    <thetext>Forgot to say, file2string is copied directly from cURL, and i don&apos;t know why it strips \n and \r, is that right for our purposes?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>66187</commentid>
    <comment_count>3</comment_count>
      <attachid>18259</attachid>
    <who name="Mark Rowe (bdash)">mrowe</who>
    <bug_when>2008-01-04 03:32:51 -0800</bug_when>
    <thetext>Comment on attachment 18259
proof

Clearing review flag as this patch is not in a reviewable state.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>66195</commentid>
    <comment_count>4</comment_count>
      <attachid>18263</attachid>
    <who name="Luca Bruno">lethalman88</who>
    <bug_when>2008-01-04 07:17:29 -0800</bug_when>
    <thetext>Created attachment 18263
use read callback

Use read callback for sending data, and setupPOST to set the size of the POST.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>66196</commentid>
    <comment_count>5</comment_count>
      <attachid>18264</attachid>
    <who name="Luca Bruno">lethalman88</who>
    <bug_when>2008-01-04 08:07:23 -0800</bug_when>
    <thetext>Created attachment 18264
clean up

Remove the loop from readCallback, cURL does it for us. This cleaned up things avoiding possible mistakes with cURL.
Assert type size in setupPOST as suggested by bdash.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>66197</commentid>
    <comment_count>6</comment_count>
      <attachid>18265</attachid>
    <who name="Luca Bruno">lethalman88</who>
    <bug_when>2008-01-04 08:10:21 -0800</bug_when>
    <thetext>Created attachment 18265
little mistake

Read the previous comment, thanks.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>66206</commentid>
    <comment_count>7</comment_count>
      <attachid>18270</attachid>
    <who name="Luca Bruno">lethalman88</who>
    <bug_when>2008-01-04 09:40:23 -0800</bug_when>
    <thetext>Created attachment 18270
introduce chunked transfer

Use chunked data transfer when size of files can&apos;t be obtained as suggested by bdash.

Chunked transfer must be automatically handled by Curl, as it does, but don&apos;t know if it does the right way. I&apos;ve done some tests and doesn&apos;t seem to work well. But this could be another issue and might not be related to our manager but instead to cURL or the web server.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>66210</commentid>
    <comment_count>8</comment_count>
      <attachid>18270</attachid>
    <who name="Mark Rowe (bdash)">mrowe</who>
    <bug_when>2008-01-04 09:58:09 -0800</bug_when>
    <thetext>Comment on attachment 18270
introduce chunked transfer

Unsetting review flag as this patch has known issues that prevent it from being reviewable.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>66226</commentid>
    <comment_count>9</comment_count>
      <attachid>18277</attachid>
    <who name="Luca Bruno">lethalman88</who>
    <bug_when>2008-01-04 14:14:02 -0800</bug_when>
    <thetext>Created attachment 18277
file checks

Check for file opening and reading, and in case cancel the job.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>66234</commentid>
    <comment_count>10</comment_count>
      <attachid>18279</attachid>
    <who name="Luca Bruno">lethalman88</who>
    <bug_when>2008-01-04 15:12:53 -0800</bug_when>
    <thetext>Created attachment 18279
take care of the post size

curl_off_t doesn&apos;t seem to be 64-bit wide on most platforms, so we shouldn&apos;t use an assertion. The patch checks for an overflow and in case use chunked encoding for large files as suggested by Mark Rowe.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>66445</commentid>
    <comment_count>11</comment_count>
      <attachid>18312</attachid>
    <who name="Luca Bruno">lethalman88</who>
    <bug_when>2008-01-07 06:18:02 -0800</bug_when>
    <thetext>Created attachment 18312
do not stream simple POSTs

Mark Rowe noticed me CF does simple POSTs without streaming the data. This is just what&apos;s done originally.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>66446</commentid>
    <comment_count>12</comment_count>
      <attachid>18313</attachid>
    <who name="Luca Bruno">lethalman88</who>
    <bug_when>2008-01-07 06:29:58 -0800</bug_when>
    <thetext>Created attachment 18313
return if empty POST</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>66982</commentid>
    <comment_count>13</comment_count>
      <attachid>18313</attachid>
    <who name="Alp Toker">alp</who>
    <bug_when>2008-01-11 17:28:53 -0800</bug_when>
    <thetext>Comment on attachment 18313
return if empty POST

r=me

There are whitespace issues (space before *) and relocated some comments. Please check these changes for next time.

Also found some tabs in the changelog entry.

Nice work otherwise!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>66984</commentid>
    <comment_count>14</comment_count>
    <who name="Alp Toker">alp</who>
    <bug_when>2008-01-11 17:36:25 -0800</bug_when>
    <thetext>Landed in r29423.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>18259</attachid>
            <date>2008-01-04 02:44:56 -0800</date>
            <delta_ts>2008-01-04 07:17:29 -0800</delta_ts>
            <desc>proof</desc>
            <filename>curlupload.patch</filename>
            <type>text/plain</type>
            <size>3998</size>
            <attacher name="Luca Bruno">lethalman88</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL1Jlc291cmNlSGFuZGxlTWFuYWdl
ci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvUmVzb3Vy
Y2VIYW5kbGVNYW5hZ2VyLmNwcAkocmV2aXNpb24gMjkwODEpCisrKyBXZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvY3VybC9SZXNvdXJjZUhhbmRsZU1hbmFnZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC00Nyw2ICs0NywzOCBAQAogY29uc3QgZG91YmxlIHBvbGxUaW1lU2Vjb25kcyA9IDAuMDU7CiBj
b25zdCBpbnQgbWF4UnVubmluZ0pvYnMgPSA1OwogCitzdGF0aWMgY2hhciAqZmlsZTJzdHJpbmco
RklMRSAqZmlsZSkKK3sKKyAgY2hhciBidWZmZXJbMjU2XTsKKyAgY2hhciAqcHRyOworICBjaGFy
ICpzdHJpbmc9TlVMTDsKKyAgc2l6ZV90IGxlbj0wOworICBzaXplX3Qgc3RyaW5nbGVuOworCisg
IGlmKGZpbGUpIHsKKyAgICAgIHdoaWxlKGZnZXRzKGJ1ZmZlciwgc2l6ZW9mKGJ1ZmZlciksIGZp
bGUpKSB7CisgICAgICAgICAgcHRyPSBzdHJjaHIoYnVmZmVyLCAnXHInKTsKKyAgICAgICAgICBp
ZihwdHIpCisgICAgICAgICAgICAgICpwdHI9MDsKKyAgICAgICAgICBwdHI9IHN0cmNocihidWZm
ZXIsICdcbicpOworICAgICAgICAgIGlmKHB0cikKKyAgICAgICAgICAgICAgKnB0cj0wOworICAg
ICAgICAgIHN0cmluZ2xlbj1zdHJsZW4oYnVmZmVyKTsKKyAgICAgICAgICBpZihzdHJpbmcpCisg
ICAgICAgICAgICAgIHN0cmluZyA9IChjaGFyKilyZWFsbG9jKHN0cmluZywgbGVuK3N0cmluZ2xl
bisxKTsKKyAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgIHN0cmluZyA9IChjaGFyKiltYWxs
b2Moc3RyaW5nbGVuKzEpOworICAgICAgICAgIAorICAgICAgICAgIHN0cmNweShzdHJpbmcrbGVu
LCBidWZmZXIpOworICAgICAgICAgIAorICAgICAgICAgIGxlbis9c3RyaW5nbGVuOworICAgICAg
fQorICAgICAgcmV0dXJuIHN0cmluZzsKKyAgfQorICBlbHNlCisgICAgICByZXR1cm4gTlVMTDsg
Lyogbm8gc3RyaW5nICovCit9CisKIFJlc291cmNlSGFuZGxlTWFuYWdlcjo6UmVzb3VyY2VIYW5k
bGVNYW5hZ2VyKCkKICAgICA6IG1fZG93bmxvYWRUaW1lcih0aGlzLCAmUmVzb3VyY2VIYW5kbGVN
YW5hZ2VyOjpkb3dubG9hZFRpbWVyQ2FsbGJhY2spCiAgICAgLCBtX2Nvb2tpZUphckZpbGVOYW1l
KDApCkBAIC0yOTUsNDIgKzMyNywzNyBAQAogCiB2b2lkIFJlc291cmNlSGFuZGxlTWFuYWdlcjo6
c2V0dXBQT1NUKFJlc291cmNlSGFuZGxlKiBqb2IpCiB7Ci0gICAgUmVzb3VyY2VIYW5kbGVJbnRl
cm5hbCogZCA9IGpvYi0+Z2V0SW50ZXJuYWwoKTsKLQotICAgIGN1cmxfZWFzeV9zZXRvcHQoZC0+
bV9oYW5kbGUsIENVUkxPUFRfUE9TVCwgVFJVRSk7Ci0KLSAgICBqb2ItPnJlcXVlc3QoKS5odHRw
Qm9keSgpLT5mbGF0dGVuKGQtPm1fcG9zdEJ5dGVzKTsKLSAgICBpZiAoZC0+bV9wb3N0Qnl0ZXMu
c2l6ZSgpICE9IDApIHsKLSAgICAgICAgY3VybF9lYXN5X3NldG9wdChkLT5tX2hhbmRsZSwgQ1VS
TE9QVF9QT1NURklFTERTSVpFLCBkLT5tX3Bvc3RCeXRlcy5zaXplKCkpOwotICAgICAgICBjdXJs
X2Vhc3lfc2V0b3B0KGQtPm1faGFuZGxlLCBDVVJMT1BUX1BPU1RGSUVMRFMsIGQtPm1fcG9zdEJ5
dGVzLmRhdGEoKSk7Ci0gICAgfQotCisgICAgY2hhciogb2xkX3Bvc3RkYXRhOworICAgIGNoYXIq
IGZpbmFsX3Bvc3RkYXRhID0gMDsKICAgICBWZWN0b3I8Rm9ybURhdGFFbGVtZW50PiBlbGVtZW50
cyA9IGpvYi0+cmVxdWVzdCgpLmh0dHBCb2R5KCktPmVsZW1lbnRzKCk7CiAgICAgc2l6ZV90IHNp
emUgPSBlbGVtZW50cy5zaXplKCk7Ci0gICAgc3RydWN0IGN1cmxfaHR0cHBvc3QqIGxhc3RJdGVt
ID0gMDsKLSAgICBzdHJ1Y3QgY3VybF9odHRwcG9zdCogcG9zdCA9IDA7CiAgICAgZm9yIChzaXpl
X3QgaSA9IDA7IGkgPCBzaXplOyBpKyspIHsKLSAgICAgICAgaWYgKGVsZW1lbnRzW2ldLm1fdHlw
ZSAhPSBGb3JtRGF0YUVsZW1lbnQ6OmVuY29kZWRGaWxlKQotICAgICAgICAgICAgY29udGludWU7
Ci0gICAgICAgIENTdHJpbmcgY3N0cmluZyA9IGVsZW1lbnRzW2ldLm1fZmlsZW5hbWUudXRmOCgp
OwotICAgICAgICBBU1NFUlQoIWQtPm1fZmlsZU5hbWUpOwotICAgICAgICBkLT5tX2ZpbGVOYW1l
ID0gc3RyZHVwKGNzdHJpbmcuZGF0YSgpKTsKKyAgICAgICAgY2hhciogcG9zdGRhdGEgPSAwOwor
ICAgICAgICBpZiAoZWxlbWVudHNbaV0ubV90eXBlID09IEZvcm1EYXRhRWxlbWVudDo6ZW5jb2Rl
ZEZpbGUpIHsKKyAgICAgICAgICAgIEZJTEUqIGZpbGUgPSBmb3BlbihlbGVtZW50c1tpXS5tX2Zp
bGVuYW1lLnV0ZjgoKS5kYXRhKCksICJyYiIpOworICAgICAgICAgICAgaWYgKGZpbGUpIHsKKyAg
ICAgICAgICAgICAgICBwb3N0ZGF0YSA9IGZpbGUyc3RyaW5nKGZpbGUpOworICAgICAgICAgICAg
ICAgIGZjbG9zZShmaWxlKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIC8vIEZJWE1FOiBl
bHNlIHdhcm5pbmcgdGhlIHVzZXIKKyAgICAgICAgfSBlbHNlCisgICAgICAgICAgICBwb3N0ZGF0
YSA9IHN0cm5kdXAoZWxlbWVudHNbaV0ubV9kYXRhLmRhdGEoKSwgZWxlbWVudHNbaV0ubV9kYXRh
LnNpemUoKSk7CiAKLSAgICAgICAgLy8gRmlsbCBpbiB0aGUgZmlsZSB1cGxvYWQgZmllbGQKLSAg
ICAgICAgY3VybF9mb3JtYWRkKCZwb3N0LCAmbGFzdEl0ZW0sIENVUkxGT1JNX0NPUFlOQU1FLCAi
c2VuZGZpbGUiLCBDVVJMRk9STV9GSUxFLCBkLT5tX2ZpbGVOYW1lLCBDVVJMRk9STV9FTkQpOwor
ICAgICAgICAvLyBTZW5kIGl0IGlmIGVtcHR5CisgICAgICAgIGlmICghcG9zdGRhdGEpCisgICAg
ICAgICAgICBwb3N0ZGF0YSA9IChjaGFyKilzdHJkdXAoIiIpOwogCi0gICAgICAgIC8vIEZpbGwg
aW4gdGhlIGZpbGVuYW1lIGZpZWxkCi0gICAgICAgIGN1cmxfZm9ybWFkZCgmcG9zdCwgJmxhc3RJ
dGVtLCBDVVJMRk9STV9DT1BZTkFNRSwgImZpbGVuYW1lIiwgQ1VSTEZPUk1fQ09QWUNPTlRFTlRT
LCBkLT5tX2ZpbGVOYW1lLCBDVVJMRk9STV9FTkQpOwotCi0gICAgICAgIC8vIEZJWE1FOiBXZSBz
aG91bGQgbm90IGFkZCBhICJzdWJtaXQiIGZpZWxkIGZvciBlYWNoIGZpbGUgdXBsb2FkZWQuIFJl
dmlldyB0aGlzIGNvZGUuCi0gICAgICAgIC8vIEZpbGwgaW4gdGhlIHN1Ym1pdCBmaWVsZCB0b28s
IGV2ZW4gaWYgdGhpcyBpcyByYXJlbHkgbmVlZGVkCi0gICAgICAgIGN1cmxfZm9ybWFkZCgmcG9z
dCwgJmxhc3RJdGVtLCBDVVJMRk9STV9DT1BZTkFNRSwgInN1Ym1pdCIsIENVUkxGT1JNX0NPUFlD
T05URU5UUywgInNlbmQiLCBDVVJMRk9STV9FTkQpOwotCi0gICAgICAgIC8vIEZJWE1FOiBzaG91
bGQgd2Ugc3VwcG9ydCBtb3JlIHRoYW4gb25lIGZpbGU/Ci0gICAgICAgIGJyZWFrOworICAgICAg
ICBpZiAoIWZpbmFsX3Bvc3RkYXRhKQorICAgICAgICAgICAgZmluYWxfcG9zdGRhdGEgPSBwb3N0
ZGF0YTsKKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBmaW5hbF9wb3N0ZGF0YSA9IChjaGFy
KilyZWFsbG9jKGZpbmFsX3Bvc3RkYXRhLCBzdHJsZW4oZmluYWxfcG9zdGRhdGEpICsgc3RybGVu
KHBvc3RkYXRhKSArIDEpOworICAgICAgICAgICAgc3RyY2F0KGZpbmFsX3Bvc3RkYXRhLCBwb3N0
ZGF0YSk7CisgICAgICAgICAgICBmcmVlKHBvc3RkYXRhKTsKKyAgICAgICAgfQogICAgIH0KIAot
ICAgIGN1cmxfZWFzeV9zZXRvcHQoZC0+bV9oYW5kbGUsIENVUkxPUFRfSFRUUFBPU1QsIHBvc3Qp
OworICAgIGlmIChmaW5hbF9wb3N0ZGF0YSkKKyAgICAgICAgY3VybF9lYXN5X3NldG9wdChqb2It
PmdldEludGVybmFsKCktPm1faGFuZGxlLCBDVVJMT1BUX1BPU1RGSUVMRFMsIGZpbmFsX3Bvc3Rk
YXRhKTsKIH0KIAogdm9pZCBSZXNvdXJjZUhhbmRsZU1hbmFnZXI6OmFkZChSZXNvdXJjZUhhbmRs
ZSogam9iKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>18263</attachid>
            <date>2008-01-04 07:17:29 -0800</date>
            <delta_ts>2008-01-04 08:07:23 -0800</delta_ts>
            <desc>use read callback</desc>
            <filename>curlupload.patch</filename>
            <type>text/plain</type>
            <size>7960</size>
            <attacher name="Luca Bruno">lethalman88</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZUludGVybmFsLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlSW50
ZXJuYWwuaAkocmV2aXNpb24gMjkwODEpCisrKyBXZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVz
b3VyY2VIYW5kbGVJbnRlcm5hbC5oCSh3b3JraW5nIGNvcHkpCkBAIC05Myw5ICs5MywxMSBAQAog
I2lmIFVTRShDVVJMKQogICAgICAgICAgICAgLCBtX2hhbmRsZSgwKQogICAgICAgICAgICAgLCBt
X3VybCgwKQotICAgICAgICAgICAgLCBtX2ZpbGVOYW1lKDApCiAgICAgICAgICAgICAsIG1fY3Vz
dG9tSGVhZGVycygwKQogICAgICAgICAgICAgLCBtX2NhbmNlbGxlZChmYWxzZSkKKyAgICAgICAg
ICAgICwgbV9maWxlKDApCisgICAgICAgICAgICAsIG1fZm9ybV9kYXRhX2VsZW1lbnRfaW5kZXgo
MCkKKyAgICAgICAgICAgICwgbV9mb3JtX2RhdGFfZWxlbWVudF9zZWVrKDApCiAjZW5kaWYKICNp
ZiBQTEFURk9STShRVCkKICAgICAgICAgICAgICwgbV9qb2IoMCkKQEAgLTE0NiwxMSArMTQ4LDEz
IEBACiAjaWYgVVNFKENVUkwpCiAgICAgICAgIENVUkwqIG1faGFuZGxlOwogICAgICAgICBjaGFy
KiBtX3VybDsKLSAgICAgICAgY2hhciogbV9maWxlTmFtZTsKICAgICAgICAgc3RydWN0IGN1cmxf
c2xpc3QqIG1fY3VzdG9tSGVhZGVyczsgICAgICAgIAotICAgICAgICBWZWN0b3I8Y2hhcj4gbV9w
b3N0Qnl0ZXM7CiAgICAgICAgIFJlc291cmNlUmVzcG9uc2UgbV9yZXNwb25zZTsKICAgICAgICAg
Ym9vbCBtX2NhbmNlbGxlZDsKKworICAgICAgICBGSUxFKiBtX2ZpbGU7CisgICAgICAgIGludCBt
X2Zvcm1fZGF0YV9lbGVtZW50X2luZGV4OworICAgICAgICBpbnQgbV9mb3JtX2RhdGFfZWxlbWVu
dF9zZWVrOwogI2VuZGlmCiAjaWYgUExBVEZPUk0oUVQpCiAgICAgICAgIFFXZWJOZXR3b3JrSm9i
ICptX2pvYjsKSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL1Jlc291cmNlSGFu
ZGxlTWFuYWdlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1
cmwvUmVzb3VyY2VIYW5kbGVNYW5hZ2VyLmNwcAkocmV2aXNpb24gMjkwODEpCisrKyBXZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvY3VybC9SZXNvdXJjZUhhbmRsZU1hbmFnZXIuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0zMSw2ICszMSw3IEBACiAjaW5jbHVkZSAiUmVzb3VyY2VIYW5kbGVNYW5hZ2Vy
LmgiCiAKICNpbmNsdWRlICJDU3RyaW5nLmgiCisjaW5jbHVkZSAiRmlsZVN5c3RlbS5oIgogI2lu
Y2x1ZGUgIk1JTUVUeXBlUmVnaXN0cnkuaCIKICNpbmNsdWRlICJOb3RJbXBsZW1lbnRlZC5oIgog
I2luY2x1ZGUgIlJlc291cmNlSGFuZGxlLmgiCkBAIC0xOTEsNiArMTkyLDc2IEBACiAgICAgcmV0
dXJuIHRvdGFsU2l6ZTsKIH0KIAorLyogVGhpcyBpcyBjYWxsZWQgdG8gb2J0YWluIEhUVFAgUE9T
VCBvciBQVVQgZGF0YS4KKyAgIEl0ZXJhdGUgdHJvdWdoIEZvcm1EYXRhIGVsZW1lbnRzIGFuZCB1
cGxvYWQgZmlsZXMuCisgICBDYXJlZnVsbHkgcmVzcGVjdCB0aGUgZ2l2ZW4gYnVmZmVyIHNpemUg
YW5kIGZpbGwgdGhlIHJlc3Qgb2YgdGhlIGRhdGEgYXQgdGhlIG5leHQgY2FsbHMuCisqLworc2l6
ZV90IHJlYWRDYWxsYmFjayh2b2lkICpwdHIsIHNpemVfdCBzaXplLCBzaXplX3Qgbm1lbWIsIHZv
aWQgKmRhdGEpCit7CisgICAgUmVzb3VyY2VIYW5kbGUqIGpvYiA9IHN0YXRpY19jYXN0PFJlc291
cmNlSGFuZGxlKj4oZGF0YSk7CisgICAgUmVzb3VyY2VIYW5kbGVJbnRlcm5hbCogZCA9IGpvYi0+
Z2V0SW50ZXJuYWwoKTsKKyAgICBzaXplX3Qgc2VudCA9IDA7CisgICAgc2l6ZV90IHRvU2VuZCA9
IHNpemUgKiBubWVtYjsKKworICAgIGlmICghdG9TZW5kKQorICAgICAgICByZXR1cm4gMDsKKwor
ICAgIGlmIChkLT5tX2ZpbGUpIHsKKyAgICAgICAgc2VudCArPSBmcmVhZChwdHIsIHNpemUsIG5t
ZW1iLCBkLT5tX2ZpbGUpOworICAgICAgICBpZiAoZmVvZihkLT5tX2ZpbGUpKSB7CisgICAgICAg
ICAgICBmY2xvc2UoZC0+bV9maWxlKTsKKyAgICAgICAgICAgIGQtPm1fZmlsZSA9IDA7CisgICAg
ICAgICAgICBkLT5tX2Zvcm1fZGF0YV9lbGVtZW50X2luZGV4Kys7CisgICAgICAgIH0gZWxzZQor
ICAgICAgICAgICAgcmV0dXJuIHNlbnQ7CisgICAgfQorCisgICAgVmVjdG9yPEZvcm1EYXRhRWxl
bWVudD4gZWxlbWVudHMgPSBqb2ItPnJlcXVlc3QoKS5odHRwQm9keSgpLT5lbGVtZW50cygpOwor
ICAgIHNpemVfdCBudW1FbGVtZW50cyA9IGVsZW1lbnRzLnNpemUoKTsKKyAgICB3aGlsZShkLT5t
X2Zvcm1fZGF0YV9lbGVtZW50X2luZGV4IDwgbnVtRWxlbWVudHMgJiYgc2VudCA8IHRvU2VuZCkg
eworICAgICAgICBGb3JtRGF0YUVsZW1lbnQgZWxlbWVudCA9IGVsZW1lbnRzW2QtPm1fZm9ybV9k
YXRhX2VsZW1lbnRfaW5kZXhdOworICAgICAgICBzaXplX3QgZWxlbWVudFNpemUsIGVsZW1lbnRT
ZW50OworCisgICAgICAgIGlmIChlbGVtZW50Lm1fdHlwZSA9PSBGb3JtRGF0YUVsZW1lbnQ6OmVu
Y29kZWRGaWxlKSB7CisgICAgICAgICAgICBkLT5tX2Zvcm1fZGF0YV9lbGVtZW50X3NlZWsgPSAw
OworICAgICAgICAgICAgbG9uZyBsb25nIHJlc3VsdDsKKyAgICAgICAgICAgIGlmICghZmlsZVNp
emUgKGVsZW1lbnQubV9maWxlbmFtZSwgcmVzdWx0KSkKKyAgICAgICAgICAgICAgICBjb250aW51
ZTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgaWYgKCFkLT5tX2ZpbGUpCisgICAgICAgICAg
ICAgICAgZC0+bV9maWxlID0gZm9wZW4oZWxlbWVudC5tX2ZpbGVuYW1lLnV0ZjgoKS5kYXRhKCks
ICJyYiIpOworCisgICAgICAgICAgICAvLyBGSVhNRTogZXJyb3I/CisgICAgICAgICAgICBpZiAo
IWQtPm1fZmlsZSkKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICAgICAgZWxl
bWVudFNpemUgPSAoc2l6ZV90KXJlc3VsdDsKKyAgICAgICAgICAgIGVsZW1lbnRTZW50ID0gc2Vu
dCtlbGVtZW50U2l6ZSA+IHRvU2VuZCA/IHRvU2VuZC1zZW50IDogZWxlbWVudFNpemU7CisgICAg
ICAgICAgICBlbGVtZW50U2VudCA9IGZyZWFkKChjaGFyKilwdHIrc2VudCwgMSwgZWxlbWVudFNl
bnQsIGQtPm1fZmlsZSk7CisKKyAgICAgICAgICAgIC8vIGZlb2YoKSBuZWVkcyBhbm90aGVyIHJl
YWQgdG8gcmV0dXJuIFRSVUUKKyAgICAgICAgICAgIGlmIChlbGVtZW50U2l6ZSA9PSBlbGVtZW50
U2VudCkgeworICAgICAgICAgICAgICAgIGZjbG9zZShkLT5tX2ZpbGUpOworICAgICAgICAgICAg
ICAgIGQtPm1fZmlsZSA9IDA7CisgICAgICAgICAgICAgICAgZC0+bV9mb3JtX2RhdGFfZWxlbWVu
dF9pbmRleCsrOworICAgICAgICAgICAgfQorICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAg
ZWxlbWVudFNpemUgPSBlbGVtZW50Lm1fZGF0YS5zaXplKCkgLSBkLT5tX2Zvcm1fZGF0YV9lbGVt
ZW50X3NlZWs7CisgICAgICAgICAgICBlbGVtZW50U2VudCA9IHNlbnQrZWxlbWVudFNpemUgPiB0
b1NlbmQgPyB0b1NlbmQtc2VudCA6IGVsZW1lbnRTaXplOworICAgICAgICAgICAgbWVtY3B5KChj
aGFyKilwdHIrc2VudCwgZWxlbWVudC5tX2RhdGEuZGF0YSgpK2QtPm1fZm9ybV9kYXRhX2VsZW1l
bnRfc2VlaywgZWxlbWVudFNlbnQpOworICAgICAgICAgICAgaWYgKGVsZW1lbnRTaXplID4gZWxl
bWVudFNlbnQpCisgICAgICAgICAgICAgICAgZC0+bV9mb3JtX2RhdGFfZWxlbWVudF9zZWVrICs9
IGVsZW1lbnRTZW50OworICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgZC0+bV9m
b3JtX2RhdGFfZWxlbWVudF9zZWVrID0gMDsKKyAgICAgICAgICAgICAgICBkLT5tX2Zvcm1fZGF0
YV9lbGVtZW50X2luZGV4Kys7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgc2Vu
dCArPSBlbGVtZW50U2VudDsKKyAgICB9CisKKyAgICByZXR1cm4gc2VudDsKK30KKwogdm9pZCBS
ZXNvdXJjZUhhbmRsZU1hbmFnZXI6OmRvd25sb2FkVGltZXJDYWxsYmFjayhUaW1lcjxSZXNvdXJj
ZUhhbmRsZU1hbmFnZXI+KiB0aW1lcikKIHsKICAgICBzdGFydFNjaGVkdWxlZEpvYnMoKTsKQEAg
LTI5Myw0NCArMzY0LDI3IEBACiAgICAgbm90SW1wbGVtZW50ZWQoKTsKIH0KIAorLyogQ2FsY3Vs
YXRlIHRoZSBsZW5ndGggb2YgdGhlIFBPU1QgKi8KIHZvaWQgUmVzb3VyY2VIYW5kbGVNYW5hZ2Vy
OjpzZXR1cFBPU1QoUmVzb3VyY2VIYW5kbGUqIGpvYikKIHsKLSAgICBSZXNvdXJjZUhhbmRsZUlu
dGVybmFsKiBkID0gam9iLT5nZXRJbnRlcm5hbCgpOwotCi0gICAgY3VybF9lYXN5X3NldG9wdChk
LT5tX2hhbmRsZSwgQ1VSTE9QVF9QT1NULCBUUlVFKTsKLQotICAgIGpvYi0+cmVxdWVzdCgpLmh0
dHBCb2R5KCktPmZsYXR0ZW4oZC0+bV9wb3N0Qnl0ZXMpOwotICAgIGlmIChkLT5tX3Bvc3RCeXRl
cy5zaXplKCkgIT0gMCkgewotICAgICAgICBjdXJsX2Vhc3lfc2V0b3B0KGQtPm1faGFuZGxlLCBD
VVJMT1BUX1BPU1RGSUVMRFNJWkUsIGQtPm1fcG9zdEJ5dGVzLnNpemUoKSk7Ci0gICAgICAgIGN1
cmxfZWFzeV9zZXRvcHQoZC0+bV9oYW5kbGUsIENVUkxPUFRfUE9TVEZJRUxEUywgZC0+bV9wb3N0
Qnl0ZXMuZGF0YSgpKTsKLSAgICB9Ci0KKyAgICBjdXJsX29mZl90IHNpemUgPSAwOwogICAgIFZl
Y3RvcjxGb3JtRGF0YUVsZW1lbnQ+IGVsZW1lbnRzID0gam9iLT5yZXF1ZXN0KCkuaHR0cEJvZHko
KS0+ZWxlbWVudHMoKTsKLSAgICBzaXplX3Qgc2l6ZSA9IGVsZW1lbnRzLnNpemUoKTsKLSAgICBz
dHJ1Y3QgY3VybF9odHRwcG9zdCogbGFzdEl0ZW0gPSAwOwotICAgIHN0cnVjdCBjdXJsX2h0dHBw
b3N0KiBwb3N0ID0gMDsKLSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHNpemU7IGkrKykgewot
ICAgICAgICBpZiAoZWxlbWVudHNbaV0ubV90eXBlICE9IEZvcm1EYXRhRWxlbWVudDo6ZW5jb2Rl
ZEZpbGUpCi0gICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgQ1N0cmluZyBjc3RyaW5nID0g
ZWxlbWVudHNbaV0ubV9maWxlbmFtZS51dGY4KCk7Ci0gICAgICAgIEFTU0VSVCghZC0+bV9maWxl
TmFtZSk7Ci0gICAgICAgIGQtPm1fZmlsZU5hbWUgPSBzdHJkdXAoY3N0cmluZy5kYXRhKCkpOwot
Ci0gICAgICAgIC8vIEZpbGwgaW4gdGhlIGZpbGUgdXBsb2FkIGZpZWxkCi0gICAgICAgIGN1cmxf
Zm9ybWFkZCgmcG9zdCwgJmxhc3RJdGVtLCBDVVJMRk9STV9DT1BZTkFNRSwgInNlbmRmaWxlIiwg
Q1VSTEZPUk1fRklMRSwgZC0+bV9maWxlTmFtZSwgQ1VSTEZPUk1fRU5EKTsKLQotICAgICAgICAv
LyBGaWxsIGluIHRoZSBmaWxlbmFtZSBmaWVsZAotICAgICAgICBjdXJsX2Zvcm1hZGQoJnBvc3Qs
ICZsYXN0SXRlbSwgQ1VSTEZPUk1fQ09QWU5BTUUsICJmaWxlbmFtZSIsIENVUkxGT1JNX0NPUFlD
T05URU5UUywgZC0+bV9maWxlTmFtZSwgQ1VSTEZPUk1fRU5EKTsKLQotICAgICAgICAvLyBGSVhN
RTogV2Ugc2hvdWxkIG5vdCBhZGQgYSAic3VibWl0IiBmaWVsZCBmb3IgZWFjaCBmaWxlIHVwbG9h
ZGVkLiBSZXZpZXcgdGhpcyBjb2RlLgotICAgICAgICAvLyBGaWxsIGluIHRoZSBzdWJtaXQgZmll
bGQgdG9vLCBldmVuIGlmIHRoaXMgaXMgcmFyZWx5IG5lZWRlZAotICAgICAgICBjdXJsX2Zvcm1h
ZGQoJnBvc3QsICZsYXN0SXRlbSwgQ1VSTEZPUk1fQ09QWU5BTUUsICJzdWJtaXQiLCBDVVJMRk9S
TV9DT1BZQ09OVEVOVFMsICJzZW5kIiwgQ1VSTEZPUk1fRU5EKTsKLQotICAgICAgICAvLyBGSVhN
RTogc2hvdWxkIHdlIHN1cHBvcnQgbW9yZSB0aGFuIG9uZSBmaWxlPwotICAgICAgICBicmVhazsK
KyAgICBzaXplX3QgbnVtRWxlbWVudHMgPSBlbGVtZW50cy5zaXplKCk7CisgICAgZm9yIChzaXpl
X3QgaT0wOyBpIDwgbnVtRWxlbWVudHM7IGkrKykgeworICAgICAgICBGb3JtRGF0YUVsZW1lbnQg
ZWxlbWVudCA9IGVsZW1lbnRzW2ldOworICAgICAgICBpZiAoZWxlbWVudC5tX3R5cGUgPT0gRm9y
bURhdGFFbGVtZW50OjplbmNvZGVkRmlsZSkgeworICAgICAgICAgICAgbG9uZyBsb25nIHJlc3Vs
dDsKKyAgICAgICAgICAgIGlmIChmaWxlU2l6ZShlbGVtZW50Lm1fZmlsZW5hbWUsIHJlc3VsdCkp
CisgICAgICAgICAgICAgICAgc2l6ZSArPSByZXN1bHQ7CisgICAgICAgICAgICAvLyBGSVhNRTog
ZWxzZSBlcnJvcj8KKyAgICAgICAgfSBlbHNlCisgICAgICAgICAgICBzaXplICs9IGVsZW1lbnRz
W2ldLm1fZGF0YS5zaXplKCk7CiAgICAgfQogCi0gICAgY3VybF9lYXN5X3NldG9wdChkLT5tX2hh
bmRsZSwgQ1VSTE9QVF9IVFRQUE9TVCwgcG9zdCk7CisgICAgUmVzb3VyY2VIYW5kbGVJbnRlcm5h
bCogZCA9IGpvYi0+Z2V0SW50ZXJuYWwoKTsKKyAgICBjdXJsX2Vhc3lfc2V0b3B0KGQtPm1faGFu
ZGxlLCBDVVJMT1BUX1BPU1QsIFRSVUUpOworICAgIGN1cmxfZWFzeV9zZXRvcHQoZC0+bV9oYW5k
bGUsIENVUkxPUFRfUE9TVEZJRUxEU0laRV9MQVJHRSwgc2l6ZSk7CisgICAgLy8gICAgY3VybF9l
YXN5X3NldG9wdChkLT5tX2hhbmRsZSwgQ1VSTE9QVF9JTkZJTEVTSVpFX0xBUkdFLCBmaWxlc1Np
emUpOwogfQogCiB2b2lkIFJlc291cmNlSGFuZGxlTWFuYWdlcjo6YWRkKFJlc291cmNlSGFuZGxl
KiBqb2IpCkBAIC00NDMsMTEgKzQ5NywxMyBAQAogCiAgICAgZC0+bV9oYW5kbGUgPSBjdXJsX2Vh
c3lfaW5pdCgpOwogI2lmbmRlZiBOREVCVUcKLSAgICBpZiAoZ2V0ZW52KCJERUJVR19DVVJMIikp
CisgICAgaWYgKGdldGVudigiREVCVUdfQ1VSTCIpKSovCiAgICAgICAgIGN1cmxfZWFzeV9zZXRv
cHQoZC0+bV9oYW5kbGUsIENVUkxPUFRfVkVSQk9TRSwgMSk7CiAjZW5kaWYKICAgICBjdXJsX2Vh
c3lfc2V0b3B0KGQtPm1faGFuZGxlLCBDVVJMT1BUX1BSSVZBVEUsIGpvYik7CiAgICAgY3VybF9l
YXN5X3NldG9wdChkLT5tX2hhbmRsZSwgQ1VSTE9QVF9FUlJPUkJVRkZFUiwgbV9jdXJsRXJyb3JC
dWZmZXIpOworICAgIGN1cmxfZWFzeV9zZXRvcHQoZC0+bV9oYW5kbGUsIENVUkxPUFRfUkVBREZV
TkNUSU9OLCByZWFkQ2FsbGJhY2spOworICAgIGN1cmxfZWFzeV9zZXRvcHQoZC0+bV9oYW5kbGUs
IENVUkxPUFRfUkVBRERBVEEsIGpvYik7CiAgICAgY3VybF9lYXN5X3NldG9wdChkLT5tX2hhbmRs
ZSwgQ1VSTE9QVF9XUklURUZVTkNUSU9OLCB3cml0ZUNhbGxiYWNrKTsKICAgICBjdXJsX2Vhc3lf
c2V0b3B0KGQtPm1faGFuZGxlLCBDVVJMT1BUX1dSSVRFREFUQSwgam9iKTsKICAgICBjdXJsX2Vh
c3lfc2V0b3B0KGQtPm1faGFuZGxlLCBDVVJMT1BUX0hFQURFUkZVTkNUSU9OLCBoZWFkZXJDYWxs
YmFjayk7CkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9SZXNvdXJjZUhhbmRs
ZUN1cmwuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL1Jl
c291cmNlSGFuZGxlQ3VybC5jcHAJKHJldmlzaW9uIDI5MDgxKQorKysgV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL2N1cmwvUmVzb3VyY2VIYW5kbGVDdXJsLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MzgsOSArMzgsMTAgQEAKIFJlc291cmNlSGFuZGxlSW50ZXJuYWw6On5SZXNvdXJjZUhhbmRsZUlu
dGVybmFsKCkKIHsKICAgICBmcmVlKG1fdXJsKTsKLSAgICBmcmVlKG1fZmlsZU5hbWUpOwogICAg
IGlmIChtX2N1c3RvbUhlYWRlcnMpCiAgICAgICAgIGN1cmxfc2xpc3RfZnJlZV9hbGwobV9jdXN0
b21IZWFkZXJzKTsKKyAgICBpZiAobV9maWxlKQorICAgICAgICBmY2xvc2UobV9maWxlKTsKIH0K
IAogUmVzb3VyY2VIYW5kbGU6On5SZXNvdXJjZUhhbmRsZSgpCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>18264</attachid>
            <date>2008-01-04 08:07:23 -0800</date>
            <delta_ts>2008-01-04 08:11:17 -0800</delta_ts>
            <desc>clean up</desc>
            <filename>curlupload.patch</filename>
            <type>text/plain</type>
            <size>7403</size>
            <attacher name="Luca Bruno">lethalman88</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZUludGVybmFsLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlSW50
ZXJuYWwuaAkocmV2aXNpb24gMjkwODEpCisrKyBXZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVz
b3VyY2VIYW5kbGVJbnRlcm5hbC5oCSh3b3JraW5nIGNvcHkpCkBAIC05Myw5ICs5MywxMSBAQAog
I2lmIFVTRShDVVJMKQogICAgICAgICAgICAgLCBtX2hhbmRsZSgwKQogICAgICAgICAgICAgLCBt
X3VybCgwKQotICAgICAgICAgICAgLCBtX2ZpbGVOYW1lKDApCiAgICAgICAgICAgICAsIG1fY3Vz
dG9tSGVhZGVycygwKQogICAgICAgICAgICAgLCBtX2NhbmNlbGxlZChmYWxzZSkKKyAgICAgICAg
ICAgICwgbV9maWxlKDApCisgICAgICAgICAgICAsIG1fZm9ybURhdGFFbGVtZW50SW5kZXgoMCkK
KyAgICAgICAgICAgICwgbV9mb3JtRGF0YUVsZW1lbnREYXRhT2Zmc2V0KDApCiAjZW5kaWYKICNp
ZiBQTEFURk9STShRVCkKICAgICAgICAgICAgICwgbV9qb2IoMCkKQEAgLTE0NiwxMSArMTQ4LDEz
IEBACiAjaWYgVVNFKENVUkwpCiAgICAgICAgIENVUkwqIG1faGFuZGxlOwogICAgICAgICBjaGFy
KiBtX3VybDsKLSAgICAgICAgY2hhciogbV9maWxlTmFtZTsKICAgICAgICAgc3RydWN0IGN1cmxf
c2xpc3QqIG1fY3VzdG9tSGVhZGVyczsgICAgICAgIAotICAgICAgICBWZWN0b3I8Y2hhcj4gbV9w
b3N0Qnl0ZXM7CiAgICAgICAgIFJlc291cmNlUmVzcG9uc2UgbV9yZXNwb25zZTsKICAgICAgICAg
Ym9vbCBtX2NhbmNlbGxlZDsKKworICAgICAgICBGSUxFKiBtX2ZpbGU7CisgICAgICAgIHNpemVf
dCBtX2Zvcm1EYXRhRWxlbWVudEluZGV4OworICAgICAgICBzaXplX3QgbV9mb3JtRGF0YUVsZW1l
bnREYXRhT2Zmc2V0OwogI2VuZGlmCiAjaWYgUExBVEZPUk0oUVQpCiAgICAgICAgIFFXZWJOZXR3
b3JrSm9iICptX2pvYjsKSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL1Jlc291
cmNlSGFuZGxlTWFuYWdlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL2N1cmwvUmVzb3VyY2VIYW5kbGVNYW5hZ2VyLmNwcAkocmV2aXNpb24gMjkwODEpCisrKyBX
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9SZXNvdXJjZUhhbmRsZU1hbmFnZXIuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0zMSw2ICszMSw3IEBACiAjaW5jbHVkZSAiUmVzb3VyY2VIYW5kbGVN
YW5hZ2VyLmgiCiAKICNpbmNsdWRlICJDU3RyaW5nLmgiCisjaW5jbHVkZSAiRmlsZVN5c3RlbS5o
IgogI2luY2x1ZGUgIk1JTUVUeXBlUmVnaXN0cnkuaCIKICNpbmNsdWRlICJOb3RJbXBsZW1lbnRl
ZC5oIgogI2luY2x1ZGUgIlJlc291cmNlSGFuZGxlLmgiCkBAIC0xOTEsNiArMTkyLDU3IEBACiAg
ICAgcmV0dXJuIHRvdGFsU2l6ZTsKIH0KIAorLyogVGhpcyBpcyBjYWxsZWQgdG8gb2J0YWluIEhU
VFAgUE9TVCBvciBQVVQgZGF0YS4KKyAgIEl0ZXJhdGUgdHJvdWdoIEZvcm1EYXRhIGVsZW1lbnRz
IGFuZCB1cGxvYWQgZmlsZXMuCisgICBDYXJlZnVsbHkgcmVzcGVjdCB0aGUgZ2l2ZW4gYnVmZmVy
IHNpemUgYW5kIGZpbGwgdGhlIHJlc3Qgb2YgdGhlIGRhdGEgYXQgdGhlIG5leHQgY2FsbHMuCisq
Lworc2l6ZV90IHJlYWRDYWxsYmFjayh2b2lkICpwdHIsIHNpemVfdCBzaXplLCBzaXplX3Qgbm1l
bWIsIHZvaWQgKmRhdGEpCit7CisgICAgUmVzb3VyY2VIYW5kbGUqIGpvYiA9IHN0YXRpY19jYXN0
PFJlc291cmNlSGFuZGxlKj4oZGF0YSk7CisgICAgUmVzb3VyY2VIYW5kbGVJbnRlcm5hbCogZCA9
IGpvYi0+Z2V0SW50ZXJuYWwoKTsKKyAgICBpZiAoZC0+bV9jYW5jZWxsZWQpCisgICAgICAgIHJl
dHVybiAwOworCisgICAgc2l6ZV90IHNlbnQgPSAwOworICAgIHNpemVfdCB0b1NlbmQgPSBzaXpl
ICogbm1lbWI7CisgICAgaWYgKCF0b1NlbmQpCisgICAgICAgIHJldHVybiAwOworCisgICAgVmVj
dG9yPEZvcm1EYXRhRWxlbWVudD4gZWxlbWVudHMgPSBqb2ItPnJlcXVlc3QoKS5odHRwQm9keSgp
LT5lbGVtZW50cygpOworICAgIGlmIChkLT5tX2Zvcm1EYXRhRWxlbWVudEluZGV4ID49IGVsZW1l
bnRzLnNpemUoKSkKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICBGb3JtRGF0YUVsZW1lbnQgZWxl
bWVudCA9IGVsZW1lbnRzW2QtPm1fZm9ybURhdGFFbGVtZW50SW5kZXhdOworCisgICAgaWYgKGVs
ZW1lbnQubV90eXBlID09IEZvcm1EYXRhRWxlbWVudDo6ZW5jb2RlZEZpbGUpIHsKKyAgICAgICAg
ZC0+bV9mb3JtRGF0YUVsZW1lbnREYXRhT2Zmc2V0ID0gMDsKKyAgICAgICAgaWYgKCFkLT5tX2Zp
bGUpCisgICAgICAgICAgICBkLT5tX2ZpbGUgPSBmb3BlbihlbGVtZW50Lm1fZmlsZW5hbWUudXRm
OCgpLmRhdGEoKSwgInJiIik7CisgICAgICAgIC8vIEZJWE1FOiBlcnJvcj8KKyAgICAgICAgaWYg
KCFkLT5tX2ZpbGUpCisgICAgICAgICAgICByZXR1cm4gMDsKKworICAgICAgICBzZW50ID0gZnJl
YWQoKGNoYXIqKXB0ciwgc2l6ZSwgbm1lbWIsIGQtPm1fZmlsZSk7CisgICAgICAgIGlmIChmZW9m
KGQtPm1fZmlsZSkpIHsKKyAgICAgICAgICAgIGZjbG9zZShkLT5tX2ZpbGUpOworICAgICAgICAg
ICAgZC0+bV9maWxlID0gMDsKKyAgICAgICAgICAgIGQtPm1fZm9ybURhdGFFbGVtZW50SW5kZXgr
KzsKKyAgICAgICAgfQorICAgIH0gZWxzZSB7CisgICAgICAgIHNpemVfdCBlbGVtZW50U2l6ZSA9
IGVsZW1lbnQubV9kYXRhLnNpemUoKSAtIGQtPm1fZm9ybURhdGFFbGVtZW50RGF0YU9mZnNldDsK
KyAgICAgICAgc2VudCA9IGVsZW1lbnRTaXplID4gdG9TZW5kID8gdG9TZW5kIDogZWxlbWVudFNp
emU7CisgICAgICAgIG1lbWNweSgoY2hhciopcHRyLCBlbGVtZW50Lm1fZGF0YS5kYXRhKCkrZC0+
bV9mb3JtRGF0YUVsZW1lbnREYXRhT2Zmc2V0LCBzZW50KTsKKyAgICAgICAgaWYgKGVsZW1lbnRT
aXplID4gc2VudCkKKyAgICAgICAgICAgIGQtPm1fZm9ybURhdGFFbGVtZW50RGF0YU9mZnNldCAr
PSBzZW50OworICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIGQtPm1fZm9ybURhdGFFbGVtZW50
RGF0YU9mZnNldCA9IDA7CisgICAgICAgICAgICBkLT5tX2Zvcm1EYXRhRWxlbWVudEluZGV4Kys7
CisgICAgICAgIH0KKyAgICB9CisKKyAgICByZXR1cm4gc2VudDsKK30KKwogdm9pZCBSZXNvdXJj
ZUhhbmRsZU1hbmFnZXI6OmRvd25sb2FkVGltZXJDYWxsYmFjayhUaW1lcjxSZXNvdXJjZUhhbmRs
ZU1hbmFnZXI+KiB0aW1lcikKIHsKICAgICBzdGFydFNjaGVkdWxlZEpvYnMoKTsKQEAgLTI5Myw0
NCArMzQ1LDMxIEBACiAgICAgbm90SW1wbGVtZW50ZWQoKTsKIH0KIAorLyogQ2FsY3VsYXRlIHRo
ZSBsZW5ndGggb2YgdGhlIFBPU1QgKi8KIHZvaWQgUmVzb3VyY2VIYW5kbGVNYW5hZ2VyOjpzZXR1
cFBPU1QoUmVzb3VyY2VIYW5kbGUqIGpvYikKIHsKLSAgICBSZXNvdXJjZUhhbmRsZUludGVybmFs
KiBkID0gam9iLT5nZXRJbnRlcm5hbCgpOwotCi0gICAgY3VybF9lYXN5X3NldG9wdChkLT5tX2hh
bmRsZSwgQ1VSTE9QVF9QT1NULCBUUlVFKTsKLQotICAgIGpvYi0+cmVxdWVzdCgpLmh0dHBCb2R5
KCktPmZsYXR0ZW4oZC0+bV9wb3N0Qnl0ZXMpOwotICAgIGlmIChkLT5tX3Bvc3RCeXRlcy5zaXpl
KCkgIT0gMCkgewotICAgICAgICBjdXJsX2Vhc3lfc2V0b3B0KGQtPm1faGFuZGxlLCBDVVJMT1BU
X1BPU1RGSUVMRFNJWkUsIGQtPm1fcG9zdEJ5dGVzLnNpemUoKSk7Ci0gICAgICAgIGN1cmxfZWFz
eV9zZXRvcHQoZC0+bV9oYW5kbGUsIENVUkxPUFRfUE9TVEZJRUxEUywgZC0+bV9wb3N0Qnl0ZXMu
ZGF0YSgpKTsKLSAgICB9Ci0KKyAgICAvKiBjdXJsX2Vhc3lfc2V0b3B0IHJlcXVpcmVzIGEgY3Vy
bF9vZmZfdCB3aGlsZSBmaWxlU2l6ZSByZXR1cm5zIGEgbG9uZyBsb25nLgorICAgICAgIFRoZSBj
dXJsX29mZl90IGNhbiBiZSB0eXBlZGVmIG9mIG9mZl90IG9yIDY0LWJpdCBzaWduZWQgaW50LAor
ICAgICAgIHRoZXJlZm9yZSBjYW4ndCBiZSBhbHdheXMgY29tcGFyZWQgdG8gYSBsb25nIGxvbmcu
CisgICAgKi8KKyAgICBDT01QSUxFX0FTU0VSVChzaXplb2YoY3VybF9vZmZfdCkgPj0gc2l6ZW9m
KGxvbmcgbG9uZyksIGN1cmxfb2Zmc2V0X3R5cGVfaXNfbGFyZ2VyX3RoYW5fbG9uZ19sb25nKTsK
KyAgICBjdXJsX29mZl90IHNpemUgPSAwOwogICAgIFZlY3RvcjxGb3JtRGF0YUVsZW1lbnQ+IGVs
ZW1lbnRzID0gam9iLT5yZXF1ZXN0KCkuaHR0cEJvZHkoKS0+ZWxlbWVudHMoKTsKLSAgICBzaXpl
X3Qgc2l6ZSA9IGVsZW1lbnRzLnNpemUoKTsKLSAgICBzdHJ1Y3QgY3VybF9odHRwcG9zdCogbGFz
dEl0ZW0gPSAwOwotICAgIHN0cnVjdCBjdXJsX2h0dHBwb3N0KiBwb3N0ID0gMDsKLSAgICBmb3Ig
KHNpemVfdCBpID0gMDsgaSA8IHNpemU7IGkrKykgewotICAgICAgICBpZiAoZWxlbWVudHNbaV0u
bV90eXBlICE9IEZvcm1EYXRhRWxlbWVudDo6ZW5jb2RlZEZpbGUpCi0gICAgICAgICAgICBjb250
aW51ZTsKLSAgICAgICAgQ1N0cmluZyBjc3RyaW5nID0gZWxlbWVudHNbaV0ubV9maWxlbmFtZS51
dGY4KCk7Ci0gICAgICAgIEFTU0VSVCghZC0+bV9maWxlTmFtZSk7Ci0gICAgICAgIGQtPm1fZmls
ZU5hbWUgPSBzdHJkdXAoY3N0cmluZy5kYXRhKCkpOwotCi0gICAgICAgIC8vIEZpbGwgaW4gdGhl
IGZpbGUgdXBsb2FkIGZpZWxkCi0gICAgICAgIGN1cmxfZm9ybWFkZCgmcG9zdCwgJmxhc3RJdGVt
LCBDVVJMRk9STV9DT1BZTkFNRSwgInNlbmRmaWxlIiwgQ1VSTEZPUk1fRklMRSwgZC0+bV9maWxl
TmFtZSwgQ1VSTEZPUk1fRU5EKTsKLQotICAgICAgICAvLyBGaWxsIGluIHRoZSBmaWxlbmFtZSBm
aWVsZAotICAgICAgICBjdXJsX2Zvcm1hZGQoJnBvc3QsICZsYXN0SXRlbSwgQ1VSTEZPUk1fQ09Q
WU5BTUUsICJmaWxlbmFtZSIsIENVUkxGT1JNX0NPUFlDT05URU5UUywgZC0+bV9maWxlTmFtZSwg
Q1VSTEZPUk1fRU5EKTsKLQotICAgICAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIG5vdCBhZGQgYSAi
c3VibWl0IiBmaWVsZCBmb3IgZWFjaCBmaWxlIHVwbG9hZGVkLiBSZXZpZXcgdGhpcyBjb2RlLgot
ICAgICAgICAvLyBGaWxsIGluIHRoZSBzdWJtaXQgZmllbGQgdG9vLCBldmVuIGlmIHRoaXMgaXMg
cmFyZWx5IG5lZWRlZAotICAgICAgICBjdXJsX2Zvcm1hZGQoJnBvc3QsICZsYXN0SXRlbSwgQ1VS
TEZPUk1fQ09QWU5BTUUsICJzdWJtaXQiLCBDVVJMRk9STV9DT1BZQ09OVEVOVFMsICJzZW5kIiwg
Q1VSTEZPUk1fRU5EKTsKLQotICAgICAgICAvLyBGSVhNRTogc2hvdWxkIHdlIHN1cHBvcnQgbW9y
ZSB0aGFuIG9uZSBmaWxlPwotICAgICAgICBicmVhazsKKyAgICBzaXplX3QgbnVtRWxlbWVudHMg
PSBlbGVtZW50cy5zaXplKCk7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBudW1FbGVtZW50
czsgaSsrKSB7CisgICAgICAgIEZvcm1EYXRhRWxlbWVudCBlbGVtZW50ID0gZWxlbWVudHNbaV07
CisgICAgICAgIGlmIChlbGVtZW50Lm1fdHlwZSA9PSBGb3JtRGF0YUVsZW1lbnQ6OmVuY29kZWRG
aWxlKSB7CisgICAgICAgICAgICBsb25nIGxvbmcgcmVzdWx0OworICAgICAgICAgICAgaWYgKGZp
bGVTaXplKGVsZW1lbnQubV9maWxlbmFtZSwgcmVzdWx0KSkKKyAgICAgICAgICAgICAgICBzaXpl
ICs9IHJlc3VsdDsKKyAgICAgICAgICAgIC8vIEZJWE1FOiBlbHNlIGVycm9yPworICAgICAgICB9
IGVsc2UKKyAgICAgICAgICAgIHNpemUgKz0gZWxlbWVudHNbaV0ubV9kYXRhLnNpemUoKTsKICAg
ICB9CiAKLSAgICBjdXJsX2Vhc3lfc2V0b3B0KGQtPm1faGFuZGxlLCBDVVJMT1BUX0hUVFBQT1NU
LCBwb3N0KTsKKyAgICBSZXNvdXJjZUhhbmRsZUludGVybmFsKiBkID0gam9iLT5nZXRJbnRlcm5h
bCgpOworICAgIGN1cmxfZWFzeV9zZXRvcHQoZC0+bV9oYW5kbGUsIENVUkxPUFRfUE9TVCwgVFJV
RSk7CisgICAgY3VybF9lYXN5X3NldG9wdChkLT5tX2hhbmRsZSwgQ1VSTE9QVF9QT1NURklFTERT
SVpFX0xBUkdFLCBzaXplKTsKIH0KIAogdm9pZCBSZXNvdXJjZUhhbmRsZU1hbmFnZXI6OmFkZChS
ZXNvdXJjZUhhbmRsZSogam9iKQpAQCAtNDQzLDExICs0ODIsMTMgQEAKIAogICAgIGQtPm1faGFu
ZGxlID0gY3VybF9lYXN5X2luaXQoKTsKICNpZm5kZWYgTkRFQlVHCi0gICAgaWYgKGdldGVudigi
REVCVUdfQ1VSTCIpKQorICAgIGlmIChnZXRlbnYoIkRFQlVHX0NVUkwiKSkqLwogICAgICAgICBj
dXJsX2Vhc3lfc2V0b3B0KGQtPm1faGFuZGxlLCBDVVJMT1BUX1ZFUkJPU0UsIDEpOwogI2VuZGlm
CiAgICAgY3VybF9lYXN5X3NldG9wdChkLT5tX2hhbmRsZSwgQ1VSTE9QVF9QUklWQVRFLCBqb2Ip
OwogICAgIGN1cmxfZWFzeV9zZXRvcHQoZC0+bV9oYW5kbGUsIENVUkxPUFRfRVJST1JCVUZGRVIs
IG1fY3VybEVycm9yQnVmZmVyKTsKKyAgICBjdXJsX2Vhc3lfc2V0b3B0KGQtPm1faGFuZGxlLCBD
VVJMT1BUX1JFQURGVU5DVElPTiwgcmVhZENhbGxiYWNrKTsKKyAgICBjdXJsX2Vhc3lfc2V0b3B0
KGQtPm1faGFuZGxlLCBDVVJMT1BUX1JFQUREQVRBLCBqb2IpOwogICAgIGN1cmxfZWFzeV9zZXRv
cHQoZC0+bV9oYW5kbGUsIENVUkxPUFRfV1JJVEVGVU5DVElPTiwgd3JpdGVDYWxsYmFjayk7CiAg
ICAgY3VybF9lYXN5X3NldG9wdChkLT5tX2hhbmRsZSwgQ1VSTE9QVF9XUklURURBVEEsIGpvYik7
CiAgICAgY3VybF9lYXN5X3NldG9wdChkLT5tX2hhbmRsZSwgQ1VSTE9QVF9IRUFERVJGVU5DVElP
TiwgaGVhZGVyQ2FsbGJhY2spOwpJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwv
UmVzb3VyY2VIYW5kbGVDdXJsLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvY3VybC9SZXNvdXJjZUhhbmRsZUN1cmwuY3BwCShyZXZpc2lvbiAyOTA4MSkKKysrIFdl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL1Jlc291cmNlSGFuZGxlQ3VybC5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTM4LDkgKzM4LDEwIEBACiBSZXNvdXJjZUhhbmRsZUludGVybmFsOjp+UmVz
b3VyY2VIYW5kbGVJbnRlcm5hbCgpCiB7CiAgICAgZnJlZShtX3VybCk7Ci0gICAgZnJlZShtX2Zp
bGVOYW1lKTsKICAgICBpZiAobV9jdXN0b21IZWFkZXJzKQogICAgICAgICBjdXJsX3NsaXN0X2Zy
ZWVfYWxsKG1fY3VzdG9tSGVhZGVycyk7CisgICAgaWYgKG1fZmlsZSkKKyAgICAgICAgZmNsb3Nl
KG1fZmlsZSk7CiB9CiAKIFJlc291cmNlSGFuZGxlOjp+UmVzb3VyY2VIYW5kbGUoKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>18265</attachid>
            <date>2008-01-04 08:10:21 -0800</date>
            <delta_ts>2008-01-04 09:40:23 -0800</delta_ts>
            <desc>little mistake</desc>
            <filename>curlupload.patch</filename>
            <type>text/plain</type>
            <size>7222</size>
            <attacher name="Luca Bruno">lethalman88</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZUludGVybmFsLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlSW50
ZXJuYWwuaAkocmV2aXNpb24gMjkwODEpCisrKyBXZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVz
b3VyY2VIYW5kbGVJbnRlcm5hbC5oCSh3b3JraW5nIGNvcHkpCkBAIC05Myw5ICs5MywxMSBAQAog
I2lmIFVTRShDVVJMKQogICAgICAgICAgICAgLCBtX2hhbmRsZSgwKQogICAgICAgICAgICAgLCBt
X3VybCgwKQotICAgICAgICAgICAgLCBtX2ZpbGVOYW1lKDApCiAgICAgICAgICAgICAsIG1fY3Vz
dG9tSGVhZGVycygwKQogICAgICAgICAgICAgLCBtX2NhbmNlbGxlZChmYWxzZSkKKyAgICAgICAg
ICAgICwgbV9maWxlKDApCisgICAgICAgICAgICAsIG1fZm9ybURhdGFFbGVtZW50SW5kZXgoMCkK
KyAgICAgICAgICAgICwgbV9mb3JtRGF0YUVsZW1lbnREYXRhT2Zmc2V0KDApCiAjZW5kaWYKICNp
ZiBQTEFURk9STShRVCkKICAgICAgICAgICAgICwgbV9qb2IoMCkKQEAgLTE0NiwxMSArMTQ4LDEz
IEBACiAjaWYgVVNFKENVUkwpCiAgICAgICAgIENVUkwqIG1faGFuZGxlOwogICAgICAgICBjaGFy
KiBtX3VybDsKLSAgICAgICAgY2hhciogbV9maWxlTmFtZTsKICAgICAgICAgc3RydWN0IGN1cmxf
c2xpc3QqIG1fY3VzdG9tSGVhZGVyczsgICAgICAgIAotICAgICAgICBWZWN0b3I8Y2hhcj4gbV9w
b3N0Qnl0ZXM7CiAgICAgICAgIFJlc291cmNlUmVzcG9uc2UgbV9yZXNwb25zZTsKICAgICAgICAg
Ym9vbCBtX2NhbmNlbGxlZDsKKworICAgICAgICBGSUxFKiBtX2ZpbGU7CisgICAgICAgIHNpemVf
dCBtX2Zvcm1EYXRhRWxlbWVudEluZGV4OworICAgICAgICBzaXplX3QgbV9mb3JtRGF0YUVsZW1l
bnREYXRhT2Zmc2V0OwogI2VuZGlmCiAjaWYgUExBVEZPUk0oUVQpCiAgICAgICAgIFFXZWJOZXR3
b3JrSm9iICptX2pvYjsKSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL1Jlc291
cmNlSGFuZGxlTWFuYWdlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL2N1cmwvUmVzb3VyY2VIYW5kbGVNYW5hZ2VyLmNwcAkocmV2aXNpb24gMjkwODEpCisrKyBX
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9SZXNvdXJjZUhhbmRsZU1hbmFnZXIuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0zMSw2ICszMSw3IEBACiAjaW5jbHVkZSAiUmVzb3VyY2VIYW5kbGVN
YW5hZ2VyLmgiCiAKICNpbmNsdWRlICJDU3RyaW5nLmgiCisjaW5jbHVkZSAiRmlsZVN5c3RlbS5o
IgogI2luY2x1ZGUgIk1JTUVUeXBlUmVnaXN0cnkuaCIKICNpbmNsdWRlICJOb3RJbXBsZW1lbnRl
ZC5oIgogI2luY2x1ZGUgIlJlc291cmNlSGFuZGxlLmgiCkBAIC0xOTEsNiArMTkyLDU3IEBACiAg
ICAgcmV0dXJuIHRvdGFsU2l6ZTsKIH0KIAorLyogVGhpcyBpcyBjYWxsZWQgdG8gb2J0YWluIEhU
VFAgUE9TVCBvciBQVVQgZGF0YS4KKyAgIEl0ZXJhdGUgdHJvdWdoIEZvcm1EYXRhIGVsZW1lbnRz
IGFuZCB1cGxvYWQgZmlsZXMuCisgICBDYXJlZnVsbHkgcmVzcGVjdCB0aGUgZ2l2ZW4gYnVmZmVy
IHNpemUgYW5kIGZpbGwgdGhlIHJlc3Qgb2YgdGhlIGRhdGEgYXQgdGhlIG5leHQgY2FsbHMuCisq
Lworc2l6ZV90IHJlYWRDYWxsYmFjayh2b2lkICpwdHIsIHNpemVfdCBzaXplLCBzaXplX3Qgbm1l
bWIsIHZvaWQgKmRhdGEpCit7CisgICAgUmVzb3VyY2VIYW5kbGUqIGpvYiA9IHN0YXRpY19jYXN0
PFJlc291cmNlSGFuZGxlKj4oZGF0YSk7CisgICAgUmVzb3VyY2VIYW5kbGVJbnRlcm5hbCogZCA9
IGpvYi0+Z2V0SW50ZXJuYWwoKTsKKyAgICBpZiAoZC0+bV9jYW5jZWxsZWQpCisgICAgICAgIHJl
dHVybiAwOworCisgICAgc2l6ZV90IHNlbnQgPSAwOworICAgIHNpemVfdCB0b1NlbmQgPSBzaXpl
ICogbm1lbWI7CisgICAgaWYgKCF0b1NlbmQpCisgICAgICAgIHJldHVybiAwOworCisgICAgVmVj
dG9yPEZvcm1EYXRhRWxlbWVudD4gZWxlbWVudHMgPSBqb2ItPnJlcXVlc3QoKS5odHRwQm9keSgp
LT5lbGVtZW50cygpOworICAgIGlmIChkLT5tX2Zvcm1EYXRhRWxlbWVudEluZGV4ID49IGVsZW1l
bnRzLnNpemUoKSkKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICBGb3JtRGF0YUVsZW1lbnQgZWxl
bWVudCA9IGVsZW1lbnRzW2QtPm1fZm9ybURhdGFFbGVtZW50SW5kZXhdOworCisgICAgaWYgKGVs
ZW1lbnQubV90eXBlID09IEZvcm1EYXRhRWxlbWVudDo6ZW5jb2RlZEZpbGUpIHsKKyAgICAgICAg
ZC0+bV9mb3JtRGF0YUVsZW1lbnREYXRhT2Zmc2V0ID0gMDsKKyAgICAgICAgaWYgKCFkLT5tX2Zp
bGUpCisgICAgICAgICAgICBkLT5tX2ZpbGUgPSBmb3BlbihlbGVtZW50Lm1fZmlsZW5hbWUudXRm
OCgpLmRhdGEoKSwgInJiIik7CisgICAgICAgIC8vIEZJWE1FOiBlcnJvcj8KKyAgICAgICAgaWYg
KCFkLT5tX2ZpbGUpCisgICAgICAgICAgICByZXR1cm4gMDsKKworICAgICAgICBzZW50ID0gZnJl
YWQoKGNoYXIqKXB0ciwgc2l6ZSwgbm1lbWIsIGQtPm1fZmlsZSk7CisgICAgICAgIGlmIChmZW9m
KGQtPm1fZmlsZSkpIHsKKyAgICAgICAgICAgIGZjbG9zZShkLT5tX2ZpbGUpOworICAgICAgICAg
ICAgZC0+bV9maWxlID0gMDsKKyAgICAgICAgICAgIGQtPm1fZm9ybURhdGFFbGVtZW50SW5kZXgr
KzsKKyAgICAgICAgfQorICAgIH0gZWxzZSB7CisgICAgICAgIHNpemVfdCBlbGVtZW50U2l6ZSA9
IGVsZW1lbnQubV9kYXRhLnNpemUoKSAtIGQtPm1fZm9ybURhdGFFbGVtZW50RGF0YU9mZnNldDsK
KyAgICAgICAgc2VudCA9IGVsZW1lbnRTaXplID4gdG9TZW5kID8gdG9TZW5kIDogZWxlbWVudFNp
emU7CisgICAgICAgIG1lbWNweSgoY2hhciopcHRyLCBlbGVtZW50Lm1fZGF0YS5kYXRhKCkrZC0+
bV9mb3JtRGF0YUVsZW1lbnREYXRhT2Zmc2V0LCBzZW50KTsKKyAgICAgICAgaWYgKGVsZW1lbnRT
aXplID4gc2VudCkKKyAgICAgICAgICAgIGQtPm1fZm9ybURhdGFFbGVtZW50RGF0YU9mZnNldCAr
PSBzZW50OworICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIGQtPm1fZm9ybURhdGFFbGVtZW50
RGF0YU9mZnNldCA9IDA7CisgICAgICAgICAgICBkLT5tX2Zvcm1EYXRhRWxlbWVudEluZGV4Kys7
CisgICAgICAgIH0KKyAgICB9CisKKyAgICByZXR1cm4gc2VudDsKK30KKwogdm9pZCBSZXNvdXJj
ZUhhbmRsZU1hbmFnZXI6OmRvd25sb2FkVGltZXJDYWxsYmFjayhUaW1lcjxSZXNvdXJjZUhhbmRs
ZU1hbmFnZXI+KiB0aW1lcikKIHsKICAgICBzdGFydFNjaGVkdWxlZEpvYnMoKTsKQEAgLTI5Myw0
NCArMzQ1LDMxIEBACiAgICAgbm90SW1wbGVtZW50ZWQoKTsKIH0KIAorLyogQ2FsY3VsYXRlIHRo
ZSBsZW5ndGggb2YgdGhlIFBPU1QgKi8KIHZvaWQgUmVzb3VyY2VIYW5kbGVNYW5hZ2VyOjpzZXR1
cFBPU1QoUmVzb3VyY2VIYW5kbGUqIGpvYikKIHsKLSAgICBSZXNvdXJjZUhhbmRsZUludGVybmFs
KiBkID0gam9iLT5nZXRJbnRlcm5hbCgpOwotCi0gICAgY3VybF9lYXN5X3NldG9wdChkLT5tX2hh
bmRsZSwgQ1VSTE9QVF9QT1NULCBUUlVFKTsKLQotICAgIGpvYi0+cmVxdWVzdCgpLmh0dHBCb2R5
KCktPmZsYXR0ZW4oZC0+bV9wb3N0Qnl0ZXMpOwotICAgIGlmIChkLT5tX3Bvc3RCeXRlcy5zaXpl
KCkgIT0gMCkgewotICAgICAgICBjdXJsX2Vhc3lfc2V0b3B0KGQtPm1faGFuZGxlLCBDVVJMT1BU
X1BPU1RGSUVMRFNJWkUsIGQtPm1fcG9zdEJ5dGVzLnNpemUoKSk7Ci0gICAgICAgIGN1cmxfZWFz
eV9zZXRvcHQoZC0+bV9oYW5kbGUsIENVUkxPUFRfUE9TVEZJRUxEUywgZC0+bV9wb3N0Qnl0ZXMu
ZGF0YSgpKTsKLSAgICB9Ci0KKyAgICAvKiBjdXJsX2Vhc3lfc2V0b3B0IHJlcXVpcmVzIGEgY3Vy
bF9vZmZfdCB3aGlsZSBmaWxlU2l6ZSByZXR1cm5zIGEgbG9uZyBsb25nLgorICAgICAgIFRoZSBj
dXJsX29mZl90IGNhbiBiZSB0eXBlZGVmIG9mIG9mZl90IG9yIDY0LWJpdCBzaWduZWQgaW50LAor
ICAgICAgIHRoZXJlZm9yZSBjYW4ndCBiZSBhbHdheXMgY29tcGFyZWQgdG8gYSBsb25nIGxvbmcu
CisgICAgKi8KKyAgICBDT01QSUxFX0FTU0VSVChzaXplb2YoY3VybF9vZmZfdCkgPj0gc2l6ZW9m
KGxvbmcgbG9uZyksIGN1cmxfb2Zmc2V0X3R5cGVfaXNfbGFyZ2VyX3RoYW5fbG9uZ19sb25nKTsK
KyAgICBjdXJsX29mZl90IHNpemUgPSAwOwogICAgIFZlY3RvcjxGb3JtRGF0YUVsZW1lbnQ+IGVs
ZW1lbnRzID0gam9iLT5yZXF1ZXN0KCkuaHR0cEJvZHkoKS0+ZWxlbWVudHMoKTsKLSAgICBzaXpl
X3Qgc2l6ZSA9IGVsZW1lbnRzLnNpemUoKTsKLSAgICBzdHJ1Y3QgY3VybF9odHRwcG9zdCogbGFz
dEl0ZW0gPSAwOwotICAgIHN0cnVjdCBjdXJsX2h0dHBwb3N0KiBwb3N0ID0gMDsKLSAgICBmb3Ig
KHNpemVfdCBpID0gMDsgaSA8IHNpemU7IGkrKykgewotICAgICAgICBpZiAoZWxlbWVudHNbaV0u
bV90eXBlICE9IEZvcm1EYXRhRWxlbWVudDo6ZW5jb2RlZEZpbGUpCi0gICAgICAgICAgICBjb250
aW51ZTsKLSAgICAgICAgQ1N0cmluZyBjc3RyaW5nID0gZWxlbWVudHNbaV0ubV9maWxlbmFtZS51
dGY4KCk7Ci0gICAgICAgIEFTU0VSVCghZC0+bV9maWxlTmFtZSk7Ci0gICAgICAgIGQtPm1fZmls
ZU5hbWUgPSBzdHJkdXAoY3N0cmluZy5kYXRhKCkpOwotCi0gICAgICAgIC8vIEZpbGwgaW4gdGhl
IGZpbGUgdXBsb2FkIGZpZWxkCi0gICAgICAgIGN1cmxfZm9ybWFkZCgmcG9zdCwgJmxhc3RJdGVt
LCBDVVJMRk9STV9DT1BZTkFNRSwgInNlbmRmaWxlIiwgQ1VSTEZPUk1fRklMRSwgZC0+bV9maWxl
TmFtZSwgQ1VSTEZPUk1fRU5EKTsKLQotICAgICAgICAvLyBGaWxsIGluIHRoZSBmaWxlbmFtZSBm
aWVsZAotICAgICAgICBjdXJsX2Zvcm1hZGQoJnBvc3QsICZsYXN0SXRlbSwgQ1VSTEZPUk1fQ09Q
WU5BTUUsICJmaWxlbmFtZSIsIENVUkxGT1JNX0NPUFlDT05URU5UUywgZC0+bV9maWxlTmFtZSwg
Q1VSTEZPUk1fRU5EKTsKLQotICAgICAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIG5vdCBhZGQgYSAi
c3VibWl0IiBmaWVsZCBmb3IgZWFjaCBmaWxlIHVwbG9hZGVkLiBSZXZpZXcgdGhpcyBjb2RlLgot
ICAgICAgICAvLyBGaWxsIGluIHRoZSBzdWJtaXQgZmllbGQgdG9vLCBldmVuIGlmIHRoaXMgaXMg
cmFyZWx5IG5lZWRlZAotICAgICAgICBjdXJsX2Zvcm1hZGQoJnBvc3QsICZsYXN0SXRlbSwgQ1VS
TEZPUk1fQ09QWU5BTUUsICJzdWJtaXQiLCBDVVJMRk9STV9DT1BZQ09OVEVOVFMsICJzZW5kIiwg
Q1VSTEZPUk1fRU5EKTsKLQotICAgICAgICAvLyBGSVhNRTogc2hvdWxkIHdlIHN1cHBvcnQgbW9y
ZSB0aGFuIG9uZSBmaWxlPwotICAgICAgICBicmVhazsKKyAgICBzaXplX3QgbnVtRWxlbWVudHMg
PSBlbGVtZW50cy5zaXplKCk7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBudW1FbGVtZW50
czsgaSsrKSB7CisgICAgICAgIEZvcm1EYXRhRWxlbWVudCBlbGVtZW50ID0gZWxlbWVudHNbaV07
CisgICAgICAgIGlmIChlbGVtZW50Lm1fdHlwZSA9PSBGb3JtRGF0YUVsZW1lbnQ6OmVuY29kZWRG
aWxlKSB7CisgICAgICAgICAgICBsb25nIGxvbmcgcmVzdWx0OworICAgICAgICAgICAgaWYgKGZp
bGVTaXplKGVsZW1lbnQubV9maWxlbmFtZSwgcmVzdWx0KSkKKyAgICAgICAgICAgICAgICBzaXpl
ICs9IHJlc3VsdDsKKyAgICAgICAgICAgIC8vIEZJWE1FOiBlbHNlIGVycm9yPworICAgICAgICB9
IGVsc2UKKyAgICAgICAgICAgIHNpemUgKz0gZWxlbWVudHNbaV0ubV9kYXRhLnNpemUoKTsKICAg
ICB9CiAKLSAgICBjdXJsX2Vhc3lfc2V0b3B0KGQtPm1faGFuZGxlLCBDVVJMT1BUX0hUVFBQT1NU
LCBwb3N0KTsKKyAgICBSZXNvdXJjZUhhbmRsZUludGVybmFsKiBkID0gam9iLT5nZXRJbnRlcm5h
bCgpOworICAgIGN1cmxfZWFzeV9zZXRvcHQoZC0+bV9oYW5kbGUsIENVUkxPUFRfUE9TVCwgVFJV
RSk7CisgICAgY3VybF9lYXN5X3NldG9wdChkLT5tX2hhbmRsZSwgQ1VSTE9QVF9QT1NURklFTERT
SVpFX0xBUkdFLCBzaXplKTsKIH0KIAogdm9pZCBSZXNvdXJjZUhhbmRsZU1hbmFnZXI6OmFkZChS
ZXNvdXJjZUhhbmRsZSogam9iKQpAQCAtNDQ4LDYgKzQ4Nyw4IEBACiAjZW5kaWYKICAgICBjdXJs
X2Vhc3lfc2V0b3B0KGQtPm1faGFuZGxlLCBDVVJMT1BUX1BSSVZBVEUsIGpvYik7CiAgICAgY3Vy
bF9lYXN5X3NldG9wdChkLT5tX2hhbmRsZSwgQ1VSTE9QVF9FUlJPUkJVRkZFUiwgbV9jdXJsRXJy
b3JCdWZmZXIpOworICAgIGN1cmxfZWFzeV9zZXRvcHQoZC0+bV9oYW5kbGUsIENVUkxPUFRfUkVB
REZVTkNUSU9OLCByZWFkQ2FsbGJhY2spOworICAgIGN1cmxfZWFzeV9zZXRvcHQoZC0+bV9oYW5k
bGUsIENVUkxPUFRfUkVBRERBVEEsIGpvYik7CiAgICAgY3VybF9lYXN5X3NldG9wdChkLT5tX2hh
bmRsZSwgQ1VSTE9QVF9XUklURUZVTkNUSU9OLCB3cml0ZUNhbGxiYWNrKTsKICAgICBjdXJsX2Vh
c3lfc2V0b3B0KGQtPm1faGFuZGxlLCBDVVJMT1BUX1dSSVRFREFUQSwgam9iKTsKICAgICBjdXJs
X2Vhc3lfc2V0b3B0KGQtPm1faGFuZGxlLCBDVVJMT1BUX0hFQURFUkZVTkNUSU9OLCBoZWFkZXJD
YWxsYmFjayk7CkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9SZXNvdXJjZUhh
bmRsZUN1cmwuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJs
L1Jlc291cmNlSGFuZGxlQ3VybC5jcHAJKHJldmlzaW9uIDI5MDgxKQorKysgV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL2N1cmwvUmVzb3VyY2VIYW5kbGVDdXJsLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMzgsOSArMzgsMTAgQEAKIFJlc291cmNlSGFuZGxlSW50ZXJuYWw6On5SZXNvdXJjZUhhbmRs
ZUludGVybmFsKCkKIHsKICAgICBmcmVlKG1fdXJsKTsKLSAgICBmcmVlKG1fZmlsZU5hbWUpOwog
ICAgIGlmIChtX2N1c3RvbUhlYWRlcnMpCiAgICAgICAgIGN1cmxfc2xpc3RfZnJlZV9hbGwobV9j
dXN0b21IZWFkZXJzKTsKKyAgICBpZiAobV9maWxlKQorICAgICAgICBmY2xvc2UobV9maWxlKTsK
IH0KIAogUmVzb3VyY2VIYW5kbGU6On5SZXNvdXJjZUhhbmRsZSgpCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>18270</attachid>
            <date>2008-01-04 09:40:23 -0800</date>
            <delta_ts>2008-01-04 14:14:02 -0800</delta_ts>
            <desc>introduce chunked transfer</desc>
            <filename>curlupload.patch</filename>
            <type>text/plain</type>
            <size>10826</size>
            <attacher name="Luca Bruno">lethalman88</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZUludGVybmFsLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlSW50
ZXJuYWwuaAkocmV2aXNpb24gMjkwODEpCisrKyBXZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVz
b3VyY2VIYW5kbGVJbnRlcm5hbC5oCSh3b3JraW5nIGNvcHkpCkBAIC05Myw5ICs5MywxMSBAQAog
I2lmIFVTRShDVVJMKQogICAgICAgICAgICAgLCBtX2hhbmRsZSgwKQogICAgICAgICAgICAgLCBt
X3VybCgwKQotICAgICAgICAgICAgLCBtX2ZpbGVOYW1lKDApCiAgICAgICAgICAgICAsIG1fY3Vz
dG9tSGVhZGVycygwKQogICAgICAgICAgICAgLCBtX2NhbmNlbGxlZChmYWxzZSkKKyAgICAgICAg
ICAgICwgbV9maWxlKDApCisgICAgICAgICAgICAsIG1fZm9ybURhdGFFbGVtZW50SW5kZXgoMCkK
KyAgICAgICAgICAgICwgbV9mb3JtRGF0YUVsZW1lbnREYXRhT2Zmc2V0KDApCiAjZW5kaWYKICNp
ZiBQTEFURk9STShRVCkKICAgICAgICAgICAgICwgbV9qb2IoMCkKQEAgLTE0NiwxMSArMTQ4LDEz
IEBACiAjaWYgVVNFKENVUkwpCiAgICAgICAgIENVUkwqIG1faGFuZGxlOwogICAgICAgICBjaGFy
KiBtX3VybDsKLSAgICAgICAgY2hhciogbV9maWxlTmFtZTsKICAgICAgICAgc3RydWN0IGN1cmxf
c2xpc3QqIG1fY3VzdG9tSGVhZGVyczsgICAgICAgIAotICAgICAgICBWZWN0b3I8Y2hhcj4gbV9w
b3N0Qnl0ZXM7CiAgICAgICAgIFJlc291cmNlUmVzcG9uc2UgbV9yZXNwb25zZTsKICAgICAgICAg
Ym9vbCBtX2NhbmNlbGxlZDsKKworICAgICAgICBGSUxFKiBtX2ZpbGU7CisgICAgICAgIHNpemVf
dCBtX2Zvcm1EYXRhRWxlbWVudEluZGV4OworICAgICAgICBzaXplX3QgbV9mb3JtRGF0YUVsZW1l
bnREYXRhT2Zmc2V0OwogI2VuZGlmCiAjaWYgUExBVEZPUk0oUVQpCiAgICAgICAgIFFXZWJOZXR3
b3JrSm9iICptX2pvYjsKSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL1Jlc291
cmNlSGFuZGxlTWFuYWdlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL2N1cmwvUmVzb3VyY2VIYW5kbGVNYW5hZ2VyLmNwcAkocmV2aXNpb24gMjkwODEpCisrKyBX
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9SZXNvdXJjZUhhbmRsZU1hbmFnZXIuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0zMSw2ICszMSw3IEBACiAjaW5jbHVkZSAiUmVzb3VyY2VIYW5kbGVN
YW5hZ2VyLmgiCiAKICNpbmNsdWRlICJDU3RyaW5nLmgiCisjaW5jbHVkZSAiRmlsZVN5c3RlbS5o
IgogI2luY2x1ZGUgIk1JTUVUeXBlUmVnaXN0cnkuaCIKICNpbmNsdWRlICJOb3RJbXBsZW1lbnRl
ZC5oIgogI2luY2x1ZGUgIlJlc291cmNlSGFuZGxlLmgiCkBAIC0xOTEsNiArMTkyLDU2IEBACiAg
ICAgcmV0dXJuIHRvdGFsU2l6ZTsKIH0KIAorLyogVGhpcyBpcyBjYWxsZWQgdG8gb2J0YWluIEhU
VFAgUE9TVCBvciBQVVQgZGF0YS4KKyAgIEl0ZXJhdGUgdHJvdWdoIEZvcm1EYXRhIGVsZW1lbnRz
IGFuZCB1cGxvYWQgZmlsZXMuCisgICBDYXJlZnVsbHkgcmVzcGVjdCB0aGUgZ2l2ZW4gYnVmZmVy
IHNpemUgYW5kIGZpbGwgdGhlIHJlc3Qgb2YgdGhlIGRhdGEgYXQgdGhlIG5leHQgY2FsbHMuCisq
Lworc2l6ZV90IHJlYWRDYWxsYmFjayh2b2lkICpwdHIsIHNpemVfdCBzaXplLCBzaXplX3Qgbm1l
bWIsIHZvaWQgKmRhdGEpCit7CisgICAgUmVzb3VyY2VIYW5kbGUqIGpvYiA9IHN0YXRpY19jYXN0
PFJlc291cmNlSGFuZGxlKj4oZGF0YSk7CisgICAgUmVzb3VyY2VIYW5kbGVJbnRlcm5hbCogZCA9
IGpvYi0+Z2V0SW50ZXJuYWwoKTsKKyAgICBpZiAoZC0+bV9jYW5jZWxsZWQpCisgICAgICAgIHJl
dHVybiAwOworCisgICAgc2l6ZV90IHNlbnQgPSAwOworICAgIHNpemVfdCB0b1NlbmQgPSBzaXpl
ICogbm1lbWI7CisgICAgaWYgKCF0b1NlbmQpCisgICAgICAgIHJldHVybiAwOworCisgICAgVmVj
dG9yPEZvcm1EYXRhRWxlbWVudD4gZWxlbWVudHMgPSBqb2ItPnJlcXVlc3QoKS5odHRwQm9keSgp
LT5lbGVtZW50cygpOworICAgIGlmIChkLT5tX2Zvcm1EYXRhRWxlbWVudEluZGV4ID49IGVsZW1l
bnRzLnNpemUoKSkKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICBGb3JtRGF0YUVsZW1lbnQgZWxl
bWVudCA9IGVsZW1lbnRzW2QtPm1fZm9ybURhdGFFbGVtZW50SW5kZXhdOworCisgICAgaWYgKGVs
ZW1lbnQubV90eXBlID09IEZvcm1EYXRhRWxlbWVudDo6ZW5jb2RlZEZpbGUpIHsKKyAgICAgICAg
aWYgKCFkLT5tX2ZpbGUpCisgICAgICAgICAgICBkLT5tX2ZpbGUgPSBmb3BlbihlbGVtZW50Lm1f
ZmlsZW5hbWUudXRmOCgpLmRhdGEoKSwgInJiIik7CisgICAgICAgIC8vIEZJWE1FOiBlcnJvcj8K
KyAgICAgICAgaWYgKCFkLT5tX2ZpbGUpCisgICAgICAgICAgICByZXR1cm4gMDsKKworICAgICAg
ICBzZW50ID0gZnJlYWQocHRyLCBzaXplLCBubWVtYiwgZC0+bV9maWxlKTsKKyAgICAgICAgaWYg
KGZlb2YoZC0+bV9maWxlKSkgeworICAgICAgICAgICAgZmNsb3NlKGQtPm1fZmlsZSk7CisgICAg
ICAgICAgICBkLT5tX2ZpbGUgPSAwOworICAgICAgICAgICAgZC0+bV9mb3JtRGF0YUVsZW1lbnRJ
bmRleCsrOworICAgICAgICB9CisgICAgfSBlbHNlIHsKKyAgICAgICAgc2l6ZV90IGVsZW1lbnRT
aXplID0gZWxlbWVudC5tX2RhdGEuc2l6ZSgpIC0gZC0+bV9mb3JtRGF0YUVsZW1lbnREYXRhT2Zm
c2V0OworICAgICAgICBzZW50ID0gZWxlbWVudFNpemUgPiB0b1NlbmQgPyB0b1NlbmQgOiBlbGVt
ZW50U2l6ZTsKKyAgICAgICAgbWVtY3B5KHB0ciwgZWxlbWVudC5tX2RhdGEuZGF0YSgpK2QtPm1f
Zm9ybURhdGFFbGVtZW50RGF0YU9mZnNldCwgc2VudCk7CisgICAgICAgIGlmIChlbGVtZW50U2l6
ZSA+IHNlbnQpCisgICAgICAgICAgICBkLT5tX2Zvcm1EYXRhRWxlbWVudERhdGFPZmZzZXQgKz0g
c2VudDsKKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBkLT5tX2Zvcm1EYXRhRWxlbWVudERh
dGFPZmZzZXQgPSAwOworICAgICAgICAgICAgZC0+bV9mb3JtRGF0YUVsZW1lbnRJbmRleCsrOwor
ICAgICAgICB9CisgICAgfQorCisgICAgcmV0dXJuIHNlbnQ7Cit9CisKIHZvaWQgUmVzb3VyY2VI
YW5kbGVNYW5hZ2VyOjpkb3dubG9hZFRpbWVyQ2FsbGJhY2soVGltZXI8UmVzb3VyY2VIYW5kbGVN
YW5hZ2VyPiogdGltZXIpCiB7CiAgICAgc3RhcnRTY2hlZHVsZWRKb2JzKCk7CkBAIC0yODgsNDkg
KzMzOSw0NiBAQAogICAgIGQtPm1faGFuZGxlID0gMDsKIH0KIAotdm9pZCBSZXNvdXJjZUhhbmRs
ZU1hbmFnZXI6OnNldHVwUFVUKFJlc291cmNlSGFuZGxlKikKK3ZvaWQgUmVzb3VyY2VIYW5kbGVN
YW5hZ2VyOjpzZXR1cFBVVChSZXNvdXJjZUhhbmRsZSosIHN0cnVjdCBjdXJsX3NsaXN0KiopCiB7
CiAgICAgbm90SW1wbGVtZW50ZWQoKTsKIH0KIAotdm9pZCBSZXNvdXJjZUhhbmRsZU1hbmFnZXI6
OnNldHVwUE9TVChSZXNvdXJjZUhhbmRsZSogam9iKQorLyogQ2FsY3VsYXRlIHRoZSBsZW5ndGgg
b2YgdGhlIFBPU1QuCisgICBGb3JjZSBjaHVua2VkIGRhdGEgdHJhbnNmZXIgaWYgc2l6ZSBvZiBm
aWxlcyBjYW4ndCBiZSBvYnRhaW5lZC4KKyAqLwordm9pZCBSZXNvdXJjZUhhbmRsZU1hbmFnZXI6
OnNldHVwUE9TVChSZXNvdXJjZUhhbmRsZSogam9iLCBzdHJ1Y3QgY3VybF9zbGlzdCoqIGhlYWRl
cnMpCiB7Ci0gICAgUmVzb3VyY2VIYW5kbGVJbnRlcm5hbCogZCA9IGpvYi0+Z2V0SW50ZXJuYWwo
KTsKKyAgICAvKiBjdXJsX2Vhc3lfc2V0b3B0IHJlcXVpcmVzIGEgY3VybF9vZmZfdCB3aGlsZSBm
aWxlU2l6ZSByZXR1cm5zIGEgbG9uZyBsb25nLgorICAgICAgIFRoZSBjdXJsX29mZl90IGNhbiBi
ZSB0eXBlZGVmIG9mIG9mZl90IG9yIDY0LWJpdCBzaWduZWQgaW50LAorICAgICAgIHRoZXJlZm9y
ZSBjYW4ndCBiZSBhbHdheXMgY29tcGFyZWQgdG8gYSBsb25nIGxvbmcuCisgICAgKi8KKyAgICBD
T01QSUxFX0FTU0VSVChzaXplb2YoY3VybF9vZmZfdCkgPj0gc2l6ZW9mKGxvbmcgbG9uZyksIGN1
cmxfb2Zmc2V0X3R5cGVfaXNfbGFyZ2VyX3RoYW5fbG9uZ19sb25nKTsKKyAgICBjdXJsX29mZl90
IHNpemUgPSAwOworICAgIGJvb2wgY2h1bmtlZFRyYW5zZmVyID0gZmFsc2U7CiAKLSAgICBjdXJs
X2Vhc3lfc2V0b3B0KGQtPm1faGFuZGxlLCBDVVJMT1BUX1BPU1QsIFRSVUUpOwotCi0gICAgam9i
LT5yZXF1ZXN0KCkuaHR0cEJvZHkoKS0+ZmxhdHRlbihkLT5tX3Bvc3RCeXRlcyk7Ci0gICAgaWYg
KGQtPm1fcG9zdEJ5dGVzLnNpemUoKSAhPSAwKSB7Ci0gICAgICAgIGN1cmxfZWFzeV9zZXRvcHQo
ZC0+bV9oYW5kbGUsIENVUkxPUFRfUE9TVEZJRUxEU0laRSwgZC0+bV9wb3N0Qnl0ZXMuc2l6ZSgp
KTsKLSAgICAgICAgY3VybF9lYXN5X3NldG9wdChkLT5tX2hhbmRsZSwgQ1VSTE9QVF9QT1NURklF
TERTLCBkLT5tX3Bvc3RCeXRlcy5kYXRhKCkpOwotICAgIH0KLQogICAgIFZlY3RvcjxGb3JtRGF0
YUVsZW1lbnQ+IGVsZW1lbnRzID0gam9iLT5yZXF1ZXN0KCkuaHR0cEJvZHkoKS0+ZWxlbWVudHMo
KTsKLSAgICBzaXplX3Qgc2l6ZSA9IGVsZW1lbnRzLnNpemUoKTsKLSAgICBzdHJ1Y3QgY3VybF9o
dHRwcG9zdCogbGFzdEl0ZW0gPSAwOwotICAgIHN0cnVjdCBjdXJsX2h0dHBwb3N0KiBwb3N0ID0g
MDsKLSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHNpemU7IGkrKykgewotICAgICAgICBpZiAo
ZWxlbWVudHNbaV0ubV90eXBlICE9IEZvcm1EYXRhRWxlbWVudDo6ZW5jb2RlZEZpbGUpCi0gICAg
ICAgICAgICBjb250aW51ZTsKLSAgICAgICAgQ1N0cmluZyBjc3RyaW5nID0gZWxlbWVudHNbaV0u
bV9maWxlbmFtZS51dGY4KCk7Ci0gICAgICAgIEFTU0VSVCghZC0+bV9maWxlTmFtZSk7Ci0gICAg
ICAgIGQtPm1fZmlsZU5hbWUgPSBzdHJkdXAoY3N0cmluZy5kYXRhKCkpOwotCi0gICAgICAgIC8v
IEZpbGwgaW4gdGhlIGZpbGUgdXBsb2FkIGZpZWxkCi0gICAgICAgIGN1cmxfZm9ybWFkZCgmcG9z
dCwgJmxhc3RJdGVtLCBDVVJMRk9STV9DT1BZTkFNRSwgInNlbmRmaWxlIiwgQ1VSTEZPUk1fRklM
RSwgZC0+bV9maWxlTmFtZSwgQ1VSTEZPUk1fRU5EKTsKLQotICAgICAgICAvLyBGaWxsIGluIHRo
ZSBmaWxlbmFtZSBmaWVsZAotICAgICAgICBjdXJsX2Zvcm1hZGQoJnBvc3QsICZsYXN0SXRlbSwg
Q1VSTEZPUk1fQ09QWU5BTUUsICJmaWxlbmFtZSIsIENVUkxGT1JNX0NPUFlDT05URU5UUywgZC0+
bV9maWxlTmFtZSwgQ1VSTEZPUk1fRU5EKTsKLQotICAgICAgICAvLyBGSVhNRTogV2Ugc2hvdWxk
IG5vdCBhZGQgYSAic3VibWl0IiBmaWVsZCBmb3IgZWFjaCBmaWxlIHVwbG9hZGVkLiBSZXZpZXcg
dGhpcyBjb2RlLgotICAgICAgICAvLyBGaWxsIGluIHRoZSBzdWJtaXQgZmllbGQgdG9vLCBldmVu
IGlmIHRoaXMgaXMgcmFyZWx5IG5lZWRlZAotICAgICAgICBjdXJsX2Zvcm1hZGQoJnBvc3QsICZs
YXN0SXRlbSwgQ1VSTEZPUk1fQ09QWU5BTUUsICJzdWJtaXQiLCBDVVJMRk9STV9DT1BZQ09OVEVO
VFMsICJzZW5kIiwgQ1VSTEZPUk1fRU5EKTsKLQotICAgICAgICAvLyBGSVhNRTogc2hvdWxkIHdl
IHN1cHBvcnQgbW9yZSB0aGFuIG9uZSBmaWxlPwotICAgICAgICBicmVhazsKKyAgICBzaXplX3Qg
bnVtRWxlbWVudHMgPSBlbGVtZW50cy5zaXplKCk7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkg
PCBudW1FbGVtZW50czsgaSsrKSB7CisgICAgICAgIEZvcm1EYXRhRWxlbWVudCBlbGVtZW50ID0g
ZWxlbWVudHNbaV07CisgICAgICAgIGlmIChlbGVtZW50Lm1fdHlwZSA9PSBGb3JtRGF0YUVsZW1l
bnQ6OmVuY29kZWRGaWxlKSB7CisgICAgICAgICAgICBsb25nIGxvbmcgcmVzdWx0OworICAgICAg
ICAgICAgaWYgKGZpbGVTaXplKGVsZW1lbnQubV9maWxlbmFtZSwgcmVzdWx0KSkKKyAgICAgICAg
ICAgICAgICBzaXplICs9IHJlc3VsdDsKKyAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAg
ICAgIGNodW5rZWRUcmFuc2ZlciA9IHRydWU7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgICAgICB9CisgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgc2l6ZSArPSBlbGVtZW50c1tp
XS5tX2RhdGEuc2l6ZSgpOwogICAgIH0KIAotICAgIGN1cmxfZWFzeV9zZXRvcHQoZC0+bV9oYW5k
bGUsIENVUkxPUFRfSFRUUFBPU1QsIHBvc3QpOworICAgIFJlc291cmNlSGFuZGxlSW50ZXJuYWwq
IGQgPSBqb2ItPmdldEludGVybmFsKCk7CisgICAgY3VybF9lYXN5X3NldG9wdChkLT5tX2hhbmRs
ZSwgQ1VSTE9QVF9QT1NULCBUUlVFKTsKKyAgICBpZiAoY2h1bmtlZFRyYW5zZmVyKQorICAgICAg
ICAqaGVhZGVycyA9IGN1cmxfc2xpc3RfYXBwZW5kKCpoZWFkZXJzLCAiVHJhbnNmZXItRW5jb2Rp
bmc6IGNodW5rZWQiKTsKKyAgICBlbHNlCisgICAgICAgIGN1cmxfZWFzeV9zZXRvcHQoZC0+bV9o
YW5kbGUsIENVUkxPUFRfUE9TVEZJRUxEU0laRV9MQVJHRSwgc2l6ZSk7CiB9CiAKIHZvaWQgUmVz
b3VyY2VIYW5kbGVNYW5hZ2VyOjphZGQoUmVzb3VyY2VIYW5kbGUqIGpvYikKQEAgLTQ0OCw2ICs0
OTYsOCBAQAogI2VuZGlmCiAgICAgY3VybF9lYXN5X3NldG9wdChkLT5tX2hhbmRsZSwgQ1VSTE9Q
VF9QUklWQVRFLCBqb2IpOwogICAgIGN1cmxfZWFzeV9zZXRvcHQoZC0+bV9oYW5kbGUsIENVUkxP
UFRfRVJST1JCVUZGRVIsIG1fY3VybEVycm9yQnVmZmVyKTsKKyAgICBjdXJsX2Vhc3lfc2V0b3B0
KGQtPm1faGFuZGxlLCBDVVJMT1BUX1JFQURGVU5DVElPTiwgcmVhZENhbGxiYWNrKTsKKyAgICBj
dXJsX2Vhc3lfc2V0b3B0KGQtPm1faGFuZGxlLCBDVVJMT1BUX1JFQUREQVRBLCBqb2IpOwogICAg
IGN1cmxfZWFzeV9zZXRvcHQoZC0+bV9oYW5kbGUsIENVUkxPUFRfV1JJVEVGVU5DVElPTiwgd3Jp
dGVDYWxsYmFjayk7CiAgICAgY3VybF9lYXN5X3NldG9wdChkLT5tX2hhbmRsZSwgQ1VSTE9QVF9X
UklURURBVEEsIGpvYik7CiAgICAgY3VybF9lYXN5X3NldG9wdChkLT5tX2hhbmRsZSwgQ1VSTE9Q
VF9IRUFERVJGVU5DVElPTiwgaGVhZGVyQ2FsbGJhY2spOwpAQCAtNDcxLDggKzUyMSw4IEBACiAg
ICAgICAgIGN1cmxfZWFzeV9zZXRvcHQoZC0+bV9oYW5kbGUsIENVUkxPUFRfQ09PS0lFSkFSLCBt
X2Nvb2tpZUphckZpbGVOYW1lKTsKICAgICB9CiAKKyAgICBzdHJ1Y3QgY3VybF9zbGlzdCogaGVh
ZGVycyA9IDA7CiAgICAgaWYgKGpvYi0+cmVxdWVzdCgpLmh0dHBIZWFkZXJGaWVsZHMoKS5zaXpl
KCkgPiAwKSB7Ci0gICAgICAgIHN0cnVjdCBjdXJsX3NsaXN0KiBoZWFkZXJzID0gMDsKICAgICAg
ICAgSFRUUEhlYWRlck1hcCBjdXN0b21IZWFkZXJzID0gam9iLT5yZXF1ZXN0KCkuaHR0cEhlYWRl
ckZpZWxkcygpOwogICAgICAgICBIVFRQSGVhZGVyTWFwOjpjb25zdF9pdGVyYXRvciBlbmQgPSBj
dXN0b21IZWFkZXJzLmVuZCgpOwogICAgICAgICBmb3IgKEhUVFBIZWFkZXJNYXA6OmNvbnN0X2l0
ZXJhdG9yIGl0ID0gY3VzdG9tSGVhZGVycy5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpIHsKQEAg
LTQ4NCwxOSArNTM0LDIyIEBACiAgICAgICAgICAgICBDU3RyaW5nIGhlYWRlckxhdGluMSA9IGhl
YWRlclN0cmluZy5sYXRpbjEoKTsKICAgICAgICAgICAgIGhlYWRlcnMgPSBjdXJsX3NsaXN0X2Fw
cGVuZChoZWFkZXJzLCBoZWFkZXJMYXRpbjEuZGF0YSgpKTsKICAgICAgICAgfQotICAgICAgICBj
dXJsX2Vhc3lfc2V0b3B0KGQtPm1faGFuZGxlLCBDVVJMT1BUX0hUVFBIRUFERVIsIGhlYWRlcnMp
OwotICAgICAgICBkLT5tX2N1c3RvbUhlYWRlcnMgPSBoZWFkZXJzOwogICAgIH0KIAogICAgIGlm
ICgiR0VUIiA9PSBqb2ItPnJlcXVlc3QoKS5odHRwTWV0aG9kKCkpCiAgICAgICAgIGN1cmxfZWFz
eV9zZXRvcHQoZC0+bV9oYW5kbGUsIENVUkxPUFRfSFRUUEdFVCwgVFJVRSk7CiAgICAgZWxzZSBp
ZiAoIlBPU1QiID09IGpvYi0+cmVxdWVzdCgpLmh0dHBNZXRob2QoKSkKLSAgICAgICAgc2V0dXBQ
T1NUKGpvYik7CisgICAgICAgIHNldHVwUE9TVChqb2IsICZoZWFkZXJzKTsKICAgICBlbHNlIGlm
ICgiUFVUIiA9PSBqb2ItPnJlcXVlc3QoKS5odHRwTWV0aG9kKCkpCi0gICAgICAgIHNldHVwUFVU
KGpvYik7CisgICAgICAgIHNldHVwUFVUKGpvYiwgJmhlYWRlcnMpOwogICAgIGVsc2UgaWYgKCJI
RUFEIiA9PSBqb2ItPnJlcXVlc3QoKS5odHRwTWV0aG9kKCkpCiAgICAgICAgIGN1cmxfZWFzeV9z
ZXRvcHQoZC0+bV9oYW5kbGUsIENVUkxPUFRfTk9CT0RZLCBUUlVFKTsKIAorICAgIGlmIChoZWFk
ZXJzKSB7CisgICAgICAgIGN1cmxfZWFzeV9zZXRvcHQoZC0+bV9oYW5kbGUsIENVUkxPUFRfSFRU
UEhFQURFUiwgaGVhZGVycyk7CisgICAgICAgIGQtPm1fY3VzdG9tSGVhZGVycyA9IGhlYWRlcnM7
CisgICAgfQorCiAgICAgbV9ydW5uaW5nSm9icysrOwogICAgIENVUkxNY29kZSByZXQgPSBjdXJs
X211bHRpX2FkZF9oYW5kbGUobV9jdXJsTXVsdGlIYW5kbGUsIGQtPm1faGFuZGxlKTsKICAgICAv
LyBkb24ndCBjYWxsIHBlcmZvcm0sIGJlY2F1c2UgZXZlbnRzIG11c3QgYmUgYXN5bmMKSW5kZXg6
IFdlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL1Jlc291cmNlSGFuZGxlTWFuYWdlci5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL1Jlc291cmNlSGFuZGxl
TWFuYWdlci5oCShyZXZpc2lvbiAyOTA4MSkKKysrIFdlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9j
dXJsL1Jlc291cmNlSGFuZGxlTWFuYWdlci5oCSh3b3JraW5nIGNvcHkpCkBAIC00NCw4ICs0NCw4
IEBACiAgICAgdm9pZCBjYW5jZWwoUmVzb3VyY2VIYW5kbGUqKTsKICAgICB2b2lkIHNldENvb2tp
ZUphckZpbGVOYW1lKGNvbnN0IGNoYXIqIGNvb2tpZUphckZpbGVOYW1lKTsKIAotICAgIHZvaWQg
c2V0dXBQT1NUKFJlc291cmNlSGFuZGxlKik7Ci0gICAgdm9pZCBzZXR1cFBVVChSZXNvdXJjZUhh
bmRsZSopOworICAgIHZvaWQgc2V0dXBQT1NUKFJlc291cmNlSGFuZGxlKiwgc3RydWN0IGN1cmxf
c2xpc3QqKik7CisgICAgdm9pZCBzZXR1cFBVVChSZXNvdXJjZUhhbmRsZSosIHN0cnVjdCBjdXJs
X3NsaXN0KiopOwogCiBwcml2YXRlOgogICAgIFJlc291cmNlSGFuZGxlTWFuYWdlcigpOwpJbmRl
eDogV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvUmVzb3VyY2VIYW5kbGVDdXJsLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9SZXNvdXJjZUhhbmRs
ZUN1cmwuY3BwCShyZXZpc2lvbiAyOTA4MSkKKysrIFdlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9j
dXJsL1Jlc291cmNlSGFuZGxlQ3VybC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM4LDkgKzM4LDEw
IEBACiBSZXNvdXJjZUhhbmRsZUludGVybmFsOjp+UmVzb3VyY2VIYW5kbGVJbnRlcm5hbCgpCiB7
CiAgICAgZnJlZShtX3VybCk7Ci0gICAgZnJlZShtX2ZpbGVOYW1lKTsKICAgICBpZiAobV9jdXN0
b21IZWFkZXJzKQogICAgICAgICBjdXJsX3NsaXN0X2ZyZWVfYWxsKG1fY3VzdG9tSGVhZGVycyk7
CisgICAgaWYgKG1fZmlsZSkKKyAgICAgICAgZmNsb3NlKG1fZmlsZSk7CiB9CiAKIFJlc291cmNl
SGFuZGxlOjp+UmVzb3VyY2VIYW5kbGUoKQpJbmRleDogV2ViQ29yZS9DaGFuZ2VMb2cKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2ViQ29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI5MTY5KQorKysgV2ViQ29yZS9D
aGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwyMCBAQAorMjAwOC0wMS0wNCAgTHVj
YSBCcnVubyAgPGxldGhhbG1hbjg4QGdtYWlsLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBodHRwOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xNjcyOQorICAgICAgICBbY1VSTF0gQWxsb3cgbXVsdGlwbGUgZmlsZXMgZm9yIHVw
bG9hZAorCisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZUludGVybmFs
Lmg6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZUludGVybmFsOjpSZXNvdXJjZUhh
bmRsZUludGVybmFsKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2N1cmwvUmVzb3VyY2VI
YW5kbGVDdXJsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlSGFuZGxlSW50ZXJuYWw6
On5SZXNvdXJjZUhhbmRsZUludGVybmFsKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2N1
cmwvUmVzb3VyY2VIYW5kbGVNYW5hZ2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnJlYWRDYWxs
YmFjayk6IGFkZGVkCisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZU1hbmFnZXI6OnNl
dHVwUE9TVCk6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZU1hbmFnZXI6OnN0YXJ0
Sm9iKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2N1cmwvUmVzb3VyY2VIYW5kbGVNYW5h
Z2VyLmg6CisKIDIwMDgtMDEtMDQgIEFscCBUb2tlciAgPGFscEBhdG9rZXIuY29tPgogCiAgICAg
ICAgIEdUSysgYXV0b3Rvb2xzIGJ1aWxkIGZpeC4gVGVybWluYXRlIGVtcHR5IHJ1bGVzLgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>18277</attachid>
            <date>2008-01-04 14:14:02 -0800</date>
            <delta_ts>2008-01-04 15:12:53 -0800</delta_ts>
            <desc>file checks</desc>
            <filename>curlupload.patch</filename>
            <type>text/plain</type>
            <size>11511</size>
            <attacher name="Luca Bruno">lethalman88</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZUludGVybmFsLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlSW50
ZXJuYWwuaAkocmV2aXNpb24gMjkxNzUpCisrKyBXZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVz
b3VyY2VIYW5kbGVJbnRlcm5hbC5oCSh3b3JraW5nIGNvcHkpCkBAIC05Myw5ICs5MywxMSBAQAog
I2lmIFVTRShDVVJMKQogICAgICAgICAgICAgLCBtX2hhbmRsZSgwKQogICAgICAgICAgICAgLCBt
X3VybCgwKQotICAgICAgICAgICAgLCBtX2ZpbGVOYW1lKDApCiAgICAgICAgICAgICAsIG1fY3Vz
dG9tSGVhZGVycygwKQogICAgICAgICAgICAgLCBtX2NhbmNlbGxlZChmYWxzZSkKKyAgICAgICAg
ICAgICwgbV9maWxlKDApCisgICAgICAgICAgICAsIG1fZm9ybURhdGFFbGVtZW50SW5kZXgoMCkK
KyAgICAgICAgICAgICwgbV9mb3JtRGF0YUVsZW1lbnREYXRhT2Zmc2V0KDApCiAjZW5kaWYKICNp
ZiBQTEFURk9STShRVCkKICAgICAgICAgICAgICwgbV9qb2IoMCkKQEAgLTE0NiwxMSArMTQ4LDEz
IEBACiAjaWYgVVNFKENVUkwpCiAgICAgICAgIENVUkwqIG1faGFuZGxlOwogICAgICAgICBjaGFy
KiBtX3VybDsKLSAgICAgICAgY2hhciogbV9maWxlTmFtZTsKICAgICAgICAgc3RydWN0IGN1cmxf
c2xpc3QqIG1fY3VzdG9tSGVhZGVyczsgICAgICAgIAotICAgICAgICBWZWN0b3I8Y2hhcj4gbV9w
b3N0Qnl0ZXM7CiAgICAgICAgIFJlc291cmNlUmVzcG9uc2UgbV9yZXNwb25zZTsKICAgICAgICAg
Ym9vbCBtX2NhbmNlbGxlZDsKKworICAgICAgICBGSUxFKiBtX2ZpbGU7CisgICAgICAgIHNpemVf
dCBtX2Zvcm1EYXRhRWxlbWVudEluZGV4OworICAgICAgICBzaXplX3QgbV9mb3JtRGF0YUVsZW1l
bnREYXRhT2Zmc2V0OwogI2VuZGlmCiAjaWYgUExBVEZPUk0oUVQpCiAgICAgICAgIFFXZWJOZXR3
b3JrSm9iICptX2pvYjsKSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL1Jlc291
cmNlSGFuZGxlTWFuYWdlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL2N1cmwvUmVzb3VyY2VIYW5kbGVNYW5hZ2VyLmNwcAkocmV2aXNpb24gMjkxNzUpCisrKyBX
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9SZXNvdXJjZUhhbmRsZU1hbmFnZXIuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0zMSw2ICszMSw3IEBACiAjaW5jbHVkZSAiUmVzb3VyY2VIYW5kbGVN
YW5hZ2VyLmgiCiAKICNpbmNsdWRlICJDU3RyaW5nLmgiCisjaW5jbHVkZSAiRmlsZVN5c3RlbS5o
IgogI2luY2x1ZGUgIk1JTUVUeXBlUmVnaXN0cnkuaCIKICNpbmNsdWRlICJOb3RJbXBsZW1lbnRl
ZC5oIgogI2luY2x1ZGUgIlJlc291cmNlSGFuZGxlLmgiCkBAIC0xOTEsNiArMTkyLDcxIEBACiAg
ICAgcmV0dXJuIHRvdGFsU2l6ZTsKIH0KIAorLyogVGhpcyBpcyBjYWxsZWQgdG8gb2J0YWluIEhU
VFAgUE9TVCBvciBQVVQgZGF0YS4KKyAgIEl0ZXJhdGUgdHJvdWdoIEZvcm1EYXRhIGVsZW1lbnRz
IGFuZCB1cGxvYWQgZmlsZXMuCisgICBDYXJlZnVsbHkgcmVzcGVjdCB0aGUgZ2l2ZW4gYnVmZmVy
IHNpemUgYW5kIGZpbGwgdGhlIHJlc3Qgb2YgdGhlIGRhdGEgYXQgdGhlIG5leHQgY2FsbHMuCisq
Lworc2l6ZV90IHJlYWRDYWxsYmFjayh2b2lkICpwdHIsIHNpemVfdCBzaXplLCBzaXplX3Qgbm1l
bWIsIHZvaWQgKmRhdGEpCit7CisgICAgUmVzb3VyY2VIYW5kbGUqIGpvYiA9IHN0YXRpY19jYXN0
PFJlc291cmNlSGFuZGxlKj4oZGF0YSk7CisgICAgUmVzb3VyY2VIYW5kbGVJbnRlcm5hbCogZCA9
IGpvYi0+Z2V0SW50ZXJuYWwoKTsKKyAgICBpZiAoZC0+bV9jYW5jZWxsZWQpCisgICAgICAgIHJl
dHVybiAwOworCisgICAgc2l6ZV90IHNlbnQgPSAwOworICAgIHNpemVfdCB0b1NlbmQgPSBzaXpl
ICogbm1lbWI7CisgICAgaWYgKCF0b1NlbmQpCisgICAgICAgIHJldHVybiAwOworCisgICAgVmVj
dG9yPEZvcm1EYXRhRWxlbWVudD4gZWxlbWVudHMgPSBqb2ItPnJlcXVlc3QoKS5odHRwQm9keSgp
LT5lbGVtZW50cygpOworICAgIGlmIChkLT5tX2Zvcm1EYXRhRWxlbWVudEluZGV4ID49IGVsZW1l
bnRzLnNpemUoKSkKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICBGb3JtRGF0YUVsZW1lbnQgZWxl
bWVudCA9IGVsZW1lbnRzW2QtPm1fZm9ybURhdGFFbGVtZW50SW5kZXhdOworCisgICAgaWYgKGVs
ZW1lbnQubV90eXBlID09IEZvcm1EYXRhRWxlbWVudDo6ZW5jb2RlZEZpbGUpIHsKKyAgICAgICAg
aWYgKCFkLT5tX2ZpbGUpCisgICAgICAgICAgICBkLT5tX2ZpbGUgPSBmb3BlbihlbGVtZW50Lm1f
ZmlsZW5hbWUudXRmOCgpLmRhdGEoKSwgInJiIik7CisKKyAgICAgICAgaWYgKCFkLT5tX2ZpbGUp
IHsKKyAgICAgICAgICAgIC8vIEZJWE1FOiBzaG93IGFuIHVzZXIgZXJyb3I/CisjaWZuZGVmIE5E
RUJVRworICAgICAgICAgICAgcHJpbnRmKCJGYWlsZWQgd2hpbGUgdHJ5aW5nIHRvIG9wZW4gJXMg
Zm9yIHVwbG9hZFxuIiwgZWxlbWVudC5tX2ZpbGVuYW1lLnV0ZjgoKS5kYXRhKCkpOworI2VuZGlm
CisgICAgICAgICAgICBqb2ItPmNhbmNlbCgpOworICAgICAgICAgICAgcmV0dXJuIDA7CisgICAg
ICAgIH0KKworICAgICAgICBzZW50ID0gZnJlYWQocHRyLCBzaXplLCBubWVtYiwgZC0+bV9maWxl
KTsKKyAgICAgICAgaWYgKGZlb2YoZC0+bV9maWxlKSkgeworICAgICAgICAgICAgZmNsb3NlKGQt
Pm1fZmlsZSk7CisgICAgICAgICAgICBkLT5tX2ZpbGUgPSAwOworICAgICAgICAgICAgZC0+bV9m
b3JtRGF0YUVsZW1lbnRJbmRleCsrOworICAgICAgICB9CisgICAgICAgIGlmIChmZXJyb3IoZC0+
bV9maWxlKSkgeworICAgICAgICAgICAgLy8gRklYTUU6IHNob3cgYW4gdXNlciBlcnJvcj8KKyNp
Zm5kZWYgTkRFQlVHCisgICAgICAgICAgICBwcmludGYoIkZhaWxlZCB3aGlsZSB0cnlpbmcgdG8g
cmVhZCAlcyBmb3IgdXBsb2FkXG4iLCBlbGVtZW50Lm1fZmlsZW5hbWUudXRmOCgpLmRhdGEoKSk7
CisjZW5kaWYKKyAgICAgICAgICAgIGpvYi0+Y2FuY2VsKCk7CisgICAgICAgICAgICByZXR1cm4g
MDsKKyAgICAgICAgfQorICAgICAgICAgICAgCisgICAgfSBlbHNlIHsKKyAgICAgICAgc2l6ZV90
IGVsZW1lbnRTaXplID0gZWxlbWVudC5tX2RhdGEuc2l6ZSgpIC0gZC0+bV9mb3JtRGF0YUVsZW1l
bnREYXRhT2Zmc2V0OworICAgICAgICBzZW50ID0gZWxlbWVudFNpemUgPiB0b1NlbmQgPyB0b1Nl
bmQgOiBlbGVtZW50U2l6ZTsKKyAgICAgICAgbWVtY3B5KHB0ciwgZWxlbWVudC5tX2RhdGEuZGF0
YSgpK2QtPm1fZm9ybURhdGFFbGVtZW50RGF0YU9mZnNldCwgc2VudCk7CisgICAgICAgIGlmIChl
bGVtZW50U2l6ZSA+IHNlbnQpCisgICAgICAgICAgICBkLT5tX2Zvcm1EYXRhRWxlbWVudERhdGFP
ZmZzZXQgKz0gc2VudDsKKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBkLT5tX2Zvcm1EYXRh
RWxlbWVudERhdGFPZmZzZXQgPSAwOworICAgICAgICAgICAgZC0+bV9mb3JtRGF0YUVsZW1lbnRJ
bmRleCsrOworICAgICAgICB9CisgICAgfQorCisgICAgcmV0dXJuIHNlbnQ7Cit9CisKIHZvaWQg
UmVzb3VyY2VIYW5kbGVNYW5hZ2VyOjpkb3dubG9hZFRpbWVyQ2FsbGJhY2soVGltZXI8UmVzb3Vy
Y2VIYW5kbGVNYW5hZ2VyPiogdGltZXIpCiB7CiAgICAgc3RhcnRTY2hlZHVsZWRKb2JzKCk7CkBA
IC0yODgsNDkgKzM1NCw0OSBAQAogICAgIGQtPm1faGFuZGxlID0gMDsKIH0KIAotdm9pZCBSZXNv
dXJjZUhhbmRsZU1hbmFnZXI6OnNldHVwUFVUKFJlc291cmNlSGFuZGxlKikKK3ZvaWQgUmVzb3Vy
Y2VIYW5kbGVNYW5hZ2VyOjpzZXR1cFBVVChSZXNvdXJjZUhhbmRsZSosIHN0cnVjdCBjdXJsX3Ns
aXN0KiopCiB7CiAgICAgbm90SW1wbGVtZW50ZWQoKTsKIH0KIAotdm9pZCBSZXNvdXJjZUhhbmRs
ZU1hbmFnZXI6OnNldHVwUE9TVChSZXNvdXJjZUhhbmRsZSogam9iKQorLyogQ2FsY3VsYXRlIHRo
ZSBsZW5ndGggb2YgdGhlIFBPU1QuCisgICBGb3JjZSBjaHVua2VkIGRhdGEgdHJhbnNmZXIgaWYg
c2l6ZSBvZiBmaWxlcyBjYW4ndCBiZSBvYnRhaW5lZC4KKyAqLwordm9pZCBSZXNvdXJjZUhhbmRs
ZU1hbmFnZXI6OnNldHVwUE9TVChSZXNvdXJjZUhhbmRsZSogam9iLCBzdHJ1Y3QgY3VybF9zbGlz
dCoqIGhlYWRlcnMpCiB7Ci0gICAgUmVzb3VyY2VIYW5kbGVJbnRlcm5hbCogZCA9IGpvYi0+Z2V0
SW50ZXJuYWwoKTsKKyAgICAvKiBjdXJsX2Vhc3lfc2V0b3B0IHJlcXVpcmVzIGEgY3VybF9vZmZf
dCB3aGlsZSBmaWxlU2l6ZSByZXR1cm5zIGEgbG9uZyBsb25nLgorICAgICAgIFRoZSBjdXJsX29m
Zl90IGNhbiBiZSB0eXBlZGVmIG9mIG9mZl90IG9yIDY0LWJpdCBzaWduZWQgaW50LAorICAgICAg
IHRoZXJlZm9yZSBjYW4ndCBiZSBhbHdheXMgY29tcGFyZWQgdG8gYSBsb25nIGxvbmcuCisgICAg
Ki8KKyAgICBDT01QSUxFX0FTU0VSVChzaXplb2YoY3VybF9vZmZfdCkgPj0gc2l6ZW9mKGxvbmcg
bG9uZyksIGN1cmxfb2Zmc2V0X3R5cGVfaXNfbGFyZ2VyX3RoYW5fbG9uZ19sb25nKTsKKyAgICBj
dXJsX29mZl90IHNpemUgPSAwOworICAgIGJvb2wgY2h1bmtlZFRyYW5zZmVyID0gZmFsc2U7CiAK
LSAgICBqb2ItPnJlcXVlc3QoKS5odHRwQm9keSgpLT5mbGF0dGVuKGQtPm1fcG9zdEJ5dGVzKTsK
LSAgICBpZiAoZC0+bV9wb3N0Qnl0ZXMuc2l6ZSgpICE9IDApIHsKLSAgICAgICAgY3VybF9lYXN5
X3NldG9wdChkLT5tX2hhbmRsZSwgQ1VSTE9QVF9QT1NULCBUUlVFKTsKLSAgICAgICAgY3VybF9l
YXN5X3NldG9wdChkLT5tX2hhbmRsZSwgQ1VSTE9QVF9QT1NURklFTERTSVpFLCBkLT5tX3Bvc3RC
eXRlcy5zaXplKCkpOwotICAgICAgICBjdXJsX2Vhc3lfc2V0b3B0KGQtPm1faGFuZGxlLCBDVVJM
T1BUX1BPU1RGSUVMRFMsIGQtPm1fcG9zdEJ5dGVzLmRhdGEoKSk7Ci0gICAgfQotCiAgICAgVmVj
dG9yPEZvcm1EYXRhRWxlbWVudD4gZWxlbWVudHMgPSBqb2ItPnJlcXVlc3QoKS5odHRwQm9keSgp
LT5lbGVtZW50cygpOwotICAgIHNpemVfdCBzaXplID0gZWxlbWVudHMuc2l6ZSgpOwotICAgIHN0
cnVjdCBjdXJsX2h0dHBwb3N0KiBsYXN0SXRlbSA9IDA7Ci0gICAgc3RydWN0IGN1cmxfaHR0cHBv
c3QqIHBvc3QgPSAwOwotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgc2l6ZTsgaSsrKSB7Ci0g
ICAgICAgIGlmIChlbGVtZW50c1tpXS5tX3R5cGUgIT0gRm9ybURhdGFFbGVtZW50OjplbmNvZGVk
RmlsZSkKLSAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICBDU3RyaW5nIGNzdHJpbmcgPSBl
bGVtZW50c1tpXS5tX2ZpbGVuYW1lLnV0ZjgoKTsKLSAgICAgICAgQVNTRVJUKCFkLT5tX2ZpbGVO
YW1lKTsKLSAgICAgICAgZC0+bV9maWxlTmFtZSA9IHN0cmR1cChjc3RyaW5nLmRhdGEoKSk7Ci0K
LSAgICAgICAgLy8gRmlsbCBpbiB0aGUgZmlsZSB1cGxvYWQgZmllbGQKLSAgICAgICAgY3VybF9m
b3JtYWRkKCZwb3N0LCAmbGFzdEl0ZW0sIENVUkxGT1JNX0NPUFlOQU1FLCAic2VuZGZpbGUiLCBD
VVJMRk9STV9GSUxFLCBkLT5tX2ZpbGVOYW1lLCBDVVJMRk9STV9FTkQpOwotCi0gICAgICAgIC8v
IEZpbGwgaW4gdGhlIGZpbGVuYW1lIGZpZWxkCi0gICAgICAgIGN1cmxfZm9ybWFkZCgmcG9zdCwg
Jmxhc3RJdGVtLCBDVVJMRk9STV9DT1BZTkFNRSwgImZpbGVuYW1lIiwgQ1VSTEZPUk1fQ09QWUNP
TlRFTlRTLCBkLT5tX2ZpbGVOYW1lLCBDVVJMRk9STV9FTkQpOwotCi0gICAgICAgIC8vIEZJWE1F
OiBXZSBzaG91bGQgbm90IGFkZCBhICJzdWJtaXQiIGZpZWxkIGZvciBlYWNoIGZpbGUgdXBsb2Fk
ZWQuIFJldmlldyB0aGlzIGNvZGUuCi0gICAgICAgIC8vIEZpbGwgaW4gdGhlIHN1Ym1pdCBmaWVs
ZCB0b28sIGV2ZW4gaWYgdGhpcyBpcyByYXJlbHkgbmVlZGVkCi0gICAgICAgIGN1cmxfZm9ybWFk
ZCgmcG9zdCwgJmxhc3RJdGVtLCBDVVJMRk9STV9DT1BZTkFNRSwgInN1Ym1pdCIsIENVUkxGT1JN
X0NPUFlDT05URU5UUywgInNlbmQiLCBDVVJMRk9STV9FTkQpOwotCi0gICAgICAgIC8vIEZJWE1F
OiBzaG91bGQgd2Ugc3VwcG9ydCBtb3JlIHRoYW4gb25lIGZpbGU/Ci0gICAgICAgIGJyZWFrOwor
ICAgIHNpemVfdCBudW1FbGVtZW50cyA9IGVsZW1lbnRzLnNpemUoKTsKKyAgICBmb3IgKHNpemVf
dCBpID0gMDsgaSA8IG51bUVsZW1lbnRzOyBpKyspIHsKKyAgICAgICAgRm9ybURhdGFFbGVtZW50
IGVsZW1lbnQgPSBlbGVtZW50c1tpXTsKKyAgICAgICAgaWYgKGVsZW1lbnQubV90eXBlID09IEZv
cm1EYXRhRWxlbWVudDo6ZW5jb2RlZEZpbGUpIHsKKyAgICAgICAgICAgIGxvbmcgbG9uZyByZXN1
bHQ7CisgICAgICAgICAgICBpZiAoZmlsZVNpemUoZWxlbWVudC5tX2ZpbGVuYW1lLCByZXN1bHQp
KQorICAgICAgICAgICAgICAgIHNpemUgKz0gcmVzdWx0OworICAgICAgICAgICAgZWxzZSB7Cisg
ICAgICAgICAgICAgICAgLyogTGV0J3MgdHJhbnNmZXIgZGF0YSB3aXRoIGNodW5rZWQgZW5jb2Rp
bmcgc2luY2Ugd2UgZG9uJ3Qga25vdyB0aGUgc2l6ZSBvZiB0aGUgZmlsZS4KKyAgICAgICAgICAg
ICAgICAgICBBbnkgb3RoZXIgZXJyb3Igd2l0aCByZWFkaW5nL29wZW5pbmcgdGhlIGZpbGUgd2ls
bCBiZSBoYW5kbGVkIGJ5IHJlYWRDYWxsYmFjay4KKyAgICAgICAgICAgICAgICAqLworICAgICAg
ICAgICAgICAgIGNodW5rZWRUcmFuc2ZlciA9IHRydWU7CisgICAgICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgICAgICB9CisgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgc2l6ZSArPSBlbGVt
ZW50c1tpXS5tX2RhdGEuc2l6ZSgpOwogICAgIH0KIAotICAgIGlmIChwb3N0KQotICAgICAgICBj
dXJsX2Vhc3lfc2V0b3B0KGQtPm1faGFuZGxlLCBDVVJMT1BUX0hUVFBQT1NULCBwb3N0KTsKKyAg
ICBSZXNvdXJjZUhhbmRsZUludGVybmFsKiBkID0gam9iLT5nZXRJbnRlcm5hbCgpOworICAgIGN1
cmxfZWFzeV9zZXRvcHQoZC0+bV9oYW5kbGUsIENVUkxPUFRfUE9TVCwgVFJVRSk7CisgICAgaWYg
KGNodW5rZWRUcmFuc2ZlcikKKyAgICAgICAgKmhlYWRlcnMgPSBjdXJsX3NsaXN0X2FwcGVuZCgq
aGVhZGVycywgIlRyYW5zZmVyLUVuY29kaW5nOiBjaHVua2VkIik7CisgICAgZWxzZQorICAgICAg
ICBjdXJsX2Vhc3lfc2V0b3B0KGQtPm1faGFuZGxlLCBDVVJMT1BUX1BPU1RGSUVMRFNJWkVfTEFS
R0UsIHNpemUpOwogfQogCiB2b2lkIFJlc291cmNlSGFuZGxlTWFuYWdlcjo6YWRkKFJlc291cmNl
SGFuZGxlKiBqb2IpCkBAIC00NDgsNiArNTE0LDggQEAKICNlbmRpZgogICAgIGN1cmxfZWFzeV9z
ZXRvcHQoZC0+bV9oYW5kbGUsIENVUkxPUFRfUFJJVkFURSwgam9iKTsKICAgICBjdXJsX2Vhc3lf
c2V0b3B0KGQtPm1faGFuZGxlLCBDVVJMT1BUX0VSUk9SQlVGRkVSLCBtX2N1cmxFcnJvckJ1ZmZl
cik7CisgICAgY3VybF9lYXN5X3NldG9wdChkLT5tX2hhbmRsZSwgQ1VSTE9QVF9SRUFERlVOQ1RJ
T04sIHJlYWRDYWxsYmFjayk7CisgICAgY3VybF9lYXN5X3NldG9wdChkLT5tX2hhbmRsZSwgQ1VS
TE9QVF9SRUFEREFUQSwgam9iKTsKICAgICBjdXJsX2Vhc3lfc2V0b3B0KGQtPm1faGFuZGxlLCBD
VVJMT1BUX1dSSVRFRlVOQ1RJT04sIHdyaXRlQ2FsbGJhY2spOwogICAgIGN1cmxfZWFzeV9zZXRv
cHQoZC0+bV9oYW5kbGUsIENVUkxPUFRfV1JJVEVEQVRBLCBqb2IpOwogICAgIGN1cmxfZWFzeV9z
ZXRvcHQoZC0+bV9oYW5kbGUsIENVUkxPUFRfSEVBREVSRlVOQ1RJT04sIGhlYWRlckNhbGxiYWNr
KTsKQEAgLTQ3MSw4ICs1MzksOCBAQAogICAgICAgICBjdXJsX2Vhc3lfc2V0b3B0KGQtPm1faGFu
ZGxlLCBDVVJMT1BUX0NPT0tJRUpBUiwgbV9jb29raWVKYXJGaWxlTmFtZSk7CiAgICAgfQogCisg
ICAgc3RydWN0IGN1cmxfc2xpc3QqIGhlYWRlcnMgPSAwOwogICAgIGlmIChqb2ItPnJlcXVlc3Qo
KS5odHRwSGVhZGVyRmllbGRzKCkuc2l6ZSgpID4gMCkgewotICAgICAgICBzdHJ1Y3QgY3VybF9z
bGlzdCogaGVhZGVycyA9IDA7CiAgICAgICAgIEhUVFBIZWFkZXJNYXAgY3VzdG9tSGVhZGVycyA9
IGpvYi0+cmVxdWVzdCgpLmh0dHBIZWFkZXJGaWVsZHMoKTsKICAgICAgICAgSFRUUEhlYWRlck1h
cDo6Y29uc3RfaXRlcmF0b3IgZW5kID0gY3VzdG9tSGVhZGVycy5lbmQoKTsKICAgICAgICAgZm9y
IChIVFRQSGVhZGVyTWFwOjpjb25zdF9pdGVyYXRvciBpdCA9IGN1c3RvbUhlYWRlcnMuYmVnaW4o
KTsgaXQgIT0gZW5kOyArK2l0KSB7CkBAIC00ODQsMTkgKzU1MiwyMiBAQAogICAgICAgICAgICAg
Q1N0cmluZyBoZWFkZXJMYXRpbjEgPSBoZWFkZXJTdHJpbmcubGF0aW4xKCk7CiAgICAgICAgICAg
ICBoZWFkZXJzID0gY3VybF9zbGlzdF9hcHBlbmQoaGVhZGVycywgaGVhZGVyTGF0aW4xLmRhdGEo
KSk7CiAgICAgICAgIH0KLSAgICAgICAgY3VybF9lYXN5X3NldG9wdChkLT5tX2hhbmRsZSwgQ1VS
TE9QVF9IVFRQSEVBREVSLCBoZWFkZXJzKTsKLSAgICAgICAgZC0+bV9jdXN0b21IZWFkZXJzID0g
aGVhZGVyczsKICAgICB9CiAKICAgICBpZiAoIkdFVCIgPT0gam9iLT5yZXF1ZXN0KCkuaHR0cE1l
dGhvZCgpKQogICAgICAgICBjdXJsX2Vhc3lfc2V0b3B0KGQtPm1faGFuZGxlLCBDVVJMT1BUX0hU
VFBHRVQsIFRSVUUpOwogICAgIGVsc2UgaWYgKCJQT1NUIiA9PSBqb2ItPnJlcXVlc3QoKS5odHRw
TWV0aG9kKCkpCi0gICAgICAgIHNldHVwUE9TVChqb2IpOworICAgICAgICBzZXR1cFBPU1Qoam9i
LCAmaGVhZGVycyk7CiAgICAgZWxzZSBpZiAoIlBVVCIgPT0gam9iLT5yZXF1ZXN0KCkuaHR0cE1l
dGhvZCgpKQotICAgICAgICBzZXR1cFBVVChqb2IpOworICAgICAgICBzZXR1cFBVVChqb2IsICZo
ZWFkZXJzKTsKICAgICBlbHNlIGlmICgiSEVBRCIgPT0gam9iLT5yZXF1ZXN0KCkuaHR0cE1ldGhv
ZCgpKQogICAgICAgICBjdXJsX2Vhc3lfc2V0b3B0KGQtPm1faGFuZGxlLCBDVVJMT1BUX05PQk9E
WSwgVFJVRSk7CiAKKyAgICBpZiAoaGVhZGVycykgeworICAgICAgICBjdXJsX2Vhc3lfc2V0b3B0
KGQtPm1faGFuZGxlLCBDVVJMT1BUX0hUVFBIRUFERVIsIGhlYWRlcnMpOworICAgICAgICBkLT5t
X2N1c3RvbUhlYWRlcnMgPSBoZWFkZXJzOworICAgIH0KKwogICAgIG1fcnVubmluZ0pvYnMrKzsK
ICAgICBDVVJMTWNvZGUgcmV0ID0gY3VybF9tdWx0aV9hZGRfaGFuZGxlKG1fY3VybE11bHRpSGFu
ZGxlLCBkLT5tX2hhbmRsZSk7CiAgICAgLy8gZG9uJ3QgY2FsbCBwZXJmb3JtLCBiZWNhdXNlIGV2
ZW50cyBtdXN0IGJlIGFzeW5jCkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9S
ZXNvdXJjZUhhbmRsZU1hbmFnZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvY3VybC9SZXNvdXJjZUhhbmRsZU1hbmFnZXIuaAkocmV2aXNpb24gMjkxNzUpCisrKyBX
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9SZXNvdXJjZUhhbmRsZU1hbmFnZXIuaAkod29y
a2luZyBjb3B5KQpAQCAtNDQsOCArNDQsOCBAQAogICAgIHZvaWQgY2FuY2VsKFJlc291cmNlSGFu
ZGxlKik7CiAgICAgdm9pZCBzZXRDb29raWVKYXJGaWxlTmFtZShjb25zdCBjaGFyKiBjb29raWVK
YXJGaWxlTmFtZSk7CiAKLSAgICB2b2lkIHNldHVwUE9TVChSZXNvdXJjZUhhbmRsZSopOwotICAg
IHZvaWQgc2V0dXBQVVQoUmVzb3VyY2VIYW5kbGUqKTsKKyAgICB2b2lkIHNldHVwUE9TVChSZXNv
dXJjZUhhbmRsZSosIHN0cnVjdCBjdXJsX3NsaXN0KiopOworICAgIHZvaWQgc2V0dXBQVVQoUmVz
b3VyY2VIYW5kbGUqLCBzdHJ1Y3QgY3VybF9zbGlzdCoqKTsKIAogcHJpdmF0ZToKICAgICBSZXNv
dXJjZUhhbmRsZU1hbmFnZXIoKTsKSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJs
L1Jlc291cmNlSGFuZGxlQ3VybC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL2N1cmwvUmVzb3VyY2VIYW5kbGVDdXJsLmNwcAkocmV2aXNpb24gMjkxNzUpCisrKyBX
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9SZXNvdXJjZUhhbmRsZUN1cmwuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zOCw5ICszOCwxMCBAQAogUmVzb3VyY2VIYW5kbGVJbnRlcm5hbDo6flJl
c291cmNlSGFuZGxlSW50ZXJuYWwoKQogewogICAgIGZyZWUobV91cmwpOwotICAgIGZyZWUobV9m
aWxlTmFtZSk7CiAgICAgaWYgKG1fY3VzdG9tSGVhZGVycykKICAgICAgICAgY3VybF9zbGlzdF9m
cmVlX2FsbChtX2N1c3RvbUhlYWRlcnMpOworICAgIGlmIChtX2ZpbGUpCisgICAgICAgIGZjbG9z
ZShtX2ZpbGUpOwogfQogCiBSZXNvdXJjZUhhbmRsZTo6flJlc291cmNlSGFuZGxlKCkKSW5kZXg6
IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9nCShyZXZp
c2lvbiAyOTE3NSkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMg
KzEsMjAgQEAKKzIwMDgtMDEtMDQgIEx1Y2EgQnJ1bm8gIDxsZXRoYWxtYW44OEBnbWFpbC5jb20+
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgaHR0cDov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY3MjkKKyAgICAgICAgW2NVUkxdIEFs
bG93IG11bHRpcGxlIGZpbGVzIGZvciB1cGxvYWQKKworICAgICAgICAqIHBsYXRmb3JtL25ldHdv
cmsvUmVzb3VyY2VIYW5kbGVJbnRlcm5hbC5oOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VI
YW5kbGVJbnRlcm5hbDo6UmVzb3VyY2VIYW5kbGVJbnRlcm5hbCk6CisgICAgICAgICogcGxhdGZv
cm0vbmV0d29yay9jdXJsL1Jlc291cmNlSGFuZGxlQ3VybC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpSZXNvdXJjZUhhbmRsZUludGVybmFsOjp+UmVzb3VyY2VIYW5kbGVJbnRlcm5hbCk6CisgICAg
ICAgICogcGxhdGZvcm0vbmV0d29yay9jdXJsL1Jlc291cmNlSGFuZGxlTWFuYWdlci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpyZWFkQ2FsbGJhY2spOiBhZGRlZAorICAgICAgICAoV2ViQ29yZTo6
UmVzb3VyY2VIYW5kbGVNYW5hZ2VyOjpzZXR1cFBPU1QpOgorICAgICAgICAoV2ViQ29yZTo6UmVz
b3VyY2VIYW5kbGVNYW5hZ2VyOjpzdGFydEpvYik6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29y
ay9jdXJsL1Jlc291cmNlSGFuZGxlTWFuYWdlci5oOgorCiAyMDA4LTAxLTA0ICBBbnR0aSBLb2l2
aXN0byAgPGFudHRpQGFwcGxlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBEYXJpbi4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>18279</attachid>
            <date>2008-01-04 15:12:53 -0800</date>
            <delta_ts>2008-01-07 06:18:02 -0800</delta_ts>
            <desc>take care of the post size</desc>
            <filename>curlupload.patch</filename>
            <type>text/plain</type>
            <size>11449</size>
            <attacher name="Luca Bruno">lethalman88</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZUludGVybmFsLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlSW50
ZXJuYWwuaAkocmV2aXNpb24gMjkxNzUpCisrKyBXZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVz
b3VyY2VIYW5kbGVJbnRlcm5hbC5oCSh3b3JraW5nIGNvcHkpCkBAIC05Myw5ICs5MywxMSBAQAog
I2lmIFVTRShDVVJMKQogICAgICAgICAgICAgLCBtX2hhbmRsZSgwKQogICAgICAgICAgICAgLCBt
X3VybCgwKQotICAgICAgICAgICAgLCBtX2ZpbGVOYW1lKDApCiAgICAgICAgICAgICAsIG1fY3Vz
dG9tSGVhZGVycygwKQogICAgICAgICAgICAgLCBtX2NhbmNlbGxlZChmYWxzZSkKKyAgICAgICAg
ICAgICwgbV9maWxlKDApCisgICAgICAgICAgICAsIG1fZm9ybURhdGFFbGVtZW50SW5kZXgoMCkK
KyAgICAgICAgICAgICwgbV9mb3JtRGF0YUVsZW1lbnREYXRhT2Zmc2V0KDApCiAjZW5kaWYKICNp
ZiBQTEFURk9STShRVCkKICAgICAgICAgICAgICwgbV9qb2IoMCkKQEAgLTE0NiwxMSArMTQ4LDEz
IEBACiAjaWYgVVNFKENVUkwpCiAgICAgICAgIENVUkwqIG1faGFuZGxlOwogICAgICAgICBjaGFy
KiBtX3VybDsKLSAgICAgICAgY2hhciogbV9maWxlTmFtZTsKICAgICAgICAgc3RydWN0IGN1cmxf
c2xpc3QqIG1fY3VzdG9tSGVhZGVyczsgICAgICAgIAotICAgICAgICBWZWN0b3I8Y2hhcj4gbV9w
b3N0Qnl0ZXM7CiAgICAgICAgIFJlc291cmNlUmVzcG9uc2UgbV9yZXNwb25zZTsKICAgICAgICAg
Ym9vbCBtX2NhbmNlbGxlZDsKKworICAgICAgICBGSUxFKiBtX2ZpbGU7CisgICAgICAgIHNpemVf
dCBtX2Zvcm1EYXRhRWxlbWVudEluZGV4OworICAgICAgICBzaXplX3QgbV9mb3JtRGF0YUVsZW1l
bnREYXRhT2Zmc2V0OwogI2VuZGlmCiAjaWYgUExBVEZPUk0oUVQpCiAgICAgICAgIFFXZWJOZXR3
b3JrSm9iICptX2pvYjsKSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL1Jlc291
cmNlSGFuZGxlTWFuYWdlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL2N1cmwvUmVzb3VyY2VIYW5kbGVNYW5hZ2VyLmNwcAkocmV2aXNpb24gMjkxNzUpCisrKyBX
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9SZXNvdXJjZUhhbmRsZU1hbmFnZXIuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0zMSw2ICszMSw3IEBACiAjaW5jbHVkZSAiUmVzb3VyY2VIYW5kbGVN
YW5hZ2VyLmgiCiAKICNpbmNsdWRlICJDU3RyaW5nLmgiCisjaW5jbHVkZSAiRmlsZVN5c3RlbS5o
IgogI2luY2x1ZGUgIk1JTUVUeXBlUmVnaXN0cnkuaCIKICNpbmNsdWRlICJOb3RJbXBsZW1lbnRl
ZC5oIgogI2luY2x1ZGUgIlJlc291cmNlSGFuZGxlLmgiCkBAIC0xOTEsNiArMTkyLDcwIEBACiAg
ICAgcmV0dXJuIHRvdGFsU2l6ZTsKIH0KIAorLyogVGhpcyBpcyBjYWxsZWQgdG8gb2J0YWluIEhU
VFAgUE9TVCBvciBQVVQgZGF0YS4KKyAgIEl0ZXJhdGUgdHJvdWdoIEZvcm1EYXRhIGVsZW1lbnRz
IGFuZCB1cGxvYWQgZmlsZXMuCisgICBDYXJlZnVsbHkgcmVzcGVjdCB0aGUgZ2l2ZW4gYnVmZmVy
IHNpemUgYW5kIGZpbGwgdGhlIHJlc3Qgb2YgdGhlIGRhdGEgYXQgdGhlIG5leHQgY2FsbHMuCisq
Lworc2l6ZV90IHJlYWRDYWxsYmFjayh2b2lkICpwdHIsIHNpemVfdCBzaXplLCBzaXplX3Qgbm1l
bWIsIHZvaWQgKmRhdGEpCit7CisgICAgUmVzb3VyY2VIYW5kbGUqIGpvYiA9IHN0YXRpY19jYXN0
PFJlc291cmNlSGFuZGxlKj4oZGF0YSk7CisgICAgUmVzb3VyY2VIYW5kbGVJbnRlcm5hbCogZCA9
IGpvYi0+Z2V0SW50ZXJuYWwoKTsKKyAgICBpZiAoZC0+bV9jYW5jZWxsZWQpCisgICAgICAgIHJl
dHVybiAwOworCisgICAgc2l6ZV90IHNlbnQgPSAwOworICAgIHNpemVfdCB0b1NlbmQgPSBzaXpl
ICogbm1lbWI7CisgICAgaWYgKCF0b1NlbmQpCisgICAgICAgIHJldHVybiAwOworCisgICAgVmVj
dG9yPEZvcm1EYXRhRWxlbWVudD4gZWxlbWVudHMgPSBqb2ItPnJlcXVlc3QoKS5odHRwQm9keSgp
LT5lbGVtZW50cygpOworICAgIGlmIChkLT5tX2Zvcm1EYXRhRWxlbWVudEluZGV4ID49IGVsZW1l
bnRzLnNpemUoKSkKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICBGb3JtRGF0YUVsZW1lbnQgZWxl
bWVudCA9IGVsZW1lbnRzW2QtPm1fZm9ybURhdGFFbGVtZW50SW5kZXhdOworCisgICAgaWYgKGVs
ZW1lbnQubV90eXBlID09IEZvcm1EYXRhRWxlbWVudDo6ZW5jb2RlZEZpbGUpIHsKKyAgICAgICAg
aWYgKCFkLT5tX2ZpbGUpCisgICAgICAgICAgICBkLT5tX2ZpbGUgPSBmb3BlbihlbGVtZW50Lm1f
ZmlsZW5hbWUudXRmOCgpLmRhdGEoKSwgInJiIik7CisKKyAgICAgICAgaWYgKCFkLT5tX2ZpbGUp
IHsKKyAgICAgICAgICAgIC8vIEZJWE1FOiBzaG93IGFuIHVzZXIgZXJyb3I/CisjaWZuZGVmIE5E
RUJVRworICAgICAgICAgICAgcHJpbnRmKCJGYWlsZWQgd2hpbGUgdHJ5aW5nIHRvIG9wZW4gJXMg
Zm9yIHVwbG9hZFxuIiwgZWxlbWVudC5tX2ZpbGVuYW1lLnV0ZjgoKS5kYXRhKCkpOworI2VuZGlm
CisgICAgICAgICAgICBqb2ItPmNhbmNlbCgpOworICAgICAgICAgICAgcmV0dXJuIDA7CisgICAg
ICAgIH0KKworICAgICAgICBzZW50ID0gZnJlYWQocHRyLCBzaXplLCBubWVtYiwgZC0+bV9maWxl
KTsKKyAgICAgICAgaWYgKCFzaXplICYmIGZlcnJvcihkLT5tX2ZpbGUpKSB7CisgICAgICAgICAg
ICAvLyBGSVhNRTogc2hvdyBhbiB1c2VyIGVycm9yPworI2lmbmRlZiBOREVCVUcKKyAgICAgICAg
ICAgIHByaW50ZigiRmFpbGVkIHdoaWxlIHRyeWluZyB0byByZWFkICVzIGZvciB1cGxvYWRcbiIs
IGVsZW1lbnQubV9maWxlbmFtZS51dGY4KCkuZGF0YSgpKTsKKyNlbmRpZgorICAgICAgICAgICAg
am9iLT5jYW5jZWwoKTsKKyAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICB9CisgICAgICAg
IGlmIChmZW9mKGQtPm1fZmlsZSkpIHsKKyAgICAgICAgICAgIGZjbG9zZShkLT5tX2ZpbGUpOwor
ICAgICAgICAgICAgZC0+bV9maWxlID0gMDsKKyAgICAgICAgICAgIGQtPm1fZm9ybURhdGFFbGVt
ZW50SW5kZXgrKzsKKyAgICAgICAgfSAgICAgICAgICAgIAorICAgIH0gZWxzZSB7CisgICAgICAg
IHNpemVfdCBlbGVtZW50U2l6ZSA9IGVsZW1lbnQubV9kYXRhLnNpemUoKSAtIGQtPm1fZm9ybURh
dGFFbGVtZW50RGF0YU9mZnNldDsKKyAgICAgICAgc2VudCA9IGVsZW1lbnRTaXplID4gdG9TZW5k
ID8gdG9TZW5kIDogZWxlbWVudFNpemU7CisgICAgICAgIG1lbWNweShwdHIsIGVsZW1lbnQubV9k
YXRhLmRhdGEoKStkLT5tX2Zvcm1EYXRhRWxlbWVudERhdGFPZmZzZXQsIHNlbnQpOworICAgICAg
ICBpZiAoZWxlbWVudFNpemUgPiBzZW50KQorICAgICAgICAgICAgZC0+bV9mb3JtRGF0YUVsZW1l
bnREYXRhT2Zmc2V0ICs9IHNlbnQ7CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgZC0+bV9m
b3JtRGF0YUVsZW1lbnREYXRhT2Zmc2V0ID0gMDsKKyAgICAgICAgICAgIGQtPm1fZm9ybURhdGFF
bGVtZW50SW5kZXgrKzsKKyAgICAgICAgfQorICAgIH0KKworICAgIHJldHVybiBzZW50OworfQor
CiB2b2lkIFJlc291cmNlSGFuZGxlTWFuYWdlcjo6ZG93bmxvYWRUaW1lckNhbGxiYWNrKFRpbWVy
PFJlc291cmNlSGFuZGxlTWFuYWdlcj4qIHRpbWVyKQogewogICAgIHN0YXJ0U2NoZWR1bGVkSm9i
cygpOwpAQCAtMjg4LDQ5ICszNTMsNDggQEAKICAgICBkLT5tX2hhbmRsZSA9IDA7CiB9CiAKLXZv
aWQgUmVzb3VyY2VIYW5kbGVNYW5hZ2VyOjpzZXR1cFBVVChSZXNvdXJjZUhhbmRsZSopCit2b2lk
IFJlc291cmNlSGFuZGxlTWFuYWdlcjo6c2V0dXBQVVQoUmVzb3VyY2VIYW5kbGUqLCBzdHJ1Y3Qg
Y3VybF9zbGlzdCoqKQogewogICAgIG5vdEltcGxlbWVudGVkKCk7CiB9CiAKLXZvaWQgUmVzb3Vy
Y2VIYW5kbGVNYW5hZ2VyOjpzZXR1cFBPU1QoUmVzb3VyY2VIYW5kbGUqIGpvYikKKy8qIENhbGN1
bGF0ZSB0aGUgbGVuZ3RoIG9mIHRoZSBQT1NULgorICAgRm9yY2UgY2h1bmtlZCBkYXRhIHRyYW5z
ZmVyIGlmIHNpemUgb2YgZmlsZXMgY2FuJ3QgYmUgb2J0YWluZWQuCisgKi8KK3ZvaWQgUmVzb3Vy
Y2VIYW5kbGVNYW5hZ2VyOjpzZXR1cFBPU1QoUmVzb3VyY2VIYW5kbGUqIGpvYiwgc3RydWN0IGN1
cmxfc2xpc3QqKiBoZWFkZXJzKQogewotICAgIFJlc291cmNlSGFuZGxlSW50ZXJuYWwqIGQgPSBq
b2ItPmdldEludGVybmFsKCk7CisgICAgc3RhdGljIGNvbnN0IGxvbmcgbG9uZyBtYXhDdXJsT2Zm
VCA9ICgxTEwgPDwgKHNpemVvZihjdXJsX29mZl90KSo4IC0gMSkpIC0gMTsKKyAgICBjdXJsX29m
Zl90IHNpemUgPSAwOworICAgIGJvb2wgY2h1bmtlZFRyYW5zZmVyID0gZmFsc2U7CiAKLSAgICBq
b2ItPnJlcXVlc3QoKS5odHRwQm9keSgpLT5mbGF0dGVuKGQtPm1fcG9zdEJ5dGVzKTsKLSAgICBp
ZiAoZC0+bV9wb3N0Qnl0ZXMuc2l6ZSgpICE9IDApIHsKLSAgICAgICAgY3VybF9lYXN5X3NldG9w
dChkLT5tX2hhbmRsZSwgQ1VSTE9QVF9QT1NULCBUUlVFKTsKLSAgICAgICAgY3VybF9lYXN5X3Nl
dG9wdChkLT5tX2hhbmRsZSwgQ1VSTE9QVF9QT1NURklFTERTSVpFLCBkLT5tX3Bvc3RCeXRlcy5z
aXplKCkpOwotICAgICAgICBjdXJsX2Vhc3lfc2V0b3B0KGQtPm1faGFuZGxlLCBDVVJMT1BUX1BP
U1RGSUVMRFMsIGQtPm1fcG9zdEJ5dGVzLmRhdGEoKSk7CisgICAgVmVjdG9yPEZvcm1EYXRhRWxl
bWVudD4gZWxlbWVudHMgPSBqb2ItPnJlcXVlc3QoKS5odHRwQm9keSgpLT5lbGVtZW50cygpOwor
ICAgIHNpemVfdCBudW1FbGVtZW50cyA9IGVsZW1lbnRzLnNpemUoKTsKKyAgICBmb3IgKHNpemVf
dCBpID0gMDsgaSA8IG51bUVsZW1lbnRzOyBpKyspIHsKKyAgICAgICAgRm9ybURhdGFFbGVtZW50
IGVsZW1lbnQgPSBlbGVtZW50c1tpXTsKKyAgICAgICAgaWYgKGVsZW1lbnQubV90eXBlID09IEZv
cm1EYXRhRWxlbWVudDo6ZW5jb2RlZEZpbGUpIHsKKyAgICAgICAgICAgIGxvbmcgbG9uZyBmaWxl
U2l6ZVJlc3VsdDsKKyAgICAgICAgICAgIGlmIChmaWxlU2l6ZShlbGVtZW50Lm1fZmlsZW5hbWUs
IGZpbGVTaXplUmVzdWx0KSkgeworICAgICAgICAgICAgICAgIGlmIChmaWxlU2l6ZVJlc3VsdCA+
IG1heEN1cmxPZmZUKSB7CisgICAgICAgICAgICAgICAgICAgIC8vIEZpbGUgc2l6ZSBpcyB0b28g
YmlnIGZvciBzcGVjaWZ5aW5nIGl0IHRvIGNVUkwKKyAgICAgICAgICAgICAgICAgICAgY2h1bmtl
ZFRyYW5zZmVyID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAg
ICAgICAgfQorICAgICAgICAgICAgICAgIHNpemUgKz0gZmlsZVNpemVSZXN1bHQ7CisgICAgICAg
ICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGNodW5rZWRUcmFuc2ZlciA9IHRydWU7Cisg
ICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgIH0gZWxzZQorICAg
ICAgICAgICAgc2l6ZSArPSBlbGVtZW50c1tpXS5tX2RhdGEuc2l6ZSgpOwogICAgIH0KIAotICAg
IFZlY3RvcjxGb3JtRGF0YUVsZW1lbnQ+IGVsZW1lbnRzID0gam9iLT5yZXF1ZXN0KCkuaHR0cEJv
ZHkoKS0+ZWxlbWVudHMoKTsKLSAgICBzaXplX3Qgc2l6ZSA9IGVsZW1lbnRzLnNpemUoKTsKLSAg
ICBzdHJ1Y3QgY3VybF9odHRwcG9zdCogbGFzdEl0ZW0gPSAwOwotICAgIHN0cnVjdCBjdXJsX2h0
dHBwb3N0KiBwb3N0ID0gMDsKLSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHNpemU7IGkrKykg
ewotICAgICAgICBpZiAoZWxlbWVudHNbaV0ubV90eXBlICE9IEZvcm1EYXRhRWxlbWVudDo6ZW5j
b2RlZEZpbGUpCi0gICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgQ1N0cmluZyBjc3RyaW5n
ID0gZWxlbWVudHNbaV0ubV9maWxlbmFtZS51dGY4KCk7Ci0gICAgICAgIEFTU0VSVCghZC0+bV9m
aWxlTmFtZSk7Ci0gICAgICAgIGQtPm1fZmlsZU5hbWUgPSBzdHJkdXAoY3N0cmluZy5kYXRhKCkp
OworICAgIFJlc291cmNlSGFuZGxlSW50ZXJuYWwqIGQgPSBqb2ItPmdldEludGVybmFsKCk7Cisg
ICAgY3VybF9lYXN5X3NldG9wdChkLT5tX2hhbmRsZSwgQ1VSTE9QVF9QT1NULCBUUlVFKTsKIAot
ICAgICAgICAvLyBGaWxsIGluIHRoZSBmaWxlIHVwbG9hZCBmaWVsZAotICAgICAgICBjdXJsX2Zv
cm1hZGQoJnBvc3QsICZsYXN0SXRlbSwgQ1VSTEZPUk1fQ09QWU5BTUUsICJzZW5kZmlsZSIsIENV
UkxGT1JNX0ZJTEUsIGQtPm1fZmlsZU5hbWUsIENVUkxGT1JNX0VORCk7Ci0KLSAgICAgICAgLy8g
RmlsbCBpbiB0aGUgZmlsZW5hbWUgZmllbGQKLSAgICAgICAgY3VybF9mb3JtYWRkKCZwb3N0LCAm
bGFzdEl0ZW0sIENVUkxGT1JNX0NPUFlOQU1FLCAiZmlsZW5hbWUiLCBDVVJMRk9STV9DT1BZQ09O
VEVOVFMsIGQtPm1fZmlsZU5hbWUsIENVUkxGT1JNX0VORCk7Ci0KLSAgICAgICAgLy8gRklYTUU6
IFdlIHNob3VsZCBub3QgYWRkIGEgInN1Ym1pdCIgZmllbGQgZm9yIGVhY2ggZmlsZSB1cGxvYWRl
ZC4gUmV2aWV3IHRoaXMgY29kZS4KLSAgICAgICAgLy8gRmlsbCBpbiB0aGUgc3VibWl0IGZpZWxk
IHRvbywgZXZlbiBpZiB0aGlzIGlzIHJhcmVseSBuZWVkZWQKLSAgICAgICAgY3VybF9mb3JtYWRk
KCZwb3N0LCAmbGFzdEl0ZW0sIENVUkxGT1JNX0NPUFlOQU1FLCAic3VibWl0IiwgQ1VSTEZPUk1f
Q09QWUNPTlRFTlRTLCAic2VuZCIsIENVUkxGT1JNX0VORCk7Ci0KLSAgICAgICAgLy8gRklYTUU6
IHNob3VsZCB3ZSBzdXBwb3J0IG1vcmUgdGhhbiBvbmUgZmlsZT8KLSAgICAgICAgYnJlYWs7Ci0g
ICAgfQotCi0gICAgaWYgKHBvc3QpCi0gICAgICAgIGN1cmxfZWFzeV9zZXRvcHQoZC0+bV9oYW5k
bGUsIENVUkxPUFRfSFRUUFBPU1QsIHBvc3QpOworICAgIGlmIChjaHVua2VkVHJhbnNmZXIpIC8v
IGNVUkwgZ3Vlc3NlcyB3ZSB3YW50IGNodW5rZWQgZW5jb2RpbmcgaWYgd2Ugc3BlY2lmeSB0aGUg
aGVhZGVyIGJlbG93CisgICAgICAgICpoZWFkZXJzID0gY3VybF9zbGlzdF9hcHBlbmQoKmhlYWRl
cnMsICJUcmFuc2Zlci1FbmNvZGluZzogY2h1bmtlZCIpOworICAgIGVsc2UKKyAgICAgICAgY3Vy
bF9lYXN5X3NldG9wdChkLT5tX2hhbmRsZSwgQ1VSTE9QVF9QT1NURklFTERTSVpFX0xBUkdFLCBz
aXplKTsKIH0KIAogdm9pZCBSZXNvdXJjZUhhbmRsZU1hbmFnZXI6OmFkZChSZXNvdXJjZUhhbmRs
ZSogam9iKQpAQCAtNDQ4LDYgKzUxMiw4IEBACiAjZW5kaWYKICAgICBjdXJsX2Vhc3lfc2V0b3B0
KGQtPm1faGFuZGxlLCBDVVJMT1BUX1BSSVZBVEUsIGpvYik7CiAgICAgY3VybF9lYXN5X3NldG9w
dChkLT5tX2hhbmRsZSwgQ1VSTE9QVF9FUlJPUkJVRkZFUiwgbV9jdXJsRXJyb3JCdWZmZXIpOwor
ICAgIGN1cmxfZWFzeV9zZXRvcHQoZC0+bV9oYW5kbGUsIENVUkxPUFRfUkVBREZVTkNUSU9OLCBy
ZWFkQ2FsbGJhY2spOworICAgIGN1cmxfZWFzeV9zZXRvcHQoZC0+bV9oYW5kbGUsIENVUkxPUFRf
UkVBRERBVEEsIGpvYik7CiAgICAgY3VybF9lYXN5X3NldG9wdChkLT5tX2hhbmRsZSwgQ1VSTE9Q
VF9XUklURUZVTkNUSU9OLCB3cml0ZUNhbGxiYWNrKTsKICAgICBjdXJsX2Vhc3lfc2V0b3B0KGQt
Pm1faGFuZGxlLCBDVVJMT1BUX1dSSVRFREFUQSwgam9iKTsKICAgICBjdXJsX2Vhc3lfc2V0b3B0
KGQtPm1faGFuZGxlLCBDVVJMT1BUX0hFQURFUkZVTkNUSU9OLCBoZWFkZXJDYWxsYmFjayk7CkBA
IC00NzEsOCArNTM3LDggQEAKICAgICAgICAgY3VybF9lYXN5X3NldG9wdChkLT5tX2hhbmRsZSwg
Q1VSTE9QVF9DT09LSUVKQVIsIG1fY29va2llSmFyRmlsZU5hbWUpOwogICAgIH0KIAorICAgIHN0
cnVjdCBjdXJsX3NsaXN0KiBoZWFkZXJzID0gMDsKICAgICBpZiAoam9iLT5yZXF1ZXN0KCkuaHR0
cEhlYWRlckZpZWxkcygpLnNpemUoKSA+IDApIHsKLSAgICAgICAgc3RydWN0IGN1cmxfc2xpc3Qq
IGhlYWRlcnMgPSAwOwogICAgICAgICBIVFRQSGVhZGVyTWFwIGN1c3RvbUhlYWRlcnMgPSBqb2It
PnJlcXVlc3QoKS5odHRwSGVhZGVyRmllbGRzKCk7CiAgICAgICAgIEhUVFBIZWFkZXJNYXA6OmNv
bnN0X2l0ZXJhdG9yIGVuZCA9IGN1c3RvbUhlYWRlcnMuZW5kKCk7CiAgICAgICAgIGZvciAoSFRU
UEhlYWRlck1hcDo6Y29uc3RfaXRlcmF0b3IgaXQgPSBjdXN0b21IZWFkZXJzLmJlZ2luKCk7IGl0
ICE9IGVuZDsgKytpdCkgewpAQCAtNDg0LDE5ICs1NTAsMjIgQEAKICAgICAgICAgICAgIENTdHJp
bmcgaGVhZGVyTGF0aW4xID0gaGVhZGVyU3RyaW5nLmxhdGluMSgpOwogICAgICAgICAgICAgaGVh
ZGVycyA9IGN1cmxfc2xpc3RfYXBwZW5kKGhlYWRlcnMsIGhlYWRlckxhdGluMS5kYXRhKCkpOwog
ICAgICAgICB9Ci0gICAgICAgIGN1cmxfZWFzeV9zZXRvcHQoZC0+bV9oYW5kbGUsIENVUkxPUFRf
SFRUUEhFQURFUiwgaGVhZGVycyk7Ci0gICAgICAgIGQtPm1fY3VzdG9tSGVhZGVycyA9IGhlYWRl
cnM7CiAgICAgfQogCiAgICAgaWYgKCJHRVQiID09IGpvYi0+cmVxdWVzdCgpLmh0dHBNZXRob2Qo
KSkKICAgICAgICAgY3VybF9lYXN5X3NldG9wdChkLT5tX2hhbmRsZSwgQ1VSTE9QVF9IVFRQR0VU
LCBUUlVFKTsKICAgICBlbHNlIGlmICgiUE9TVCIgPT0gam9iLT5yZXF1ZXN0KCkuaHR0cE1ldGhv
ZCgpKQotICAgICAgICBzZXR1cFBPU1Qoam9iKTsKKyAgICAgICAgc2V0dXBQT1NUKGpvYiwgJmhl
YWRlcnMpOwogICAgIGVsc2UgaWYgKCJQVVQiID09IGpvYi0+cmVxdWVzdCgpLmh0dHBNZXRob2Qo
KSkKLSAgICAgICAgc2V0dXBQVVQoam9iKTsKKyAgICAgICAgc2V0dXBQVVQoam9iLCAmaGVhZGVy
cyk7CiAgICAgZWxzZSBpZiAoIkhFQUQiID09IGpvYi0+cmVxdWVzdCgpLmh0dHBNZXRob2QoKSkK
ICAgICAgICAgY3VybF9lYXN5X3NldG9wdChkLT5tX2hhbmRsZSwgQ1VSTE9QVF9OT0JPRFksIFRS
VUUpOwogCisgICAgaWYgKGhlYWRlcnMpIHsKKyAgICAgICAgY3VybF9lYXN5X3NldG9wdChkLT5t
X2hhbmRsZSwgQ1VSTE9QVF9IVFRQSEVBREVSLCBoZWFkZXJzKTsKKyAgICAgICAgZC0+bV9jdXN0
b21IZWFkZXJzID0gaGVhZGVyczsKKyAgICB9CisKICAgICBtX3J1bm5pbmdKb2JzKys7CiAgICAg
Q1VSTE1jb2RlIHJldCA9IGN1cmxfbXVsdGlfYWRkX2hhbmRsZShtX2N1cmxNdWx0aUhhbmRsZSwg
ZC0+bV9oYW5kbGUpOwogICAgIC8vIGRvbid0IGNhbGwgcGVyZm9ybSwgYmVjYXVzZSBldmVudHMg
bXVzdCBiZSBhc3luYwpJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvUmVzb3Vy
Y2VIYW5kbGVNYW5hZ2VyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L2N1cmwvUmVzb3VyY2VIYW5kbGVNYW5hZ2VyLmgJKHJldmlzaW9uIDI5MTc1KQorKysgV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvUmVzb3VyY2VIYW5kbGVNYW5hZ2VyLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTQ0LDggKzQ0LDggQEAKICAgICB2b2lkIGNhbmNlbChSZXNvdXJjZUhhbmRsZSop
OwogICAgIHZvaWQgc2V0Q29va2llSmFyRmlsZU5hbWUoY29uc3QgY2hhciogY29va2llSmFyRmls
ZU5hbWUpOwogCi0gICAgdm9pZCBzZXR1cFBPU1QoUmVzb3VyY2VIYW5kbGUqKTsKLSAgICB2b2lk
IHNldHVwUFVUKFJlc291cmNlSGFuZGxlKik7CisgICAgdm9pZCBzZXR1cFBPU1QoUmVzb3VyY2VI
YW5kbGUqLCBzdHJ1Y3QgY3VybF9zbGlzdCoqKTsKKyAgICB2b2lkIHNldHVwUFVUKFJlc291cmNl
SGFuZGxlKiwgc3RydWN0IGN1cmxfc2xpc3QqKik7CiAKIHByaXZhdGU6CiAgICAgUmVzb3VyY2VI
YW5kbGVNYW5hZ2VyKCk7CkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9SZXNv
dXJjZUhhbmRsZUN1cmwuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9jdXJsL1Jlc291cmNlSGFuZGxlQ3VybC5jcHAJKHJldmlzaW9uIDI5MTc1KQorKysgV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvUmVzb3VyY2VIYW5kbGVDdXJsLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMzgsOSArMzgsMTAgQEAKIFJlc291cmNlSGFuZGxlSW50ZXJuYWw6On5SZXNvdXJj
ZUhhbmRsZUludGVybmFsKCkKIHsKICAgICBmcmVlKG1fdXJsKTsKLSAgICBmcmVlKG1fZmlsZU5h
bWUpOwogICAgIGlmIChtX2N1c3RvbUhlYWRlcnMpCiAgICAgICAgIGN1cmxfc2xpc3RfZnJlZV9h
bGwobV9jdXN0b21IZWFkZXJzKTsKKyAgICBpZiAobV9maWxlKQorICAgICAgICBmY2xvc2UobV9m
aWxlKTsKIH0KIAogUmVzb3VyY2VIYW5kbGU6On5SZXNvdXJjZUhhbmRsZSgpCkluZGV4OiBXZWJD
b3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24g
MjkxNzUpCisrKyBXZWJDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIw
IEBACisyMDA4LTAxLTA0ICBMdWNhIEJydW5vICA8bGV0aGFsbWFuODhAZ21haWwuY29tPgorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIGh0dHA6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2NzI5CisgICAgICAgIFtjVVJMXSBBbGxvdyBt
dWx0aXBsZSBmaWxlcyBmb3IgdXBsb2FkCisKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL1Jl
c291cmNlSGFuZGxlSW50ZXJuYWwuaDoKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlSGFuZGxl
SW50ZXJuYWw6OlJlc291cmNlSGFuZGxlSW50ZXJuYWwpOgorICAgICAgICAqIHBsYXRmb3JtL25l
dHdvcmsvY3VybC9SZXNvdXJjZUhhbmRsZUN1cmwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVz
b3VyY2VIYW5kbGVJbnRlcm5hbDo6flJlc291cmNlSGFuZGxlSW50ZXJuYWwpOgorICAgICAgICAq
IHBsYXRmb3JtL25ldHdvcmsvY3VybC9SZXNvdXJjZUhhbmRsZU1hbmFnZXIuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6cmVhZENhbGxiYWNrKTogYWRkZWQKKyAgICAgICAgKFdlYkNvcmU6OlJlc291
cmNlSGFuZGxlTWFuYWdlcjo6c2V0dXBQT1NUKToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNl
SGFuZGxlTWFuYWdlcjo6c3RhcnRKb2IpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY3Vy
bC9SZXNvdXJjZUhhbmRsZU1hbmFnZXIuaDoKKwogMjAwOC0wMS0wNCAgQW50dGkgS29pdmlzdG8g
IDxhbnR0aUBhcHBsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4uCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>18312</attachid>
            <date>2008-01-07 06:18:02 -0800</date>
            <delta_ts>2008-01-07 06:29:58 -0800</delta_ts>
            <desc>do not stream simple POSTs</desc>
            <filename>curlupload.patch</filename>
            <type>text/plain</type>
            <size>12120</size>
            <attacher name="Luca Bruno">lethalman88</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZUludGVybmFsLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlSW50
ZXJuYWwuaAkocmV2aXNpb24gMjkyMjUpCisrKyBXZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVz
b3VyY2VIYW5kbGVJbnRlcm5hbC5oCSh3b3JraW5nIGNvcHkpCkBAIC05Niw5ICs5NiwxMSBAQAog
I2lmIFVTRShDVVJMKQogICAgICAgICAgICAgLCBtX2hhbmRsZSgwKQogICAgICAgICAgICAgLCBt
X3VybCgwKQotICAgICAgICAgICAgLCBtX2ZpbGVOYW1lKDApCiAgICAgICAgICAgICAsIG1fY3Vz
dG9tSGVhZGVycygwKQogICAgICAgICAgICAgLCBtX2NhbmNlbGxlZChmYWxzZSkKKyAgICAgICAg
ICAgICwgbV9maWxlKDApCisgICAgICAgICAgICAsIG1fZm9ybURhdGFFbGVtZW50SW5kZXgoMCkK
KyAgICAgICAgICAgICwgbV9mb3JtRGF0YUVsZW1lbnREYXRhT2Zmc2V0KDApCiAjZW5kaWYKICNp
ZiBQTEFURk9STShRVCkKICAgICAgICAgICAgICwgbV9qb2IoMCkKQEAgLTE0OSwxMSArMTUxLDE0
IEBACiAjaWYgVVNFKENVUkwpCiAgICAgICAgIENVUkwqIG1faGFuZGxlOwogICAgICAgICBjaGFy
KiBtX3VybDsKLSAgICAgICAgY2hhciogbV9maWxlTmFtZTsKICAgICAgICAgc3RydWN0IGN1cmxf
c2xpc3QqIG1fY3VzdG9tSGVhZGVyczsgICAgICAgIAotICAgICAgICBWZWN0b3I8Y2hhcj4gbV9w
b3N0Qnl0ZXM7CiAgICAgICAgIFJlc291cmNlUmVzcG9uc2UgbV9yZXNwb25zZTsKICAgICAgICAg
Ym9vbCBtX2NhbmNlbGxlZDsKKworICAgICAgICBGSUxFKiBtX2ZpbGU7CisgICAgICAgIHNpemVf
dCBtX2Zvcm1EYXRhRWxlbWVudEluZGV4OworICAgICAgICBzaXplX3QgbV9mb3JtRGF0YUVsZW1l
bnREYXRhT2Zmc2V0OworICAgICAgICBWZWN0b3I8Y2hhcj4gbV9wb3N0Qnl0ZXM7CiAjZW5kaWYK
ICNpZiBQTEFURk9STShRVCkKICNpZiBRVF9WRVJTSU9OIDwgMHgwNDA0MDAKSW5kZXg6IFdlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL1Jlc291cmNlSGFuZGxlTWFuYWdlci5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvUmVzb3VyY2VIYW5kbGVNYW5h
Z2VyLmNwcAkocmV2aXNpb24gMjkyMjUpCisrKyBXZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3Vy
bC9SZXNvdXJjZUhhbmRsZU1hbmFnZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMSw2ICszMSw3
IEBACiAjaW5jbHVkZSAiUmVzb3VyY2VIYW5kbGVNYW5hZ2VyLmgiCiAKICNpbmNsdWRlICJDU3Ry
aW5nLmgiCisjaW5jbHVkZSAiRmlsZVN5c3RlbS5oIgogI2luY2x1ZGUgIk1JTUVUeXBlUmVnaXN0
cnkuaCIKICNpbmNsdWRlICJOb3RJbXBsZW1lbnRlZC5oIgogI2luY2x1ZGUgIlJlc291cmNlSGFu
ZGxlLmgiCkBAIC0xOTEsNiArMTkyLDcwIEBACiAgICAgcmV0dXJuIHRvdGFsU2l6ZTsKIH0KIAor
LyogVGhpcyBpcyBjYWxsZWQgdG8gb2J0YWluIEhUVFAgUE9TVCBvciBQVVQgZGF0YS4KKyAgIEl0
ZXJhdGUgdHJvdWdoIEZvcm1EYXRhIGVsZW1lbnRzIGFuZCB1cGxvYWQgZmlsZXMuCisgICBDYXJl
ZnVsbHkgcmVzcGVjdCB0aGUgZ2l2ZW4gYnVmZmVyIHNpemUgYW5kIGZpbGwgdGhlIHJlc3Qgb2Yg
dGhlIGRhdGEgYXQgdGhlIG5leHQgY2FsbHMuCisqLworc2l6ZV90IHJlYWRDYWxsYmFjayh2b2lk
ICpwdHIsIHNpemVfdCBzaXplLCBzaXplX3Qgbm1lbWIsIHZvaWQgKmRhdGEpCit7CisgICAgUmVz
b3VyY2VIYW5kbGUqIGpvYiA9IHN0YXRpY19jYXN0PFJlc291cmNlSGFuZGxlKj4oZGF0YSk7Cisg
ICAgUmVzb3VyY2VIYW5kbGVJbnRlcm5hbCogZCA9IGpvYi0+Z2V0SW50ZXJuYWwoKTsKKyAgICBp
ZiAoZC0+bV9jYW5jZWxsZWQpCisgICAgICAgIHJldHVybiAwOworCisgICAgc2l6ZV90IHNlbnQg
PSAwOworICAgIHNpemVfdCB0b1NlbmQgPSBzaXplICogbm1lbWI7CisgICAgaWYgKCF0b1NlbmQp
CisgICAgICAgIHJldHVybiAwOworCisgICAgVmVjdG9yPEZvcm1EYXRhRWxlbWVudD4gZWxlbWVu
dHMgPSBqb2ItPnJlcXVlc3QoKS5odHRwQm9keSgpLT5lbGVtZW50cygpOworICAgIGlmIChkLT5t
X2Zvcm1EYXRhRWxlbWVudEluZGV4ID49IGVsZW1lbnRzLnNpemUoKSkKKyAgICAgICAgcmV0dXJu
IDA7CisKKyAgICBGb3JtRGF0YUVsZW1lbnQgZWxlbWVudCA9IGVsZW1lbnRzW2QtPm1fZm9ybURh
dGFFbGVtZW50SW5kZXhdOworCisgICAgaWYgKGVsZW1lbnQubV90eXBlID09IEZvcm1EYXRhRWxl
bWVudDo6ZW5jb2RlZEZpbGUpIHsKKyAgICAgICAgaWYgKCFkLT5tX2ZpbGUpCisgICAgICAgICAg
ICBkLT5tX2ZpbGUgPSBmb3BlbihlbGVtZW50Lm1fZmlsZW5hbWUudXRmOCgpLmRhdGEoKSwgInJi
Iik7CisKKyAgICAgICAgaWYgKCFkLT5tX2ZpbGUpIHsKKyAgICAgICAgICAgIC8vIEZJWE1FOiBz
aG93IGFuIHVzZXIgZXJyb3I/CisjaWZuZGVmIE5ERUJVRworICAgICAgICAgICAgcHJpbnRmKCJG
YWlsZWQgd2hpbGUgdHJ5aW5nIHRvIG9wZW4gJXMgZm9yIHVwbG9hZFxuIiwgZWxlbWVudC5tX2Zp
bGVuYW1lLnV0ZjgoKS5kYXRhKCkpOworI2VuZGlmCisgICAgICAgICAgICBqb2ItPmNhbmNlbCgp
OworICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIH0KKworICAgICAgICBzZW50ID0gZnJl
YWQocHRyLCBzaXplLCBubWVtYiwgZC0+bV9maWxlKTsKKyAgICAgICAgaWYgKCFzaXplICYmIGZl
cnJvcihkLT5tX2ZpbGUpKSB7CisgICAgICAgICAgICAvLyBGSVhNRTogc2hvdyBhbiB1c2VyIGVy
cm9yPworI2lmbmRlZiBOREVCVUcKKyAgICAgICAgICAgIHByaW50ZigiRmFpbGVkIHdoaWxlIHRy
eWluZyB0byByZWFkICVzIGZvciB1cGxvYWRcbiIsIGVsZW1lbnQubV9maWxlbmFtZS51dGY4KCku
ZGF0YSgpKTsKKyNlbmRpZgorICAgICAgICAgICAgam9iLT5jYW5jZWwoKTsKKyAgICAgICAgICAg
IHJldHVybiAwOworICAgICAgICB9CisgICAgICAgIGlmIChmZW9mKGQtPm1fZmlsZSkpIHsKKyAg
ICAgICAgICAgIGZjbG9zZShkLT5tX2ZpbGUpOworICAgICAgICAgICAgZC0+bV9maWxlID0gMDsK
KyAgICAgICAgICAgIGQtPm1fZm9ybURhdGFFbGVtZW50SW5kZXgrKzsKKyAgICAgICAgfSAgICAg
ICAgICAgIAorICAgIH0gZWxzZSB7CisgICAgICAgIHNpemVfdCBlbGVtZW50U2l6ZSA9IGVsZW1l
bnQubV9kYXRhLnNpemUoKSAtIGQtPm1fZm9ybURhdGFFbGVtZW50RGF0YU9mZnNldDsKKyAgICAg
ICAgc2VudCA9IGVsZW1lbnRTaXplID4gdG9TZW5kID8gdG9TZW5kIDogZWxlbWVudFNpemU7Cisg
ICAgICAgIG1lbWNweShwdHIsIGVsZW1lbnQubV9kYXRhLmRhdGEoKStkLT5tX2Zvcm1EYXRhRWxl
bWVudERhdGFPZmZzZXQsIHNlbnQpOworICAgICAgICBpZiAoZWxlbWVudFNpemUgPiBzZW50KQor
ICAgICAgICAgICAgZC0+bV9mb3JtRGF0YUVsZW1lbnREYXRhT2Zmc2V0ICs9IHNlbnQ7CisgICAg
ICAgIGVsc2UgeworICAgICAgICAgICAgZC0+bV9mb3JtRGF0YUVsZW1lbnREYXRhT2Zmc2V0ID0g
MDsKKyAgICAgICAgICAgIGQtPm1fZm9ybURhdGFFbGVtZW50SW5kZXgrKzsKKyAgICAgICAgfQor
ICAgIH0KKworICAgIHJldHVybiBzZW50OworfQorCiB2b2lkIFJlc291cmNlSGFuZGxlTWFuYWdl
cjo6ZG93bmxvYWRUaW1lckNhbGxiYWNrKFRpbWVyPFJlc291cmNlSGFuZGxlTWFuYWdlcj4qIHRp
bWVyKQogewogICAgIHN0YXJ0U2NoZWR1bGVkSm9icygpOwpAQCAtMjg4LDQ5ICszNTMsNjMgQEAK
ICAgICBkLT5tX2hhbmRsZSA9IDA7CiB9CiAKLXZvaWQgUmVzb3VyY2VIYW5kbGVNYW5hZ2VyOjpz
ZXR1cFBVVChSZXNvdXJjZUhhbmRsZSopCit2b2lkIFJlc291cmNlSGFuZGxlTWFuYWdlcjo6c2V0
dXBQVVQoUmVzb3VyY2VIYW5kbGUqLCBzdHJ1Y3QgY3VybF9zbGlzdCoqKQogewogICAgIG5vdElt
cGxlbWVudGVkKCk7CiB9CiAKLXZvaWQgUmVzb3VyY2VIYW5kbGVNYW5hZ2VyOjpzZXR1cFBPU1Qo
UmVzb3VyY2VIYW5kbGUqIGpvYikKKy8qIENhbGN1bGF0ZSB0aGUgbGVuZ3RoIG9mIHRoZSBQT1NU
LgorICAgRm9yY2UgY2h1bmtlZCBkYXRhIHRyYW5zZmVyIGlmIHNpemUgb2YgZmlsZXMgY2FuJ3Qg
YmUgb2J0YWluZWQuCisgKi8KK3ZvaWQgUmVzb3VyY2VIYW5kbGVNYW5hZ2VyOjpzZXR1cFBPU1Qo
UmVzb3VyY2VIYW5kbGUqIGpvYiwgc3RydWN0IGN1cmxfc2xpc3QqKiBoZWFkZXJzKQogewogICAg
IFJlc291cmNlSGFuZGxlSW50ZXJuYWwqIGQgPSBqb2ItPmdldEludGVybmFsKCk7CisgICAgVmVj
dG9yPEZvcm1EYXRhRWxlbWVudD4gZWxlbWVudHMgPSBqb2ItPnJlcXVlc3QoKS5odHRwQm9keSgp
LT5lbGVtZW50cygpOworICAgIHNpemVfdCBudW1FbGVtZW50cyA9IGVsZW1lbnRzLnNpemUoKTsK
IAotICAgIGpvYi0+cmVxdWVzdCgpLmh0dHBCb2R5KCktPmZsYXR0ZW4oZC0+bV9wb3N0Qnl0ZXMp
OwotICAgIGlmIChkLT5tX3Bvc3RCeXRlcy5zaXplKCkgIT0gMCkgewotICAgICAgICBjdXJsX2Vh
c3lfc2V0b3B0KGQtPm1faGFuZGxlLCBDVVJMT1BUX1BPU1QsIFRSVUUpOwotICAgICAgICBjdXJs
X2Vhc3lfc2V0b3B0KGQtPm1faGFuZGxlLCBDVVJMT1BUX1BPU1RGSUVMRFNJWkUsIGQtPm1fcG9z
dEJ5dGVzLnNpemUoKSk7Ci0gICAgICAgIGN1cmxfZWFzeV9zZXRvcHQoZC0+bV9oYW5kbGUsIENV
UkxPUFRfUE9TVEZJRUxEUywgZC0+bV9wb3N0Qnl0ZXMuZGF0YSgpKTsKKyAgICAvLyBEbyBub3Qg
c3RyZWFtIGZvciBzaW1wbGUgUE9TVCBkYXRhCisgICAgaWYgKG51bUVsZW1lbnRzIDw9IDEpIHsK
KyAgICAgICAgam9iLT5yZXF1ZXN0KCkuaHR0cEJvZHkoKS0+ZmxhdHRlbihkLT5tX3Bvc3RCeXRl
cyk7CisgICAgICAgIGlmIChkLT5tX3Bvc3RCeXRlcy5zaXplKCkgIT0gMCkgeworICAgICAgICAg
ICAgY3VybF9lYXN5X3NldG9wdChkLT5tX2hhbmRsZSwgQ1VSTE9QVF9QT1NULCBUUlVFKTsKKyAg
ICAgICAgICAgIGN1cmxfZWFzeV9zZXRvcHQoZC0+bV9oYW5kbGUsIENVUkxPUFRfUE9TVEZJRUxE
U0laRSwgZC0+bV9wb3N0Qnl0ZXMuc2l6ZSgpKTsKKyAgICAgICAgICAgIGN1cmxfZWFzeV9zZXRv
cHQoZC0+bV9oYW5kbGUsIENVUkxPUFRfUE9TVEZJRUxEUywgZC0+bV9wb3N0Qnl0ZXMuZGF0YSgp
KTsgCisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIFZlY3RvcjxGb3Jt
RGF0YUVsZW1lbnQ+IGVsZW1lbnRzID0gam9iLT5yZXF1ZXN0KCkuaHR0cEJvZHkoKS0+ZWxlbWVu
dHMoKTsKLSAgICBzaXplX3Qgc2l6ZSA9IGVsZW1lbnRzLnNpemUoKTsKLSAgICBzdHJ1Y3QgY3Vy
bF9odHRwcG9zdCogbGFzdEl0ZW0gPSAwOwotICAgIHN0cnVjdCBjdXJsX2h0dHBwb3N0KiBwb3N0
ID0gMDsKLSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHNpemU7IGkrKykgewotICAgICAgICBp
ZiAoZWxlbWVudHNbaV0ubV90eXBlICE9IEZvcm1EYXRhRWxlbWVudDo6ZW5jb2RlZEZpbGUpCi0g
ICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgQ1N0cmluZyBjc3RyaW5nID0gZWxlbWVudHNb
aV0ubV9maWxlbmFtZS51dGY4KCk7Ci0gICAgICAgIEFTU0VSVCghZC0+bV9maWxlTmFtZSk7Ci0g
ICAgICAgIGQtPm1fZmlsZU5hbWUgPSBzdHJkdXAoY3N0cmluZy5kYXRhKCkpOworICAgIC8vIE9i
dGFpbiB0aGUgdG90YWwgc2l6ZSBvZiB0aGUgUE9TVAorICAgIHN0YXRpYyBjb25zdCBsb25nIGxv
bmcgbWF4Q3VybE9mZlQgPSAoMUxMIDw8IChzaXplb2YoY3VybF9vZmZfdCkqOCAtIDEpKSAtIDE7
CisgICAgY3VybF9vZmZfdCBzaXplID0gMDsKKyAgICBib29sIGNodW5rZWRUcmFuc2ZlciA9IGZh
bHNlOworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbnVtRWxlbWVudHM7IGkrKykgeworICAg
ICAgICBGb3JtRGF0YUVsZW1lbnQgZWxlbWVudCA9IGVsZW1lbnRzW2ldOworICAgICAgICBpZiAo
ZWxlbWVudC5tX3R5cGUgPT0gRm9ybURhdGFFbGVtZW50OjplbmNvZGVkRmlsZSkgeworICAgICAg
ICAgICAgbG9uZyBsb25nIGZpbGVTaXplUmVzdWx0OworICAgICAgICAgICAgaWYgKGZpbGVTaXpl
KGVsZW1lbnQubV9maWxlbmFtZSwgZmlsZVNpemVSZXN1bHQpKSB7CisgICAgICAgICAgICAgICAg
aWYgKGZpbGVTaXplUmVzdWx0ID4gbWF4Q3VybE9mZlQpIHsKKyAgICAgICAgICAgICAgICAgICAg
Ly8gRmlsZSBzaXplIGlzIHRvbyBiaWcgZm9yIHNwZWNpZnlpbmcgaXQgdG8gY1VSTAorICAgICAg
ICAgICAgICAgICAgICBjaHVua2VkVHJhbnNmZXIgPSB0cnVlOworICAgICAgICAgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgc2l6ZSArPSBmaWxl
U2l6ZVJlc3VsdDsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgY2h1bmtl
ZFRyYW5zZmVyID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0K
KyAgICAgICAgfSBlbHNlCisgICAgICAgICAgICBzaXplICs9IGVsZW1lbnRzW2ldLm1fZGF0YS5z
aXplKCk7CisgICAgfQogCi0gICAgICAgIC8vIEZpbGwgaW4gdGhlIGZpbGUgdXBsb2FkIGZpZWxk
Ci0gICAgICAgIGN1cmxfZm9ybWFkZCgmcG9zdCwgJmxhc3RJdGVtLCBDVVJMRk9STV9DT1BZTkFN
RSwgInNlbmRmaWxlIiwgQ1VSTEZPUk1fRklMRSwgZC0+bV9maWxlTmFtZSwgQ1VSTEZPUk1fRU5E
KTsKKyAgICBjdXJsX2Vhc3lfc2V0b3B0KGQtPm1faGFuZGxlLCBDVVJMT1BUX1BPU1QsIFRSVUUp
OwogCi0gICAgICAgIC8vIEZpbGwgaW4gdGhlIGZpbGVuYW1lIGZpZWxkCi0gICAgICAgIGN1cmxf
Zm9ybWFkZCgmcG9zdCwgJmxhc3RJdGVtLCBDVVJMRk9STV9DT1BZTkFNRSwgImZpbGVuYW1lIiwg
Q1VSTEZPUk1fQ09QWUNPTlRFTlRTLCBkLT5tX2ZpbGVOYW1lLCBDVVJMRk9STV9FTkQpOworICAg
IGlmIChjaHVua2VkVHJhbnNmZXIpIC8vIGNVUkwgZ3Vlc3NlcyB3ZSB3YW50IGNodW5rZWQgZW5j
b2RpbmcgaWYgd2Ugc3BlY2lmeSB0aGUgaGVhZGVyIGJlbG93CisgICAgICAgICpoZWFkZXJzID0g
Y3VybF9zbGlzdF9hcHBlbmQoKmhlYWRlcnMsICJUcmFuc2Zlci1FbmNvZGluZzogY2h1bmtlZCIp
OworICAgIGVsc2UKKyAgICAgICAgY3VybF9lYXN5X3NldG9wdChkLT5tX2hhbmRsZSwgQ1VSTE9Q
VF9QT1NURklFTERTSVpFX0xBUkdFLCBzaXplKTsKIAotICAgICAgICAvLyBGSVhNRTogV2Ugc2hv
dWxkIG5vdCBhZGQgYSAic3VibWl0IiBmaWVsZCBmb3IgZWFjaCBmaWxlIHVwbG9hZGVkLiBSZXZp
ZXcgdGhpcyBjb2RlLgotICAgICAgICAvLyBGaWxsIGluIHRoZSBzdWJtaXQgZmllbGQgdG9vLCBl
dmVuIGlmIHRoaXMgaXMgcmFyZWx5IG5lZWRlZAotICAgICAgICBjdXJsX2Zvcm1hZGQoJnBvc3Qs
ICZsYXN0SXRlbSwgQ1VSTEZPUk1fQ09QWU5BTUUsICJzdWJtaXQiLCBDVVJMRk9STV9DT1BZQ09O
VEVOVFMsICJzZW5kIiwgQ1VSTEZPUk1fRU5EKTsKLQotICAgICAgICAvLyBGSVhNRTogc2hvdWxk
IHdlIHN1cHBvcnQgbW9yZSB0aGFuIG9uZSBmaWxlPwotICAgICAgICBicmVhazsKLSAgICB9Ci0K
LSAgICBpZiAocG9zdCkKLSAgICAgICAgY3VybF9lYXN5X3NldG9wdChkLT5tX2hhbmRsZSwgQ1VS
TE9QVF9IVFRQUE9TVCwgcG9zdCk7CisgICAgY3VybF9lYXN5X3NldG9wdChkLT5tX2hhbmRsZSwg
Q1VSTE9QVF9SRUFERlVOQ1RJT04sIHJlYWRDYWxsYmFjayk7CisgICAgY3VybF9lYXN5X3NldG9w
dChkLT5tX2hhbmRsZSwgQ1VSTE9QVF9SRUFEREFUQSwgam9iKTsKIH0KIAogdm9pZCBSZXNvdXJj
ZUhhbmRsZU1hbmFnZXI6OmFkZChSZXNvdXJjZUhhbmRsZSogam9iKQpAQCAtNDcxLDggKzU1MCw4
IEBACiAgICAgICAgIGN1cmxfZWFzeV9zZXRvcHQoZC0+bV9oYW5kbGUsIENVUkxPUFRfQ09PS0lF
SkFSLCBtX2Nvb2tpZUphckZpbGVOYW1lKTsKICAgICB9CiAKKyAgICBzdHJ1Y3QgY3VybF9zbGlz
dCogaGVhZGVycyA9IDA7CiAgICAgaWYgKGpvYi0+cmVxdWVzdCgpLmh0dHBIZWFkZXJGaWVsZHMo
KS5zaXplKCkgPiAwKSB7Ci0gICAgICAgIHN0cnVjdCBjdXJsX3NsaXN0KiBoZWFkZXJzID0gMDsK
ICAgICAgICAgSFRUUEhlYWRlck1hcCBjdXN0b21IZWFkZXJzID0gam9iLT5yZXF1ZXN0KCkuaHR0
cEhlYWRlckZpZWxkcygpOwogICAgICAgICBIVFRQSGVhZGVyTWFwOjpjb25zdF9pdGVyYXRvciBl
bmQgPSBjdXN0b21IZWFkZXJzLmVuZCgpOwogICAgICAgICBmb3IgKEhUVFBIZWFkZXJNYXA6OmNv
bnN0X2l0ZXJhdG9yIGl0ID0gY3VzdG9tSGVhZGVycy5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQp
IHsKQEAgLTQ4NCwxOSArNTYzLDIyIEBACiAgICAgICAgICAgICBDU3RyaW5nIGhlYWRlckxhdGlu
MSA9IGhlYWRlclN0cmluZy5sYXRpbjEoKTsKICAgICAgICAgICAgIGhlYWRlcnMgPSBjdXJsX3Ns
aXN0X2FwcGVuZChoZWFkZXJzLCBoZWFkZXJMYXRpbjEuZGF0YSgpKTsKICAgICAgICAgfQotICAg
ICAgICBjdXJsX2Vhc3lfc2V0b3B0KGQtPm1faGFuZGxlLCBDVVJMT1BUX0hUVFBIRUFERVIsIGhl
YWRlcnMpOwotICAgICAgICBkLT5tX2N1c3RvbUhlYWRlcnMgPSBoZWFkZXJzOwogICAgIH0KIAog
ICAgIGlmICgiR0VUIiA9PSBqb2ItPnJlcXVlc3QoKS5odHRwTWV0aG9kKCkpCiAgICAgICAgIGN1
cmxfZWFzeV9zZXRvcHQoZC0+bV9oYW5kbGUsIENVUkxPUFRfSFRUUEdFVCwgVFJVRSk7CiAgICAg
ZWxzZSBpZiAoIlBPU1QiID09IGpvYi0+cmVxdWVzdCgpLmh0dHBNZXRob2QoKSkKLSAgICAgICAg
c2V0dXBQT1NUKGpvYik7CisgICAgICAgIHNldHVwUE9TVChqb2IsICZoZWFkZXJzKTsKICAgICBl
bHNlIGlmICgiUFVUIiA9PSBqb2ItPnJlcXVlc3QoKS5odHRwTWV0aG9kKCkpCi0gICAgICAgIHNl
dHVwUFVUKGpvYik7CisgICAgICAgIHNldHVwUFVUKGpvYiwgJmhlYWRlcnMpOwogICAgIGVsc2Ug
aWYgKCJIRUFEIiA9PSBqb2ItPnJlcXVlc3QoKS5odHRwTWV0aG9kKCkpCiAgICAgICAgIGN1cmxf
ZWFzeV9zZXRvcHQoZC0+bV9oYW5kbGUsIENVUkxPUFRfTk9CT0RZLCBUUlVFKTsKIAorICAgIGlm
IChoZWFkZXJzKSB7CisgICAgICAgIGN1cmxfZWFzeV9zZXRvcHQoZC0+bV9oYW5kbGUsIENVUkxP
UFRfSFRUUEhFQURFUiwgaGVhZGVycyk7CisgICAgICAgIGQtPm1fY3VzdG9tSGVhZGVycyA9IGhl
YWRlcnM7CisgICAgfQorCiAgICAgbV9ydW5uaW5nSm9icysrOwogICAgIENVUkxNY29kZSByZXQg
PSBjdXJsX211bHRpX2FkZF9oYW5kbGUobV9jdXJsTXVsdGlIYW5kbGUsIGQtPm1faGFuZGxlKTsK
ICAgICAvLyBkb24ndCBjYWxsIHBlcmZvcm0sIGJlY2F1c2UgZXZlbnRzIG11c3QgYmUgYXN5bmMK
QEAgLTUxNSwxMSArNTk3LDEwIEBACiAgICAgaWYgKHJlbW92ZVNjaGVkdWxlZEpvYihqb2IpKQog
ICAgICAgICByZXR1cm47CiAKLSAgICBpZiAobV9kb3dubG9hZFRpbWVyLmlzQWN0aXZlKCkpIHsK
LSAgICAgICAgUmVzb3VyY2VIYW5kbGVJbnRlcm5hbCogZCA9IGpvYi0+Z2V0SW50ZXJuYWwoKTsK
LSAgICAgICAgZC0+bV9jYW5jZWxsZWQgPSB0cnVlOwotICAgIH0gZWxzZQotICAgICAgICByZW1v
dmVGcm9tQ3VybChqb2IpOworICAgIFJlc291cmNlSGFuZGxlSW50ZXJuYWwqIGQgPSBqb2ItPmdl
dEludGVybmFsKCk7CisgICAgZC0+bV9jYW5jZWxsZWQgPSB0cnVlOworICAgIGlmICghbV9kb3du
bG9hZFRpbWVyLmlzQWN0aXZlKCkpCisgICAgICAgIG1fZG93bmxvYWRUaW1lci5zdGFydE9uZVNo
b3QocG9sbFRpbWVTZWNvbmRzKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDog
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvUmVzb3VyY2VIYW5kbGVNYW5hZ2VyLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvUmVzb3VyY2VIYW5kbGVN
YW5hZ2VyLmgJKHJldmlzaW9uIDI5MjI1KQorKysgV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1
cmwvUmVzb3VyY2VIYW5kbGVNYW5hZ2VyLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ0LDggKzQ0LDgg
QEAKICAgICB2b2lkIGNhbmNlbChSZXNvdXJjZUhhbmRsZSopOwogICAgIHZvaWQgc2V0Q29va2ll
SmFyRmlsZU5hbWUoY29uc3QgY2hhciogY29va2llSmFyRmlsZU5hbWUpOwogCi0gICAgdm9pZCBz
ZXR1cFBPU1QoUmVzb3VyY2VIYW5kbGUqKTsKLSAgICB2b2lkIHNldHVwUFVUKFJlc291cmNlSGFu
ZGxlKik7CisgICAgdm9pZCBzZXR1cFBPU1QoUmVzb3VyY2VIYW5kbGUqLCBzdHJ1Y3QgY3VybF9z
bGlzdCoqKTsKKyAgICB2b2lkIHNldHVwUFVUKFJlc291cmNlSGFuZGxlKiwgc3RydWN0IGN1cmxf
c2xpc3QqKik7CiAKIHByaXZhdGU6CiAgICAgUmVzb3VyY2VIYW5kbGVNYW5hZ2VyKCk7CkluZGV4
OiBXZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9SZXNvdXJjZUhhbmRsZUN1cmwuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL1Jlc291cmNlSGFuZGxl
Q3VybC5jcHAJKHJldmlzaW9uIDI5MjI1KQorKysgV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1
cmwvUmVzb3VyY2VIYW5kbGVDdXJsLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzgsOSArMzgsMTAg
QEAKIFJlc291cmNlSGFuZGxlSW50ZXJuYWw6On5SZXNvdXJjZUhhbmRsZUludGVybmFsKCkKIHsK
ICAgICBmcmVlKG1fdXJsKTsKLSAgICBmcmVlKG1fZmlsZU5hbWUpOwogICAgIGlmIChtX2N1c3Rv
bUhlYWRlcnMpCiAgICAgICAgIGN1cmxfc2xpc3RfZnJlZV9hbGwobV9jdXN0b21IZWFkZXJzKTsK
KyAgICBpZiAobV9maWxlKQorICAgICAgICBmY2xvc2UobV9maWxlKTsKIH0KIAogUmVzb3VyY2VI
YW5kbGU6On5SZXNvdXJjZUhhbmRsZSgpCkluZGV4OiBXZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBXZWJDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjkyMjYpCisrKyBXZWJDb3JlL0No
YW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIxIEBACisyMDA4LTAxLTA3ICBMdWNh
IEJydW5vICA8bGV0aGFsbWFuODhAZ21haWwuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisJaHR0cDovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTY3MjkKKwlbY1VSTF0gQWxsb3cgbXVsdGlwbGUgZmlsZXMgZm9yIHVwbG9hZAorCisgICAgICAg
ICogcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZUludGVybmFsLmg6CisgICAgICAgIChX
ZWJDb3JlOjpSZXNvdXJjZUhhbmRsZUludGVybmFsOjpSZXNvdXJjZUhhbmRsZUludGVybmFsKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2N1cmwvUmVzb3VyY2VIYW5kbGVDdXJsLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlSGFuZGxlSW50ZXJuYWw6On5SZXNvdXJjZUhhbmRs
ZUludGVybmFsKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2N1cmwvUmVzb3VyY2VIYW5k
bGVNYW5hZ2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnJlYWRDYWxsYmFjayk6IGFkZGVkCisg
ICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZU1hbmFnZXI6OnNldHVwUE9TVCk6IHNldHVw
IGZvciBzdHJlYW1pbmcgdGhlIFBPU1QKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlSGFuZGxl
TWFuYWdlcjo6c3RhcnRKb2IpOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VIYW5kbGVNYW5h
Z2VyOjpjYW5jZWwpOiByZXZlcnQgdGhlIHByZXZpb3VzIHBhdGNoIGZvciByZWdyZXNzaW9uCisg
ICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jdXJsL1Jlc291cmNlSGFuZGxlTWFuYWdlci5oOgor
CiAyMDA4LTAxLTA3ICBUaGlhZ28gTWFjaWVpcmEgIDx0aGlhZ28ubWFjaWVpcmFAdHJvbGx0ZWNo
LmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBTaW1vbi4K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>18313</attachid>
            <date>2008-01-07 06:29:58 -0800</date>
            <delta_ts>2008-01-11 17:28:53 -0800</delta_ts>
            <desc>return if empty POST</desc>
            <filename>curlupload.patch</filename>
            <type>text/plain</type>
            <size>12162</size>
            <attacher name="Luca Bruno">lethalman88</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZUludGVybmFsLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlSW50
ZXJuYWwuaAkocmV2aXNpb24gMjkyMjUpCisrKyBXZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVz
b3VyY2VIYW5kbGVJbnRlcm5hbC5oCSh3b3JraW5nIGNvcHkpCkBAIC05Niw5ICs5NiwxMSBAQAog
I2lmIFVTRShDVVJMKQogICAgICAgICAgICAgLCBtX2hhbmRsZSgwKQogICAgICAgICAgICAgLCBt
X3VybCgwKQotICAgICAgICAgICAgLCBtX2ZpbGVOYW1lKDApCiAgICAgICAgICAgICAsIG1fY3Vz
dG9tSGVhZGVycygwKQogICAgICAgICAgICAgLCBtX2NhbmNlbGxlZChmYWxzZSkKKyAgICAgICAg
ICAgICwgbV9maWxlKDApCisgICAgICAgICAgICAsIG1fZm9ybURhdGFFbGVtZW50SW5kZXgoMCkK
KyAgICAgICAgICAgICwgbV9mb3JtRGF0YUVsZW1lbnREYXRhT2Zmc2V0KDApCiAjZW5kaWYKICNp
ZiBQTEFURk9STShRVCkKICAgICAgICAgICAgICwgbV9qb2IoMCkKQEAgLTE0OSwxMSArMTUxLDE0
IEBACiAjaWYgVVNFKENVUkwpCiAgICAgICAgIENVUkwqIG1faGFuZGxlOwogICAgICAgICBjaGFy
KiBtX3VybDsKLSAgICAgICAgY2hhciogbV9maWxlTmFtZTsKICAgICAgICAgc3RydWN0IGN1cmxf
c2xpc3QqIG1fY3VzdG9tSGVhZGVyczsgICAgICAgIAotICAgICAgICBWZWN0b3I8Y2hhcj4gbV9w
b3N0Qnl0ZXM7CiAgICAgICAgIFJlc291cmNlUmVzcG9uc2UgbV9yZXNwb25zZTsKICAgICAgICAg
Ym9vbCBtX2NhbmNlbGxlZDsKKworICAgICAgICBGSUxFKiBtX2ZpbGU7CisgICAgICAgIHNpemVf
dCBtX2Zvcm1EYXRhRWxlbWVudEluZGV4OworICAgICAgICBzaXplX3QgbV9mb3JtRGF0YUVsZW1l
bnREYXRhT2Zmc2V0OworICAgICAgICBWZWN0b3I8Y2hhcj4gbV9wb3N0Qnl0ZXM7CiAjZW5kaWYK
ICNpZiBQTEFURk9STShRVCkKICNpZiBRVF9WRVJTSU9OIDwgMHgwNDA0MDAKSW5kZXg6IFdlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL1Jlc291cmNlSGFuZGxlTWFuYWdlci5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvUmVzb3VyY2VIYW5kbGVNYW5h
Z2VyLmNwcAkocmV2aXNpb24gMjkyMjUpCisrKyBXZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3Vy
bC9SZXNvdXJjZUhhbmRsZU1hbmFnZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMSw2ICszMSw3
IEBACiAjaW5jbHVkZSAiUmVzb3VyY2VIYW5kbGVNYW5hZ2VyLmgiCiAKICNpbmNsdWRlICJDU3Ry
aW5nLmgiCisjaW5jbHVkZSAiRmlsZVN5c3RlbS5oIgogI2luY2x1ZGUgIk1JTUVUeXBlUmVnaXN0
cnkuaCIKICNpbmNsdWRlICJOb3RJbXBsZW1lbnRlZC5oIgogI2luY2x1ZGUgIlJlc291cmNlSGFu
ZGxlLmgiCkBAIC0xOTEsNiArMTkyLDcwIEBACiAgICAgcmV0dXJuIHRvdGFsU2l6ZTsKIH0KIAor
LyogVGhpcyBpcyBjYWxsZWQgdG8gb2J0YWluIEhUVFAgUE9TVCBvciBQVVQgZGF0YS4KKyAgIEl0
ZXJhdGUgdHJvdWdoIEZvcm1EYXRhIGVsZW1lbnRzIGFuZCB1cGxvYWQgZmlsZXMuCisgICBDYXJl
ZnVsbHkgcmVzcGVjdCB0aGUgZ2l2ZW4gYnVmZmVyIHNpemUgYW5kIGZpbGwgdGhlIHJlc3Qgb2Yg
dGhlIGRhdGEgYXQgdGhlIG5leHQgY2FsbHMuCisqLworc2l6ZV90IHJlYWRDYWxsYmFjayh2b2lk
ICpwdHIsIHNpemVfdCBzaXplLCBzaXplX3Qgbm1lbWIsIHZvaWQgKmRhdGEpCit7CisgICAgUmVz
b3VyY2VIYW5kbGUqIGpvYiA9IHN0YXRpY19jYXN0PFJlc291cmNlSGFuZGxlKj4oZGF0YSk7Cisg
ICAgUmVzb3VyY2VIYW5kbGVJbnRlcm5hbCogZCA9IGpvYi0+Z2V0SW50ZXJuYWwoKTsKKyAgICBp
ZiAoZC0+bV9jYW5jZWxsZWQpCisgICAgICAgIHJldHVybiAwOworCisgICAgc2l6ZV90IHNlbnQg
PSAwOworICAgIHNpemVfdCB0b1NlbmQgPSBzaXplICogbm1lbWI7CisgICAgaWYgKCF0b1NlbmQp
CisgICAgICAgIHJldHVybiAwOworCisgICAgVmVjdG9yPEZvcm1EYXRhRWxlbWVudD4gZWxlbWVu
dHMgPSBqb2ItPnJlcXVlc3QoKS5odHRwQm9keSgpLT5lbGVtZW50cygpOworICAgIGlmIChkLT5t
X2Zvcm1EYXRhRWxlbWVudEluZGV4ID49IGVsZW1lbnRzLnNpemUoKSkKKyAgICAgICAgcmV0dXJu
IDA7CisKKyAgICBGb3JtRGF0YUVsZW1lbnQgZWxlbWVudCA9IGVsZW1lbnRzW2QtPm1fZm9ybURh
dGFFbGVtZW50SW5kZXhdOworCisgICAgaWYgKGVsZW1lbnQubV90eXBlID09IEZvcm1EYXRhRWxl
bWVudDo6ZW5jb2RlZEZpbGUpIHsKKyAgICAgICAgaWYgKCFkLT5tX2ZpbGUpCisgICAgICAgICAg
ICBkLT5tX2ZpbGUgPSBmb3BlbihlbGVtZW50Lm1fZmlsZW5hbWUudXRmOCgpLmRhdGEoKSwgInJi
Iik7CisKKyAgICAgICAgaWYgKCFkLT5tX2ZpbGUpIHsKKyAgICAgICAgICAgIC8vIEZJWE1FOiBz
aG93IGFuIHVzZXIgZXJyb3I/CisjaWZuZGVmIE5ERUJVRworICAgICAgICAgICAgcHJpbnRmKCJG
YWlsZWQgd2hpbGUgdHJ5aW5nIHRvIG9wZW4gJXMgZm9yIHVwbG9hZFxuIiwgZWxlbWVudC5tX2Zp
bGVuYW1lLnV0ZjgoKS5kYXRhKCkpOworI2VuZGlmCisgICAgICAgICAgICBqb2ItPmNhbmNlbCgp
OworICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIH0KKworICAgICAgICBzZW50ID0gZnJl
YWQocHRyLCBzaXplLCBubWVtYiwgZC0+bV9maWxlKTsKKyAgICAgICAgaWYgKCFzaXplICYmIGZl
cnJvcihkLT5tX2ZpbGUpKSB7CisgICAgICAgICAgICAvLyBGSVhNRTogc2hvdyBhbiB1c2VyIGVy
cm9yPworI2lmbmRlZiBOREVCVUcKKyAgICAgICAgICAgIHByaW50ZigiRmFpbGVkIHdoaWxlIHRy
eWluZyB0byByZWFkICVzIGZvciB1cGxvYWRcbiIsIGVsZW1lbnQubV9maWxlbmFtZS51dGY4KCku
ZGF0YSgpKTsKKyNlbmRpZgorICAgICAgICAgICAgam9iLT5jYW5jZWwoKTsKKyAgICAgICAgICAg
IHJldHVybiAwOworICAgICAgICB9CisgICAgICAgIGlmIChmZW9mKGQtPm1fZmlsZSkpIHsKKyAg
ICAgICAgICAgIGZjbG9zZShkLT5tX2ZpbGUpOworICAgICAgICAgICAgZC0+bV9maWxlID0gMDsK
KyAgICAgICAgICAgIGQtPm1fZm9ybURhdGFFbGVtZW50SW5kZXgrKzsKKyAgICAgICAgfSAgICAg
ICAgICAgIAorICAgIH0gZWxzZSB7CisgICAgICAgIHNpemVfdCBlbGVtZW50U2l6ZSA9IGVsZW1l
bnQubV9kYXRhLnNpemUoKSAtIGQtPm1fZm9ybURhdGFFbGVtZW50RGF0YU9mZnNldDsKKyAgICAg
ICAgc2VudCA9IGVsZW1lbnRTaXplID4gdG9TZW5kID8gdG9TZW5kIDogZWxlbWVudFNpemU7Cisg
ICAgICAgIG1lbWNweShwdHIsIGVsZW1lbnQubV9kYXRhLmRhdGEoKStkLT5tX2Zvcm1EYXRhRWxl
bWVudERhdGFPZmZzZXQsIHNlbnQpOworICAgICAgICBpZiAoZWxlbWVudFNpemUgPiBzZW50KQor
ICAgICAgICAgICAgZC0+bV9mb3JtRGF0YUVsZW1lbnREYXRhT2Zmc2V0ICs9IHNlbnQ7CisgICAg
ICAgIGVsc2UgeworICAgICAgICAgICAgZC0+bV9mb3JtRGF0YUVsZW1lbnREYXRhT2Zmc2V0ID0g
MDsKKyAgICAgICAgICAgIGQtPm1fZm9ybURhdGFFbGVtZW50SW5kZXgrKzsKKyAgICAgICAgfQor
ICAgIH0KKworICAgIHJldHVybiBzZW50OworfQorCiB2b2lkIFJlc291cmNlSGFuZGxlTWFuYWdl
cjo6ZG93bmxvYWRUaW1lckNhbGxiYWNrKFRpbWVyPFJlc291cmNlSGFuZGxlTWFuYWdlcj4qIHRp
bWVyKQogewogICAgIHN0YXJ0U2NoZWR1bGVkSm9icygpOwpAQCAtMjg4LDQ5ICszNTMsNjYgQEAK
ICAgICBkLT5tX2hhbmRsZSA9IDA7CiB9CiAKLXZvaWQgUmVzb3VyY2VIYW5kbGVNYW5hZ2VyOjpz
ZXR1cFBVVChSZXNvdXJjZUhhbmRsZSopCit2b2lkIFJlc291cmNlSGFuZGxlTWFuYWdlcjo6c2V0
dXBQVVQoUmVzb3VyY2VIYW5kbGUqLCBzdHJ1Y3QgY3VybF9zbGlzdCoqKQogewogICAgIG5vdElt
cGxlbWVudGVkKCk7CiB9CiAKLXZvaWQgUmVzb3VyY2VIYW5kbGVNYW5hZ2VyOjpzZXR1cFBPU1Qo
UmVzb3VyY2VIYW5kbGUqIGpvYikKKy8qIENhbGN1bGF0ZSB0aGUgbGVuZ3RoIG9mIHRoZSBQT1NU
LgorICAgRm9yY2UgY2h1bmtlZCBkYXRhIHRyYW5zZmVyIGlmIHNpemUgb2YgZmlsZXMgY2FuJ3Qg
YmUgb2J0YWluZWQuCisgKi8KK3ZvaWQgUmVzb3VyY2VIYW5kbGVNYW5hZ2VyOjpzZXR1cFBPU1Qo
UmVzb3VyY2VIYW5kbGUqIGpvYiwgc3RydWN0IGN1cmxfc2xpc3QqKiBoZWFkZXJzKQogewogICAg
IFJlc291cmNlSGFuZGxlSW50ZXJuYWwqIGQgPSBqb2ItPmdldEludGVybmFsKCk7CisgICAgVmVj
dG9yPEZvcm1EYXRhRWxlbWVudD4gZWxlbWVudHMgPSBqb2ItPnJlcXVlc3QoKS5odHRwQm9keSgp
LT5lbGVtZW50cygpOworICAgIHNpemVfdCBudW1FbGVtZW50cyA9IGVsZW1lbnRzLnNpemUoKTsK
IAotICAgIGpvYi0+cmVxdWVzdCgpLmh0dHBCb2R5KCktPmZsYXR0ZW4oZC0+bV9wb3N0Qnl0ZXMp
OwotICAgIGlmIChkLT5tX3Bvc3RCeXRlcy5zaXplKCkgIT0gMCkgewotICAgICAgICBjdXJsX2Vh
c3lfc2V0b3B0KGQtPm1faGFuZGxlLCBDVVJMT1BUX1BPU1QsIFRSVUUpOwotICAgICAgICBjdXJs
X2Vhc3lfc2V0b3B0KGQtPm1faGFuZGxlLCBDVVJMT1BUX1BPU1RGSUVMRFNJWkUsIGQtPm1fcG9z
dEJ5dGVzLnNpemUoKSk7Ci0gICAgICAgIGN1cmxfZWFzeV9zZXRvcHQoZC0+bV9oYW5kbGUsIENV
UkxPUFRfUE9TVEZJRUxEUywgZC0+bV9wb3N0Qnl0ZXMuZGF0YSgpKTsKKyAgICBpZiAoIW51bUVs
ZW1lbnRzKQorICAgICAgICByZXR1cm47CisKKyAgICAvLyBEbyBub3Qgc3RyZWFtIGZvciBzaW1w
bGUgUE9TVCBkYXRhCisgICAgaWYgKG51bUVsZW1lbnRzID09IDEpIHsKKyAgICAgICAgam9iLT5y
ZXF1ZXN0KCkuaHR0cEJvZHkoKS0+ZmxhdHRlbihkLT5tX3Bvc3RCeXRlcyk7CisgICAgICAgIGlm
IChkLT5tX3Bvc3RCeXRlcy5zaXplKCkgIT0gMCkgeworICAgICAgICAgICAgY3VybF9lYXN5X3Nl
dG9wdChkLT5tX2hhbmRsZSwgQ1VSTE9QVF9QT1NULCBUUlVFKTsKKyAgICAgICAgICAgIGN1cmxf
ZWFzeV9zZXRvcHQoZC0+bV9oYW5kbGUsIENVUkxPUFRfUE9TVEZJRUxEU0laRSwgZC0+bV9wb3N0
Qnl0ZXMuc2l6ZSgpKTsKKyAgICAgICAgICAgIGN1cmxfZWFzeV9zZXRvcHQoZC0+bV9oYW5kbGUs
IENVUkxPUFRfUE9TVEZJRUxEUywgZC0+bV9wb3N0Qnl0ZXMuZGF0YSgpKTsgCisgICAgICAgIH0K
KyAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIFZlY3RvcjxGb3JtRGF0YUVsZW1lbnQ+IGVs
ZW1lbnRzID0gam9iLT5yZXF1ZXN0KCkuaHR0cEJvZHkoKS0+ZWxlbWVudHMoKTsKLSAgICBzaXpl
X3Qgc2l6ZSA9IGVsZW1lbnRzLnNpemUoKTsKLSAgICBzdHJ1Y3QgY3VybF9odHRwcG9zdCogbGFz
dEl0ZW0gPSAwOwotICAgIHN0cnVjdCBjdXJsX2h0dHBwb3N0KiBwb3N0ID0gMDsKLSAgICBmb3Ig
KHNpemVfdCBpID0gMDsgaSA8IHNpemU7IGkrKykgewotICAgICAgICBpZiAoZWxlbWVudHNbaV0u
bV90eXBlICE9IEZvcm1EYXRhRWxlbWVudDo6ZW5jb2RlZEZpbGUpCi0gICAgICAgICAgICBjb250
aW51ZTsKLSAgICAgICAgQ1N0cmluZyBjc3RyaW5nID0gZWxlbWVudHNbaV0ubV9maWxlbmFtZS51
dGY4KCk7Ci0gICAgICAgIEFTU0VSVCghZC0+bV9maWxlTmFtZSk7Ci0gICAgICAgIGQtPm1fZmls
ZU5hbWUgPSBzdHJkdXAoY3N0cmluZy5kYXRhKCkpOworICAgIC8vIE9idGFpbiB0aGUgdG90YWwg
c2l6ZSBvZiB0aGUgUE9TVAorICAgIHN0YXRpYyBjb25zdCBsb25nIGxvbmcgbWF4Q3VybE9mZlQg
PSAoMUxMIDw8IChzaXplb2YoY3VybF9vZmZfdCkqOCAtIDEpKSAtIDE7CisgICAgY3VybF9vZmZf
dCBzaXplID0gMDsKKyAgICBib29sIGNodW5rZWRUcmFuc2ZlciA9IGZhbHNlOworICAgIGZvciAo
c2l6ZV90IGkgPSAwOyBpIDwgbnVtRWxlbWVudHM7IGkrKykgeworICAgICAgICBGb3JtRGF0YUVs
ZW1lbnQgZWxlbWVudCA9IGVsZW1lbnRzW2ldOworICAgICAgICBpZiAoZWxlbWVudC5tX3R5cGUg
PT0gRm9ybURhdGFFbGVtZW50OjplbmNvZGVkRmlsZSkgeworICAgICAgICAgICAgbG9uZyBsb25n
IGZpbGVTaXplUmVzdWx0OworICAgICAgICAgICAgaWYgKGZpbGVTaXplKGVsZW1lbnQubV9maWxl
bmFtZSwgZmlsZVNpemVSZXN1bHQpKSB7CisgICAgICAgICAgICAgICAgaWYgKGZpbGVTaXplUmVz
dWx0ID4gbWF4Q3VybE9mZlQpIHsKKyAgICAgICAgICAgICAgICAgICAgLy8gRmlsZSBzaXplIGlz
IHRvbyBiaWcgZm9yIHNwZWNpZnlpbmcgaXQgdG8gY1VSTAorICAgICAgICAgICAgICAgICAgICBj
aHVua2VkVHJhbnNmZXIgPSB0cnVlOworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgc2l6ZSArPSBmaWxlU2l6ZVJlc3VsdDsKKyAg
ICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgY2h1bmtlZFRyYW5zZmVyID0gdHJ1
ZTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSBlbHNl
CisgICAgICAgICAgICBzaXplICs9IGVsZW1lbnRzW2ldLm1fZGF0YS5zaXplKCk7CisgICAgfQog
Ci0gICAgICAgIC8vIEZpbGwgaW4gdGhlIGZpbGUgdXBsb2FkIGZpZWxkCi0gICAgICAgIGN1cmxf
Zm9ybWFkZCgmcG9zdCwgJmxhc3RJdGVtLCBDVVJMRk9STV9DT1BZTkFNRSwgInNlbmRmaWxlIiwg
Q1VSTEZPUk1fRklMRSwgZC0+bV9maWxlTmFtZSwgQ1VSTEZPUk1fRU5EKTsKKyAgICBjdXJsX2Vh
c3lfc2V0b3B0KGQtPm1faGFuZGxlLCBDVVJMT1BUX1BPU1QsIFRSVUUpOwogCi0gICAgICAgIC8v
IEZpbGwgaW4gdGhlIGZpbGVuYW1lIGZpZWxkCi0gICAgICAgIGN1cmxfZm9ybWFkZCgmcG9zdCwg
Jmxhc3RJdGVtLCBDVVJMRk9STV9DT1BZTkFNRSwgImZpbGVuYW1lIiwgQ1VSTEZPUk1fQ09QWUNP
TlRFTlRTLCBkLT5tX2ZpbGVOYW1lLCBDVVJMRk9STV9FTkQpOworICAgIGlmIChjaHVua2VkVHJh
bnNmZXIpIC8vIGNVUkwgZ3Vlc3NlcyB3ZSB3YW50IGNodW5rZWQgZW5jb2RpbmcgaWYgd2Ugc3Bl
Y2lmeSB0aGUgaGVhZGVyIGJlbG93CisgICAgICAgICpoZWFkZXJzID0gY3VybF9zbGlzdF9hcHBl
bmQoKmhlYWRlcnMsICJUcmFuc2Zlci1FbmNvZGluZzogY2h1bmtlZCIpOworICAgIGVsc2UKKyAg
ICAgICAgY3VybF9lYXN5X3NldG9wdChkLT5tX2hhbmRsZSwgQ1VSTE9QVF9QT1NURklFTERTSVpF
X0xBUkdFLCBzaXplKTsKIAotICAgICAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIG5vdCBhZGQgYSAi
c3VibWl0IiBmaWVsZCBmb3IgZWFjaCBmaWxlIHVwbG9hZGVkLiBSZXZpZXcgdGhpcyBjb2RlLgot
ICAgICAgICAvLyBGaWxsIGluIHRoZSBzdWJtaXQgZmllbGQgdG9vLCBldmVuIGlmIHRoaXMgaXMg
cmFyZWx5IG5lZWRlZAotICAgICAgICBjdXJsX2Zvcm1hZGQoJnBvc3QsICZsYXN0SXRlbSwgQ1VS
TEZPUk1fQ09QWU5BTUUsICJzdWJtaXQiLCBDVVJMRk9STV9DT1BZQ09OVEVOVFMsICJzZW5kIiwg
Q1VSTEZPUk1fRU5EKTsKLQotICAgICAgICAvLyBGSVhNRTogc2hvdWxkIHdlIHN1cHBvcnQgbW9y
ZSB0aGFuIG9uZSBmaWxlPwotICAgICAgICBicmVhazsKLSAgICB9Ci0KLSAgICBpZiAocG9zdCkK
LSAgICAgICAgY3VybF9lYXN5X3NldG9wdChkLT5tX2hhbmRsZSwgQ1VSTE9QVF9IVFRQUE9TVCwg
cG9zdCk7CisgICAgY3VybF9lYXN5X3NldG9wdChkLT5tX2hhbmRsZSwgQ1VSTE9QVF9SRUFERlVO
Q1RJT04sIHJlYWRDYWxsYmFjayk7CisgICAgY3VybF9lYXN5X3NldG9wdChkLT5tX2hhbmRsZSwg
Q1VSTE9QVF9SRUFEREFUQSwgam9iKTsKIH0KIAogdm9pZCBSZXNvdXJjZUhhbmRsZU1hbmFnZXI6
OmFkZChSZXNvdXJjZUhhbmRsZSogam9iKQpAQCAtNDcxLDggKzU1Myw4IEBACiAgICAgICAgIGN1
cmxfZWFzeV9zZXRvcHQoZC0+bV9oYW5kbGUsIENVUkxPUFRfQ09PS0lFSkFSLCBtX2Nvb2tpZUph
ckZpbGVOYW1lKTsKICAgICB9CiAKKyAgICBzdHJ1Y3QgY3VybF9zbGlzdCogaGVhZGVycyA9IDA7
CiAgICAgaWYgKGpvYi0+cmVxdWVzdCgpLmh0dHBIZWFkZXJGaWVsZHMoKS5zaXplKCkgPiAwKSB7
Ci0gICAgICAgIHN0cnVjdCBjdXJsX3NsaXN0KiBoZWFkZXJzID0gMDsKICAgICAgICAgSFRUUEhl
YWRlck1hcCBjdXN0b21IZWFkZXJzID0gam9iLT5yZXF1ZXN0KCkuaHR0cEhlYWRlckZpZWxkcygp
OwogICAgICAgICBIVFRQSGVhZGVyTWFwOjpjb25zdF9pdGVyYXRvciBlbmQgPSBjdXN0b21IZWFk
ZXJzLmVuZCgpOwogICAgICAgICBmb3IgKEhUVFBIZWFkZXJNYXA6OmNvbnN0X2l0ZXJhdG9yIGl0
ID0gY3VzdG9tSGVhZGVycy5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpIHsKQEAgLTQ4NCwxOSAr
NTY2LDIyIEBACiAgICAgICAgICAgICBDU3RyaW5nIGhlYWRlckxhdGluMSA9IGhlYWRlclN0cmlu
Zy5sYXRpbjEoKTsKICAgICAgICAgICAgIGhlYWRlcnMgPSBjdXJsX3NsaXN0X2FwcGVuZChoZWFk
ZXJzLCBoZWFkZXJMYXRpbjEuZGF0YSgpKTsKICAgICAgICAgfQotICAgICAgICBjdXJsX2Vhc3lf
c2V0b3B0KGQtPm1faGFuZGxlLCBDVVJMT1BUX0hUVFBIRUFERVIsIGhlYWRlcnMpOwotICAgICAg
ICBkLT5tX2N1c3RvbUhlYWRlcnMgPSBoZWFkZXJzOwogICAgIH0KIAogICAgIGlmICgiR0VUIiA9
PSBqb2ItPnJlcXVlc3QoKS5odHRwTWV0aG9kKCkpCiAgICAgICAgIGN1cmxfZWFzeV9zZXRvcHQo
ZC0+bV9oYW5kbGUsIENVUkxPUFRfSFRUUEdFVCwgVFJVRSk7CiAgICAgZWxzZSBpZiAoIlBPU1Qi
ID09IGpvYi0+cmVxdWVzdCgpLmh0dHBNZXRob2QoKSkKLSAgICAgICAgc2V0dXBQT1NUKGpvYik7
CisgICAgICAgIHNldHVwUE9TVChqb2IsICZoZWFkZXJzKTsKICAgICBlbHNlIGlmICgiUFVUIiA9
PSBqb2ItPnJlcXVlc3QoKS5odHRwTWV0aG9kKCkpCi0gICAgICAgIHNldHVwUFVUKGpvYik7Cisg
ICAgICAgIHNldHVwUFVUKGpvYiwgJmhlYWRlcnMpOwogICAgIGVsc2UgaWYgKCJIRUFEIiA9PSBq
b2ItPnJlcXVlc3QoKS5odHRwTWV0aG9kKCkpCiAgICAgICAgIGN1cmxfZWFzeV9zZXRvcHQoZC0+
bV9oYW5kbGUsIENVUkxPUFRfTk9CT0RZLCBUUlVFKTsKIAorICAgIGlmIChoZWFkZXJzKSB7Cisg
ICAgICAgIGN1cmxfZWFzeV9zZXRvcHQoZC0+bV9oYW5kbGUsIENVUkxPUFRfSFRUUEhFQURFUiwg
aGVhZGVycyk7CisgICAgICAgIGQtPm1fY3VzdG9tSGVhZGVycyA9IGhlYWRlcnM7CisgICAgfQor
CiAgICAgbV9ydW5uaW5nSm9icysrOwogICAgIENVUkxNY29kZSByZXQgPSBjdXJsX211bHRpX2Fk
ZF9oYW5kbGUobV9jdXJsTXVsdGlIYW5kbGUsIGQtPm1faGFuZGxlKTsKICAgICAvLyBkb24ndCBj
YWxsIHBlcmZvcm0sIGJlY2F1c2UgZXZlbnRzIG11c3QgYmUgYXN5bmMKQEAgLTUxNSwxMSArNjAw
LDEwIEBACiAgICAgaWYgKHJlbW92ZVNjaGVkdWxlZEpvYihqb2IpKQogICAgICAgICByZXR1cm47
CiAKLSAgICBpZiAobV9kb3dubG9hZFRpbWVyLmlzQWN0aXZlKCkpIHsKLSAgICAgICAgUmVzb3Vy
Y2VIYW5kbGVJbnRlcm5hbCogZCA9IGpvYi0+Z2V0SW50ZXJuYWwoKTsKLSAgICAgICAgZC0+bV9j
YW5jZWxsZWQgPSB0cnVlOwotICAgIH0gZWxzZQotICAgICAgICByZW1vdmVGcm9tQ3VybChqb2Ip
OworICAgIFJlc291cmNlSGFuZGxlSW50ZXJuYWwqIGQgPSBqb2ItPmdldEludGVybmFsKCk7Cisg
ICAgZC0+bV9jYW5jZWxsZWQgPSB0cnVlOworICAgIGlmICghbV9kb3dubG9hZFRpbWVyLmlzQWN0
aXZlKCkpCisgICAgICAgIG1fZG93bmxvYWRUaW1lci5zdGFydE9uZVNob3QocG9sbFRpbWVTZWNv
bmRzKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL2N1cmwvUmVzb3VyY2VIYW5kbGVNYW5hZ2VyLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvUmVzb3VyY2VIYW5kbGVNYW5hZ2VyLmgJKHJldmlz
aW9uIDI5MjI1KQorKysgV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvUmVzb3VyY2VIYW5k
bGVNYW5hZ2VyLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ0LDggKzQ0LDggQEAKICAgICB2b2lkIGNh
bmNlbChSZXNvdXJjZUhhbmRsZSopOwogICAgIHZvaWQgc2V0Q29va2llSmFyRmlsZU5hbWUoY29u
c3QgY2hhciogY29va2llSmFyRmlsZU5hbWUpOwogCi0gICAgdm9pZCBzZXR1cFBPU1QoUmVzb3Vy
Y2VIYW5kbGUqKTsKLSAgICB2b2lkIHNldHVwUFVUKFJlc291cmNlSGFuZGxlKik7CisgICAgdm9p
ZCBzZXR1cFBPU1QoUmVzb3VyY2VIYW5kbGUqLCBzdHJ1Y3QgY3VybF9zbGlzdCoqKTsKKyAgICB2
b2lkIHNldHVwUFVUKFJlc291cmNlSGFuZGxlKiwgc3RydWN0IGN1cmxfc2xpc3QqKik7CiAKIHBy
aXZhdGU6CiAgICAgUmVzb3VyY2VIYW5kbGVNYW5hZ2VyKCk7CkluZGV4OiBXZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvY3VybC9SZXNvdXJjZUhhbmRsZUN1cmwuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL1Jlc291cmNlSGFuZGxlQ3VybC5jcHAJKHJldmlz
aW9uIDI5MjI1KQorKysgV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvUmVzb3VyY2VIYW5k
bGVDdXJsLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzgsOSArMzgsMTAgQEAKIFJlc291cmNlSGFu
ZGxlSW50ZXJuYWw6On5SZXNvdXJjZUhhbmRsZUludGVybmFsKCkKIHsKICAgICBmcmVlKG1fdXJs
KTsKLSAgICBmcmVlKG1fZmlsZU5hbWUpOwogICAgIGlmIChtX2N1c3RvbUhlYWRlcnMpCiAgICAg
ICAgIGN1cmxfc2xpc3RfZnJlZV9hbGwobV9jdXN0b21IZWFkZXJzKTsKKyAgICBpZiAobV9maWxl
KQorICAgICAgICBmY2xvc2UobV9maWxlKTsKIH0KIAogUmVzb3VyY2VIYW5kbGU6On5SZXNvdXJj
ZUhhbmRsZSgpCkluZGV4OiBXZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3Jl
L0NoYW5nZUxvZwkocmV2aXNpb24gMjkyMjYpCisrKyBXZWJDb3JlL0NoYW5nZUxvZwkod29ya2lu
ZyBjb3B5KQpAQCAtMSwzICsxLDIxIEBACisyMDA4LTAxLTA3ICBMdWNhIEJydW5vICA8bGV0aGFs
bWFuODhAZ21haWwuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisJaHR0cDovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY3MjkKKwlbY1VSTF0g
QWxsb3cgbXVsdGlwbGUgZmlsZXMgZm9yIHVwbG9hZAorCisgICAgICAgICogcGxhdGZvcm0vbmV0
d29yay9SZXNvdXJjZUhhbmRsZUludGVybmFsLmg6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJj
ZUhhbmRsZUludGVybmFsOjpSZXNvdXJjZUhhbmRsZUludGVybmFsKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9uZXR3b3JrL2N1cmwvUmVzb3VyY2VIYW5kbGVDdXJsLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlJlc291cmNlSGFuZGxlSW50ZXJuYWw6On5SZXNvdXJjZUhhbmRsZUludGVybmFsKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2N1cmwvUmVzb3VyY2VIYW5kbGVNYW5hZ2VyLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OnJlYWRDYWxsYmFjayk6IGFkZGVkCisgICAgICAgIChXZWJDb3Jl
OjpSZXNvdXJjZUhhbmRsZU1hbmFnZXI6OnNldHVwUE9TVCk6IHNldHVwIGZvciBzdHJlYW1pbmcg
dGhlIFBPU1QKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlSGFuZGxlTWFuYWdlcjo6c3RhcnRK
b2IpOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VIYW5kbGVNYW5hZ2VyOjpjYW5jZWwpOiBy
ZXZlcnQgdGhlIHByZXZpb3VzIHBhdGNoIGZvciByZWdyZXNzaW9uCisgICAgICAgICogcGxhdGZv
cm0vbmV0d29yay9jdXJsL1Jlc291cmNlSGFuZGxlTWFuYWdlci5oOgorCiAyMDA4LTAxLTA3ICBU
aGlhZ28gTWFjaWVpcmEgIDx0aGlhZ28ubWFjaWVpcmFAdHJvbGx0ZWNoLmNvbT4KIAogICAgICAg
ICBSZXZpZXdlZCBieSBTaW1vbi4K
</data>
<flag name="review"
          id="7989"
          type_id="1"
          status="+"
          setter="alp"
    />
          </attachment>
      

    </bug>

</bugzilla>