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

<bugzilla version="5.0.6"
          urlbase="https://bugzilla.yoctoproject.org/"
          
          maintainer="it-coreprojects-helpdesk@linuxfoundation.org"
>

    <bug>
          <bug_id>15559</bug_id>
          
          <creation_ts>2024-07-24 12:36:25 +0000</creation_ts>
          <short_desc>open(O_CREAT|O_EXCL) erroneously resolves symlinks</short_desc>
          <delta_ts>2024-07-25 19:25:36 +0000</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>6</classification_id>
          <classification>Yocto Project Subprojects</classification>
          <product>Pseudo</product>
          <component>pseudo</component>
          <version>master</version>
          <rep_platform>x86</rep_platform>
          <op_sys>Multiple</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>Medium+</priority>
          <bug_severity>normal</bug_severity>
          <target_milestone>5.1 M3</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Simon Lindholm">simon.lindholm</reporter>
          <assigned_to name="Mark Hatle">mark.hatle</assigned_to>
          <cc>hongxu.jia</cc>
    
    <cc>mark.hatle</cc>
    
    <cc>randy.macleod</cc>
    
    <cc>yp.pseudo.watcher</cc>
    
    <cc>yp.watcher</cc>
          
          
          <cf_os>---</cf_os>
          <cf_regression_type>---</cf_regression_type>
          
          <cf_docchange>No (bug/feature does not impact docs)</cf_docchange>

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>99424</commentid>
    <comment_count>0</comment_count>
      <attachid>5060</attachid>
    <who name="Simon Lindholm">simon.lindholm</who>
    <bug_when>2024-07-24 12:36:25 +0000</bug_when>
    <thetext>Created attachment 5060
Patch for the bug, with some test cases.

In Linux, in a call to open(pathname, O_CREAT|O_EXCL, ...), if pathname exists and is a symlink, pseudo will resolve the symlink instead immediately setting errno to EEXIST - which is what will happen when running without psuedo (i.e. O_CREAT|O_EXCL implies O_NOFOLLOW).

For instance, consider the following snippet:

$ cat -n pseudo_test.sh 
     1 #!/bin/sh -e
     2 
     3 ln -s noexist.txt some_link
     4 
     5 py_code=&quot;&quot;&quot;
     6 import os
     7 try:
     8     os.open(&apos;some_link&apos;, os.O_RDWR | os.O_CREAT | os.O_EXCL)
     9     print(&apos;Success&apos;)
    10 except OSError as e:
    11     print(os.strerror(e.errno))
    12 &quot;&quot;&quot;
    13 
    14 echo -n &quot;Without psuedo: &quot; &amp;&amp; python3 -c &quot;$py_code&quot;
    15 echo -n &quot;With psuedo: &quot; &amp;&amp; pseudo python3 -c &quot;$py_code&quot;

$ ./pseudo_test.sh 
Without psuedo: File exists
With psuedo: Success

Issues from this could potentially manifest itself in various different ways, but this bug was discovered while investigating problems with a bitbake recipe that had a fakeroot-task in which it extracted a tar file containing symlinks. The first time the task was run it worked as expected, but when run again, tar ran into problems. When extracting files from a tar-archive, GNU tar will first try open(O_CREAT|O_EXCL), and if that doesn&apos;t succeed, check errno and if it&apos;s EEXIST it will remove the file, but if it gets e.g. ENOENT or EACCES (which would happen with some symlinks when they were resolved), then it will consider that an unrecoverable error.

I&apos;m attaching a patch to fix this bug (with some added test cases).

The patch changes the flags for the different open calls (open, openat, open64, etc.) in ports/linux/wrapfuncs.in from flags=flags&amp;O_NOFOLLOW to flags=flags&amp;(O_NOFOLLOW|O_EXCL). 

In the generated pseudo_wrapfuncs.c the &apos;flags&apos; from wrapfuncs.in are used for the &apos;leave_last&apos; argument to pseudo_root_path(), i.e. by changing from just O_NOFOLLOW to O_NOFOLLOW|O_EXCL, &apos;leave_last&apos; will be non-zero if either O_NOFOLLOW or O_EXCL is set (i.e. don&apos;t resolve symlink if O_EXCL is set).

The patch is for master, but the bug is also present in release 1.9.0 (and probably earlier).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>99453</commentid>
    <comment_count>1</comment_count>
    <who name="Mark Hatle">mark.hatle</who>
    <bug_when>2024-07-25 18:23:24 +0000</bug_when>
    <thetext>Reviewed the proposed change.  Consulting the open(2) man page, it indicates that O_EXCL behavior is &apos;undefined&apos; unless used with O_CREAT.  When both O_EXCL and O_CREAT are specified symbolic links are NOT followed.  (O_NOFOLLOW behavior).  There is an exception to block devices, but I don&apos;t believe that applies in this case.

Additionally looking through the Linux 6.6.30 sources, I see that Linux assumes that
O_CREAT|O_EXCL implies O_NOFOLLOW.  (fs/open.c: build_open_flags(...))

So based on these two references, I think a fully &quot;correct/complete&quot; solution would set the flag if O_NOFOLLOW or (O_CREAT and O_EXCL) are set.   But I&apos;m not sure that sort of logic operation is possible in the wrappers.  I&apos;m still investigating this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>99454</commentid>
    <comment_count>2</comment_count>
      <attachid>5063</attachid>
    <who name="Mark Hatle">mark.hatle</who>
    <bug_when>2024-07-25 19:24:00 +0000</bug_when>
    <thetext>Created attachment 5063
Revised patch

Patch was revised from original version to make the check more specific to how the Linux kernel handles the flags.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>99455</commentid>
    <comment_count>3</comment_count>
    <who name="Mark Hatle">mark.hatle</who>
    <bug_when>2024-07-25 19:25:36 +0000</bug_when>
    <thetext>Revised patch has been sent to the yocto-patches list for inclusion.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>5060</attachid>
            <date>2024-07-24 12:36:25 +0000</date>
            <delta_ts>2024-07-25 19:24:00 +0000</delta_ts>
            <desc>Patch for the bug, with some test cases.</desc>
            <filename>0001-Bugfix-for-Linux-open-O_CREAT-O_EXCL.patch</filename>
            <type>text/plain</type>
            <size>7284</size>
            <attacher name="Simon Lindholm">simon.lindholm</attacher>
            
              <data encoding="base64">RnJvbSA3MTU5M2M4M2I4MjUyZWU5NzYwNGM0YjcyOTZlOWY1MGZmZjBhOTg3IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBTaW1vbiBMaW5kaG9sbSA8c2ltb24ubGluZGhvbG1Adm9sdm9j
YXJzLmNvbT4KRGF0ZTogV2VkLCAyNCBKdWwgMjAyNCAxMzoyOTo0NCArMDIwMApTdWJqZWN0OiBb
UEFUQ0hdIEJ1Z2ZpeCBmb3IgTGludXggb3BlbihPX0NSRUFUfE9fRVhDTCkKCkluIExpbnV4LCB3
aGVuIGNhbGxpbmcgb3BlbihwYXRoLCBPX0NSRUFUfE9fRVhDTCkgaXQgaW1wbGllcyBPX05PRk9M
TE9XLgpJZiB0aGUgcGF0aCBleGlzdHMgYW5kIGlzIGEgc3ltbGluaywgdGhlIGxpbmsgc2hvdWxk
bid0IGJlIHJlc29sdmVkIGJ1dApyYXRoZXIganVzdCBmYWlsIGRpcmVjdGx5IHdpdGggRUVYSVNU
LiBSZXNvbHZpbmcgdGhlIHN5bWxpbmsgY2F1c2VzCnByb2JsZW1zIHdpdGggZS5nLiBleHRyYWN0
aW5nIGZpbGVzIHdpdGggR05VIHRhciB3aGVyZSBzdHJhbmdlIGVycm9ycwplbnN1ZSB3aGVuIGl0
IHRyaWVzIHRvIG92ZXJ3cml0ZSBhbiBleGlzdGluZyBzeW1saW5rLgoKRml4IHRoZSBidWcgYnkg
bm90IHJlc29sdmluZyBzeW1saW5rcyBmb3Igb3BlbiAoYW5kIHRoZSByZWxhdGVkCmZ1bmN0aW9u
cykgaWYgT19FWENMIGlzIHNldC4KLS0tCiBwb3J0cy9saW51eC93cmFwZnVuY3MuaW4gICB8IDEw
ICsrLS0KIHRlc3QvdGVzdC1vcGVuLXN5bWxpbmtzLmMgIHwgOTkgKysrKysrKysrKysrKysrKysr
KysrKysrKysrKysrKysrKysrKysKIHRlc3QvdGVzdC1vcGVuLXN5bWxpbmtzLnNoIHwgMTggKysr
KysrKwogMyBmaWxlcyBjaGFuZ2VkLCAxMjIgaW5zZXJ0aW9ucygrKSwgNSBkZWxldGlvbnMoLSkK
IGNyZWF0ZSBtb2RlIDEwMDY0NCB0ZXN0L3Rlc3Qtb3Blbi1zeW1saW5rcy5jCiBjcmVhdGUgbW9k
ZSAxMDA3NTUgdGVzdC90ZXN0LW9wZW4tc3ltbGlua3Muc2gKCmRpZmYgLS1naXQgYS9wb3J0cy9s
aW51eC93cmFwZnVuY3MuaW4gYi9wb3J0cy9saW51eC93cmFwZnVuY3MuaW4KaW5kZXggOTdiMTZj
Mi4uNjhjZTNjZCAxMDA2NDQKLS0tIGEvcG9ydHMvbGludXgvd3JhcGZ1bmNzLmluCisrKyBiL3Bv
cnRzL2xpbnV4L3dyYXBmdW5jcy5pbgpAQCAtMSw0ICsxLDQgQEAKLWludCBvcGVuKGNvbnN0IGNo
YXIgKnBhdGgsIGludCBmbGFncywgLi4ue21vZGVfdCBtb2RlfSk7IC8qIGZsYWdzPWZsYWdzJk9f
Tk9GT0xMT1csIG5vaWdub3JlX3BhdGg9MSAqLworaW50IG9wZW4oY29uc3QgY2hhciAqcGF0aCwg
aW50IGZsYWdzLCAuLi57bW9kZV90IG1vZGV9KTsgLyogZmxhZ3M9ZmxhZ3MmKE9fTk9GT0xMT1d8
T19FWENMKSwgbm9pZ25vcmVfcGF0aD0xICovCiBjaGFyICpnZXRfY3VycmVudF9kaXJfbmFtZSh2
b2lkKTsKIGludCBfX3hzdGF0KGludCB2ZXIsIGNvbnN0IGNoYXIgKnBhdGgsIHN0cnVjdCBzdGF0
ICpidWYpOwogaW50IF9fbHhzdGF0KGludCB2ZXIsIGNvbnN0IGNoYXIgKnBhdGgsIHN0cnVjdCBz
dGF0ICpidWYpOyAvKiBmbGFncz1BVF9TWU1MSU5LX05PRk9MTE9XICovCkBAIC02LDggKzYsOCBA
QCBpbnQgX19meHN0YXQoaW50IHZlciwgaW50IGZkLCBzdHJ1Y3Qgc3RhdCAqYnVmKTsKIGludCBs
Y2htb2QoY29uc3QgY2hhciAqcGF0aCwgbW9kZV90IG1vZGUpOyAvKiBmbGFncz1BVF9TWU1MSU5L
X05PRk9MTE9XICovCiBpbnQgbGNob3duKGNvbnN0IGNoYXIgKnBhdGgsIHVpZF90IG93bmVyLCBn
aWRfdCBncm91cCk7IC8qIGZsYWdzPUFUX1NZTUxJTktfTk9GT0xMT1cgKi8KIGludCBfX2Z4c3Rh
dGF0KGludCB2ZXIsIGludCBkaXJmZCwgY29uc3QgY2hhciAqcGF0aCwgc3RydWN0IHN0YXQgKmJ1
ZiwgaW50IGZsYWdzKTsKLWludCBvcGVuYXQoaW50IGRpcmZkLCBjb25zdCBjaGFyICpwYXRoLCBp
bnQgZmxhZ3MsIC4uLnttb2RlX3QgbW9kZX0pOyAvKiBmbGFncz1mbGFncyZPX05PRk9MTE9XLCBu
b2lnbm9yZV9wYXRoPTEgKi8KLWludCBfX29wZW5hdF8yKGludCBkaXJmZCwgY29uc3QgY2hhciAq
cGF0aCwgaW50IGZsYWdzKTsgLyogZmxhZ3M9ZmxhZ3MmT19OT0ZPTExPVywgbm9pZ25vcmVfcGF0
aD0xICovCitpbnQgb3BlbmF0KGludCBkaXJmZCwgY29uc3QgY2hhciAqcGF0aCwgaW50IGZsYWdz
LCAuLi57bW9kZV90IG1vZGV9KTsgLyogZmxhZ3M9ZmxhZ3MmKE9fTk9GT0xMT1d8T19FWENMKSwg
bm9pZ25vcmVfcGF0aD0xICovCitpbnQgX19vcGVuYXRfMihpbnQgZGlyZmQsIGNvbnN0IGNoYXIg
KnBhdGgsIGludCBmbGFncyk7IC8qIGZsYWdzPWZsYWdzJihPX05PRk9MTE9XfE9fRVhDTCksIG5v
aWdub3JlX3BhdGg9MSAqLwogaW50IG1rbm9kKGNvbnN0IGNoYXIgKnBhdGgsIG1vZGVfdCBtb2Rl
LCBkZXZfdCBkZXYpOyAvKiByZWFsX2Z1bmM9cHNldWRvX21rbm9kICovCiBpbnQgbWtub2RhdChp
bnQgZGlyZmQsIGNvbnN0IGNoYXIgKnBhdGgsIG1vZGVfdCBtb2RlLCBkZXZfdCBkZXYpOyAvKiBy
ZWFsX2Z1bmM9cHNldWRvX21rbm9kYXQgKi8KIGludCBfX3hta25vZChpbnQgdmVyLCBjb25zdCBj
aGFyICpwYXRoLCBtb2RlX3QgbW9kZSwgZGV2X3QgKmRldik7IC8qIGZsYWdzPUFUX1NZTUxJTktf
Tk9GT0xMT1cgKi8KQEAgLTE3LDkgKzE3LDkgQEAgaW50IGZjbnRsNjQoaW50IGZkLCBpbnQgY21k
LCAuLi57c3RydWN0IGZsb2NrICpsb2NrfSk7ICAvKiBub2lnbm9yZV9wYXRoPTEgKi8KICMganVz
dCBzbyB3ZSBrbm93IHRoZSBpbnVtcyBvZiBzeW1saW5rcwogY2hhciAqY2Fub25pY2FsaXplX2Zp
bGVfbmFtZShjb25zdCBjaGFyICpmaWxlbmFtZSk7CiBpbnQgZWFjY2Vzcyhjb25zdCBjaGFyICpw
YXRoLCBpbnQgbW9kZSk7Ci1pbnQgb3BlbjY0KGNvbnN0IGNoYXIgKnBhdGgsIGludCBmbGFncywg
Li4ue21vZGVfdCBtb2RlfSk7IC8qIGZsYWdzPWZsYWdzJk9fTk9GT0xMT1csIG5vaWdub3JlX3Bh
dGg9MSAqLworaW50IG9wZW42NChjb25zdCBjaGFyICpwYXRoLCBpbnQgZmxhZ3MsIC4uLnttb2Rl
X3QgbW9kZX0pOyAvKiBmbGFncz1mbGFncyYoT19OT0ZPTExPV3xPX0VYQ0wpLCBub2lnbm9yZV9w
YXRoPTEgKi8KIGludCBvcGVuYXQ2NChpbnQgZGlyZmQsIGNvbnN0IGNoYXIgKnBhdGgsIGludCBm
bGFncywgLi4ue21vZGVfdCBtb2RlfSk7IC8qIGZsYWdzPWZsYWdzJk9fTk9GT0xMT1csIG5vaWdu
b3JlX3BhdGg9MSAqLwotaW50IF9fb3BlbmF0NjRfMihpbnQgZGlyZmQsIGNvbnN0IGNoYXIgKnBh
dGgsIGludCBmbGFncyk7IC8qIGZsYWdzPWZsYWdzJk9fTk9GT0xMT1csIG5vaWdub3JlX3BhdGg9
MSAqLworaW50IF9fb3BlbmF0NjRfMihpbnQgZGlyZmQsIGNvbnN0IGNoYXIgKnBhdGgsIGludCBm
bGFncyk7IC8qIGZsYWdzPWZsYWdzJihPX05PRk9MTE9XfE9fRVhDTCksIG5vaWdub3JlX3BhdGg9
MSAqLwogaW50IGNyZWF0NjQoY29uc3QgY2hhciAqcGF0aCwgbW9kZV90IG1vZGUpOwogaW50IHN0
YXQoY29uc3QgY2hhciAqcGF0aCwgc3RydWN0IHN0YXQgKmJ1Zik7IC8qIHJlYWxfZnVuYz1wc2V1
ZG9fc3RhdCAqLwogaW50IGxzdGF0KGNvbnN0IGNoYXIgKnBhdGgsIHN0cnVjdCBzdGF0ICpidWYp
OyAvKiByZWFsX2Z1bmM9cHNldWRvX2xzdGF0LCBmbGFncz1BVF9TWU1MSU5LX05PRk9MTE9XICov
CmRpZmYgLS1naXQgYS90ZXN0L3Rlc3Qtb3Blbi1zeW1saW5rcy5jIGIvdGVzdC90ZXN0LW9wZW4t
c3ltbGlua3MuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40YmI1YTg3Ci0t
LSAvZGV2L251bGwKKysrIGIvdGVzdC90ZXN0LW9wZW4tc3ltbGlua3MuYwpAQCAtMCwwICsxLDk5
IEBACisjaW5jbHVkZSA8c3RkaW8uaD4KKyNpbmNsdWRlIDxzdGRib29sLmg+CisjaW5jbHVkZSA8
c3lzL3R5cGVzLmg+CisjaW5jbHVkZSA8c3lzL3N0YXQuaD4KKyNpbmNsdWRlIDxmY250bC5oPgor
I2luY2x1ZGUgPGVycm5vLmg+CisjaW5jbHVkZSA8dW5pc3RkLmg+CisjaW5jbHVkZSA8c3RyaW5n
Lmg+CisKKworc3RydWN0IHRlc3RjYXNlIHsKKyAgICBjb25zdCBjaGFyICogcGF0aG5hbWU7Cisg
ICAgaW50IGZsYWdzOworICAgIG1vZGVfdCBtb2RlOworICAgIGludCBleHBlY3RlZF9lcnJubzsK
K307CisKKy8qCisqIExpc3Qgb2YgdGVzdCBjYXNlcyB0byBydW4uIFRoZSBmaWxlcyAoZ2l2ZW4g
YnkgJ3BhdGhuYW1lJykgYXJlIGV4cGVjdGVkIHRvIGJlCisqIHNldHVwIGJ5IHRlc3Qtb3Blbi1z
eW1saW5rcy5zaC4KKyovCitzdGF0aWMgY29uc3Qgc3RydWN0IHRlc3RjYXNlIHRlc3RjYXNlc1td
ID0geworICAgIHsgImEiLCBPX1dST05MWXxPX0NSRUFUfE9fRVhDTCwgMDY0NCwgRUVYSVNUIH0s
CisgICAgeyAiYSIsIE9fUkRXUnxPX0NSRUFUfE9fRVhDTCwgMDY0NCwgRUVYSVNUIH0sCisgICAg
eyAiYiIsIE9fV1JPTkxZfE9fQ1JFQVR8T19FWENMLCAwNjQ0LCBFRVhJU1QgfSwKKyAgICB7ICJi
IiwgT19SRFdSfE9fQ1JFQVR8T19FWENMLCAwNjQ0LCBFRVhJU1QgfSwKKyAgICB7IE5VTEwgfQor
fTsKKworc3RhdGljIGJvb2wgcnVuX3Rlc3RjYXNlKGNvbnN0IGNoYXIgKiBwcm9nbmFtZSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdHJ1Y3QgdGVzdGNhc2UgKiB0ZXN0Y2FzZSk7
CisKK3N0YXRpYyBpbnQgdHJ5X29wZW4oY29uc3QgY2hhciAqIHBhdGhuYW1lLCBpbnQgZmxhZ3Ms
IG1vZGVfdCBtb2RlKTsKKworLyoKKyogR2l2ZW4gYSBkaXJlY3RvcnkgKHdoaWNoIGlzIGV4cGVj
dGVkIHRvIGJlIHNldHVwIGNvbnRhaW5pbmcgc29tZSBmaWxlcyBieQorKiB0ZXN0LW9wZW4tc3lt
bGlua3Muc2gpLCBsb29wIHRocm91Z2ggdGhlIHRlc3QgY2FzZXMgbGlzdGVkIGFib3ZlIGFuZCBj
aGVjaworKiB0aGF0IHdoZW4gY2FsbGluZyBvcGVuKHBhdGhuYW1lLCBmbGFncywgbW9kZSksIGVy
cm5vIGlzIHNldCB0byB0aGUgZXhwZWN0ZWQKKyogdmFsdWUuCisqLworaW50IG1haW4oaW50IGFy
Z2MsIGNoYXIgKmFyZ3ZbXSkgeworICAgIGNvbnN0IGNoYXIgKiBwcm9nbmFtZSA9IGFyZ3ZbMF07
CisKKyAgICBpZiAoYXJnYyAhPSAyKSB7CisgICAgICAgIGZwcmludGYoc3RkZXJyLCAidXNhZ2U6
ICVzIDxkaXI+XG4iLCBwcm9nbmFtZSk7CisgICAgICAgIHJldHVybiAxOworICAgIH0KKworICAg
IGNvbnN0IGNoYXIgKiBkaXJuYW1lID0gYXJndlsxXTsKKyAgICBpZiAoY2hkaXIoZGlybmFtZSkg
IT0gMCkgeworICAgICAgICBwZXJyb3IoZGlybmFtZSk7CisgICAgICAgIHJldHVybiAxOworICAg
IH0KKworICAgIGJvb2wgb2sgPSB0cnVlOworCisgICAgZm9yIChpbnQgaSA9IDA7IHRlc3RjYXNl
c1tpXS5wYXRobmFtZTsgaSsrKSB7CisgICAgICAgIG9rICY9IHJ1bl90ZXN0Y2FzZShwcm9nbmFt
ZSwgJnRlc3RjYXNlc1tpXSk7CisgICAgfQorCisgICAgcmV0dXJuIG9rID8gMCA6IDE7Cit9CisK
Ky8qCisqIEdpdmVuIGEgdGVzdCBjYXNlIG9mIChwYXRobmFtZSwgZmxhZ3MsIG1vZGUsIGV4cGVj
dGVkX2Vycm5vKSwgb3BlbiB0aGUgZmlsZQorKiB3aXRoIHRoZSBnaXZlbiBhcmd1bWVudHMgYW5k
IHJldHVybiB0cnVlIGlmIHRoZSBhY3R1YWwgZXJybm8gbWF0Y2hlcyB0aGUKKyogZXhwZWN0ZWQg
b25lLCBvciBvdGhlcndpc2UgZmFsc2UuCisqLworc3RhdGljIGJvb2wgcnVuX3Rlc3RjYXNlKGNv
bnN0IGNoYXIgKiBwcm9nbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdHJ1
Y3QgdGVzdGNhc2UgKiB0ZXN0Y2FzZSkgeworCisgICAgaW50IGFjdHVhbF9lcnJubyA9IHRyeV9v
cGVuKHRlc3RjYXNlLT5wYXRobmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
dGVzdGNhc2UtPmZsYWdzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXN0Y2Fz
ZS0+bW9kZSk7CisKKyAgICBpZiAoYWN0dWFsX2Vycm5vICE9IHRlc3RjYXNlLT5leHBlY3RlZF9l
cnJubykgeworICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIiVzOiBvcGVuKCVzLCAweCV4LCAlbykg
LT4gJXMgKGV4cGVjdGVkOiAlcylcbiIsCisgICAgICAgICAgICAgICBwcm9nbmFtZSwgdGVzdGNh
c2UtPnBhdGhuYW1lLCB0ZXN0Y2FzZS0+ZmxhZ3MsIHRlc3RjYXNlLT5tb2RlLAorICAgICAgICAg
ICAgICAgc3RyZXJyb3IoYWN0dWFsX2Vycm5vKSwgc3RyZXJyb3IodGVzdGNhc2UtPmV4cGVjdGVk
X2Vycm5vKSk7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICByZXR1cm4gdHJ1
ZTsKK30KKworLyoKKyogb3BlbigpIGEgZmlsZSB3aXRoIHRoZSBnaXZlbiBmbGFncyBhbmQgbW9k
ZSBhbmQgcmV0dXJuIGVycm5vIChvciAwLCBpZiB0aGUKKyogZmlsZSB3YXMgc3VjY2Vzc2Z1bGx5
IG9wZW5lZCkuCisqLworc3RhdGljIGludCB0cnlfb3Blbihjb25zdCBjaGFyICogcGF0aG5hbWUs
IGludCBmbGFncywgbW9kZV90IG1vZGUpIHsKKyAgICBpbnQgZmQgPSBvcGVuKHBhdGhuYW1lLCBm
bGFncywgbW9kZSk7CisKKyAgICBpZiAoZmQgPj0gMCkgeworICAgICAgICBjbG9zZShmZCk7Cisg
ICAgICAgIHJldHVybiAwOworICAgIH0KKworICAgIHJldHVybiBlcnJubzsKK30KZGlmZiAtLWdp
dCBhL3Rlc3QvdGVzdC1vcGVuLXN5bWxpbmtzLnNoIGIvdGVzdC90ZXN0LW9wZW4tc3ltbGlua3Mu
c2gKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uYjU4Yzc1YwotLS0gL2Rldi9u
dWxsCisrKyBiL3Rlc3QvdGVzdC1vcGVuLXN5bWxpbmtzLnNoCkBAIC0wLDAgKzEsMTggQEAKKyMh
IC9iaW4vc2gKKworIyAqIENyZWF0ZSBhIHRlbXBvcmFyeSBkaXJlY3RvcnkKKyMgKiBDcmVhdGUg
c29tZSBzeW1saW5rcyBpbiB0aGUgZGlyZWN0b3J5CisjICogUnVuIHRlc3QvdGVzdC1vcGVuLXN5
bWxpbmtzLCB3aGljaCB3aWxsIGNhbGwgb3BlbihPX0NSRUFUfE9fRVhDTCkgb24gdGhlCisjICAg
c3ltbGlua3MgaW4gdGhlIGRpcmVjdG9yeSBhbmQgY2hlY2sgdGhhdCBlcnJubyBpcyBFRVhJU1Qu
CisKK3RtcGRpcj0iJChta3RlbXAgLWQgLXAgIiRQV0QiKSIKK3RyYXAgInJtIC1yZiAnJHRtcGRp
ciciIEVYSVQgVEVSTSBJTlQKKworIyAnYScgaXMgYSBzeW1saW5rIHRvIGEgZmlsZSB0aGF0IGRv
ZXNuJ3QgZXhpc3QKK2xuIC1zIG5vZXhpc3QudHh0ICIkdG1wZGlyL2EiCisKKyMgJ2InIGlzIGEg
c3ltbGluayB0byBhIGZpbGUgdGhhdCBkb2Vzbid0IGV4aXN0IGFuZCB3aGVyZSB3ZSBhbHNvIGRv
bid0IGhhdmUKKyMgd3JpdGUgcGVybWlzc2lvbnMgdG8gdGhlIHBhcmVudCBkaXJlY3RvcnkgKG9m
IHRoZSB0YXJnZXQpLgorbG4gLXMgL3Jvb3Qvbm9leGlzdC50eHQgIiR0bXBkaXIvYiIKKworLi90
ZXN0L3Rlc3Qtb3Blbi1zeW1saW5rcyAiJHRtcGRpciIKLS0gCjIuMjUuMQoK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>5063</attachid>
            <date>2024-07-25 19:24:00 +0000</date>
            <delta_ts>2024-07-25 19:24:00 +0000</delta_ts>
            <desc>Revised patch</desc>
            <filename>0001-Bugfix-for-Linux-open-O_CREAT-O_EXCL.patch</filename>
            <type>text/plain</type>
            <size>9583</size>
            <attacher name="Mark Hatle">mark.hatle</attacher>
            
              <data encoding="base64">RnJvbSBjYjI0Yjk5OTgxYmZiMzExOTYzYjhkYTMwMmYwZGU2ODYxNzZmZWFhIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBTaW1vbiBMaW5kaG9sbSA8c2ltb24ubGluZGhvbG1Adm9sdm9j
YXJzLmNvbT4KRGF0ZTogV2VkLCAyNCBKdWwgMjAyNCAxMzoyOTo0NCArMDIwMApTdWJqZWN0OiBb
UEFUQ0hdIEJ1Z2ZpeCBmb3IgTGludXggb3BlbihPX0NSRUFUfE9fRVhDTCkKCkluIExpbnV4LCB3
aGVuIGNhbGxpbmcgb3BlbihwYXRoLCBPX0NSRUFUfE9fRVhDTCkgaXQgaW1wbGllcyBPX05PRk9M
TE9XLgpJZiB0aGUgcGF0aCBleGlzdHMgYW5kIGlzIGEgc3ltbGluaywgdGhlIGxpbmsgc2hvdWxk
bid0IGJlIHJlc29sdmVkIGJ1dApyYXRoZXIganVzdCBmYWlsIGRpcmVjdGx5IHdpdGggRUVYSVNU
LiBSZXNvbHZpbmcgdGhlIHN5bWxpbmsgY2F1c2VzCnByb2JsZW1zIHdpdGggZS5nLiBleHRyYWN0
aW5nIGZpbGVzIHdpdGggR05VIHRhciB3aGVyZSBzdHJhbmdlIGVycm9ycwplbnN1ZSB3aGVuIGl0
IHRyaWVzIHRvIG92ZXJ3cml0ZSBhbiBleGlzdGluZyBzeW1saW5rLgoKRml4IHRoZSBidWcgYnkg
bm90IHJlc29sdmluZyBzeW1saW5rcyBmb3Igb3BlbiAoYW5kIHRoZSByZWxhdGVkCmZ1bmN0aW9u
cykgaWYgT19FWENMIGlzIHNldC4KCkZvciBvcmlnaW5hbCBwYXRjaCBmcm9tIFNpbW9uIExpbmRo
b2xtIHNlZToKU2VlOiBodHRwczovL2J1Z3ppbGxhLnlvY3RvcHJvamVjdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTE1NTU5CgpPcmlnaW5hbCBzdWJtaXNzaW9uIHdhcyBtb2RpZmllZCB0byBzcGVjaWZp
Y2FsbHkgY2hlY2sgZm9yIEJPVEgKT19DUkVBVHxPX0VYQ0wsIGFzIHRoaXMgbWF0Y2hlcyB0aGUg
YmVoYXZpb3IgaW4gdGhlIExpbnV4IGtlcm5lbDoKCiAgIGZzL29wZW4uYzogYnVpbGRfb3Blbl9m
bGFncyguLi4pCgogICAgICAgIGlmIChmbGFncyAmIE9fQ1JFQVQpIHsKICAgICAgICAgICAgICAg
IG9wLT5pbnRlbnQgfD0gTE9PS1VQX0NSRUFURTsKICAgICAgICAgICAgICAgIGlmIChmbGFncyAm
IE9fRVhDTCkgewogICAgICAgICAgICAgICAgICAgICAgICBvcC0+aW50ZW50IHw9IExPT0tVUF9F
WENMOwogICAgICAgICAgICAgICAgICAgICAgICBmbGFncyB8PSBPX05PRk9MTE9XOwogICAgICAg
ICAgICAgICAgfQogICAgICAgIH0KCklmIHRoZSBrZXJuZWwgc2VlcyBPX0NSRUFUIGFuZCBPX0VY
Q0wsIGl0IGFzc3VtZXMgT19OT0ZPTExPVywgd2UgbmVlZCB0bwpkdXBsaWNhdGUgdGhlIHNhbWUg
YmVoYXZpb3IuICBOb3RlLCB0aGlzIGJlaGF2aW9yIGlzIGxpa2VseSBMaW51eCBzcGVjaWZpYwp0
aHVzIGltcGxlbWVudGVkIGluIHRoZSBwb3J0cy9saW51L3dyYXBmdW5jcy5pbi4KClNpZ25lZC1v
ZmYtYnk6IE1hcmsgSGF0bGUgPG1hcmsuaGF0bGVAYW1kLmNvbT4KLS0tCiBtYWtld3JhcHBlcnMg
ICAgICAgICAgICAgICB8ICA1ICstCiBwb3J0cy9saW51eC93cmFwZnVuY3MuaW4gICB8IDEyICsr
LS0tCiB0ZXN0L3Rlc3Qtb3Blbi1zeW1saW5rcy5jICB8IDk5ICsrKysrKysrKysrKysrKysrKysr
KysrKysrKysrKysrKysrKysrCiB0ZXN0L3Rlc3Qtb3Blbi1zeW1saW5rcy5zaCB8IDE4ICsrKysr
KysKIDQgZmlsZXMgY2hhbmdlZCwgMTI2IGluc2VydGlvbnMoKyksIDggZGVsZXRpb25zKC0pCiBj
cmVhdGUgbW9kZSAxMDA2NDQgdGVzdC90ZXN0LW9wZW4tc3ltbGlua3MuYwogY3JlYXRlIG1vZGUg
MTAwNzU1IHRlc3QvdGVzdC1vcGVuLXN5bWxpbmtzLnNoCgpkaWZmIC0tZ2l0IGEvbWFrZXdyYXBw
ZXJzIGIvbWFrZXdyYXBwZXJzCmluZGV4IDFlODBlMzAuLjFmN2RkY2UgMTAwNzU1Ci0tLSBhL21h
a2V3cmFwcGVycworKysgYi9tYWtld3JhcHBlcnMKQEAgLTI5MSwxNSArMjkxLDE2IEBAIGNsYXNz
IEZ1bmN0aW9uOgogCiAgICAgICAgICMgaGFuZGxlIHNwZWNpYWwgY29tbWVudHMsIHN1Y2ggYXMg
ZmxhZ3M9QVRfU1lNTElOS19OT0ZPTExPVwogICAgICAgICBpZiBzZWxmLmNvbW1lbnRzOgorICAg
ICAgICAgICAgY29tbWVudHMgPSBzZWxmLmNvbW1lbnRzLnJlcGxhY2UoJz09JywnPGVxdWFscz4n
KQogICAgICAgICAgICAgIyBCdWlsZCBhIGRpY3Rpb25hcnkgb2Yga2V5PXZhbHVlLCBrZXk9dmFs
dWUgcGFpcnMKLSAgICAgICAgICAgIG1vZGlmaWVycyA9IGRpY3QobW9kLnNwbGl0KCI9IikgZm9y
IG1vZCBpbiBzZWxmLmNvbW1lbnRzLnNwbGl0KCcsJykpCisgICAgICAgICAgICBtb2RpZmllcnMg
PSBkaWN0KG1vZC5zcGxpdCgiPSIpIGZvciBtb2QgaW4gY29tbWVudHMuc3BsaXQoJywnKSkKICAg
ICAgICAgICAgICMgU3RyaXAgYWxsIGxlYWRpbmcvdHJhaWxpbmcgd2hpdGVzcGFjZQogICAgICAg
ICAgICAgbW9kaWZpZXJzID0ge2suc3RyaXAoKTp2LnN0cmlwKCkgZm9yIGssIHYgaW4gbW9kaWZp
ZXJzLml0ZW1zKCl9CiAKICAgICAgICAgICAgIGFyY2ggPSAiLSIgKyBwbGF0Zm9ybS5tYWNoaW5l
KCkKICAgICAgICAgICAgICMgU29ydGVkIHNvIHRoYXQgdmVyc2lvbnMtZm9vIGFwcGVhciBhZnRl
ciB2ZXJzaW9ucywgc28gb3ZlcnJpZGVzIGFyZSBlYXN5CiAgICAgICAgICAgICBmb3Iga2V5IGlu
IHNvcnRlZChtb2RpZmllcnMpOgotICAgICAgICAgICAgICAgIHZhbHVlID0gbW9kaWZpZXJzW2tl
eV0KKyAgICAgICAgICAgICAgICB2YWx1ZSA9IG1vZGlmaWVyc1trZXldLnJlcGxhY2UoJzxlcXVh
bHM+JywgJz09JykKICAgICAgICAgICAgICAgICAjIElmIHRoZSBrZXkgaXMgdmVyc2lvbi1hcm02
NCBhbmQgd2UncmUgb24gYXJtNjQgdGhlbiByZW5hbWUgdGhpcyB0byB2ZXJzaW9uCiAgICAgICAg
ICAgICAgICAgaWYga2V5LmVuZHN3aXRoKGFyY2gpOgogICAgICAgICAgICAgICAgICAgICBrZXkg
PSBrZXkucmVwbGFjZShhcmNoLCAiIikKZGlmZiAtLWdpdCBhL3BvcnRzL2xpbnV4L3dyYXBmdW5j
cy5pbiBiL3BvcnRzL2xpbnV4L3dyYXBmdW5jcy5pbgppbmRleCA5N2IxNmMyLi42MGNlNWY1IDEw
MDY0NAotLS0gYS9wb3J0cy9saW51eC93cmFwZnVuY3MuaW4KKysrIGIvcG9ydHMvbGludXgvd3Jh
cGZ1bmNzLmluCkBAIC0xLDQgKzEsNCBAQAotaW50IG9wZW4oY29uc3QgY2hhciAqcGF0aCwgaW50
IGZsYWdzLCAuLi57bW9kZV90IG1vZGV9KTsgLyogZmxhZ3M9ZmxhZ3MmT19OT0ZPTExPVywgbm9p
Z25vcmVfcGF0aD0xICovCitpbnQgb3Blbihjb25zdCBjaGFyICpwYXRoLCBpbnQgZmxhZ3MsIC4u
Lnttb2RlX3QgbW9kZX0pOyAvKiBmbGFncz0oKGZsYWdzJk9fTk9GT0xMT1cpfHwoKGZsYWdzJihP
X0NSRUFUfE9fRVhDTCkpPT0oT19DUkVBVHxPX0VYQ0wpKSksIG5vaWdub3JlX3BhdGg9MSAqLwog
Y2hhciAqZ2V0X2N1cnJlbnRfZGlyX25hbWUodm9pZCk7CiBpbnQgX194c3RhdChpbnQgdmVyLCBj
b25zdCBjaGFyICpwYXRoLCBzdHJ1Y3Qgc3RhdCAqYnVmKTsKIGludCBfX2x4c3RhdChpbnQgdmVy
LCBjb25zdCBjaGFyICpwYXRoLCBzdHJ1Y3Qgc3RhdCAqYnVmKTsgLyogZmxhZ3M9QVRfU1lNTElO
S19OT0ZPTExPVyAqLwpAQCAtNiw4ICs2LDggQEAgaW50IF9fZnhzdGF0KGludCB2ZXIsIGludCBm
ZCwgc3RydWN0IHN0YXQgKmJ1Zik7CiBpbnQgbGNobW9kKGNvbnN0IGNoYXIgKnBhdGgsIG1vZGVf
dCBtb2RlKTsgLyogZmxhZ3M9QVRfU1lNTElOS19OT0ZPTExPVyAqLwogaW50IGxjaG93bihjb25z
dCBjaGFyICpwYXRoLCB1aWRfdCBvd25lciwgZ2lkX3QgZ3JvdXApOyAvKiBmbGFncz1BVF9TWU1M
SU5LX05PRk9MTE9XICovCiBpbnQgX19meHN0YXRhdChpbnQgdmVyLCBpbnQgZGlyZmQsIGNvbnN0
IGNoYXIgKnBhdGgsIHN0cnVjdCBzdGF0ICpidWYsIGludCBmbGFncyk7Ci1pbnQgb3BlbmF0KGlu
dCBkaXJmZCwgY29uc3QgY2hhciAqcGF0aCwgaW50IGZsYWdzLCAuLi57bW9kZV90IG1vZGV9KTsg
LyogZmxhZ3M9ZmxhZ3MmT19OT0ZPTExPVywgbm9pZ25vcmVfcGF0aD0xICovCi1pbnQgX19vcGVu
YXRfMihpbnQgZGlyZmQsIGNvbnN0IGNoYXIgKnBhdGgsIGludCBmbGFncyk7IC8qIGZsYWdzPWZs
YWdzJk9fTk9GT0xMT1csIG5vaWdub3JlX3BhdGg9MSAqLworaW50IG9wZW5hdChpbnQgZGlyZmQs
IGNvbnN0IGNoYXIgKnBhdGgsIGludCBmbGFncywgLi4ue21vZGVfdCBtb2RlfSk7IC8qIGZsYWdz
PSgoZmxhZ3MmT19OT0ZPTExPVyl8fCgoZmxhZ3MmKE9fQ1JFQVR8T19FWENMKSk9PShPX0NSRUFU
fE9fRVhDTCkpKSwgbm9pZ25vcmVfcGF0aD0xICovCitpbnQgX19vcGVuYXRfMihpbnQgZGlyZmQs
IGNvbnN0IGNoYXIgKnBhdGgsIGludCBmbGFncyk7IC8qIGZsYWdzPSgoZmxhZ3MmT19OT0ZPTExP
Vyl8fCgoZmxhZ3MmKE9fQ1JFQVR8T19FWENMKSk9PShPX0NSRUFUfE9fRVhDTCkpKSwgbm9pZ25v
cmVfcGF0aD0xICovCiBpbnQgbWtub2QoY29uc3QgY2hhciAqcGF0aCwgbW9kZV90IG1vZGUsIGRl
dl90IGRldik7IC8qIHJlYWxfZnVuYz1wc2V1ZG9fbWtub2QgKi8KIGludCBta25vZGF0KGludCBk
aXJmZCwgY29uc3QgY2hhciAqcGF0aCwgbW9kZV90IG1vZGUsIGRldl90IGRldik7IC8qIHJlYWxf
ZnVuYz1wc2V1ZG9fbWtub2RhdCAqLwogaW50IF9feG1rbm9kKGludCB2ZXIsIGNvbnN0IGNoYXIg
KnBhdGgsIG1vZGVfdCBtb2RlLCBkZXZfdCAqZGV2KTsgLyogZmxhZ3M9QVRfU1lNTElOS19OT0ZP
TExPVyAqLwpAQCAtMTcsOSArMTcsOSBAQCBpbnQgZmNudGw2NChpbnQgZmQsIGludCBjbWQsIC4u
LntzdHJ1Y3QgZmxvY2sgKmxvY2t9KTsgIC8qIG5vaWdub3JlX3BhdGg9MSAqLwogIyBqdXN0IHNv
IHdlIGtub3cgdGhlIGludW1zIG9mIHN5bWxpbmtzCiBjaGFyICpjYW5vbmljYWxpemVfZmlsZV9u
YW1lKGNvbnN0IGNoYXIgKmZpbGVuYW1lKTsKIGludCBlYWNjZXNzKGNvbnN0IGNoYXIgKnBhdGgs
IGludCBtb2RlKTsKLWludCBvcGVuNjQoY29uc3QgY2hhciAqcGF0aCwgaW50IGZsYWdzLCAuLi57
bW9kZV90IG1vZGV9KTsgLyogZmxhZ3M9ZmxhZ3MmT19OT0ZPTExPVywgbm9pZ25vcmVfcGF0aD0x
ICovCi1pbnQgb3BlbmF0NjQoaW50IGRpcmZkLCBjb25zdCBjaGFyICpwYXRoLCBpbnQgZmxhZ3Ms
IC4uLnttb2RlX3QgbW9kZX0pOyAvKiBmbGFncz1mbGFncyZPX05PRk9MTE9XLCBub2lnbm9yZV9w
YXRoPTEgKi8KLWludCBfX29wZW5hdDY0XzIoaW50IGRpcmZkLCBjb25zdCBjaGFyICpwYXRoLCBp
bnQgZmxhZ3MpOyAvKiBmbGFncz1mbGFncyZPX05PRk9MTE9XLCBub2lnbm9yZV9wYXRoPTEgKi8K
K2ludCBvcGVuNjQoY29uc3QgY2hhciAqcGF0aCwgaW50IGZsYWdzLCAuLi57bW9kZV90IG1vZGV9
KTsgLyogZmxhZ3M9KChmbGFncyZPX05PRk9MTE9XKXx8KChmbGFncyYoT19DUkVBVHxPX0VYQ0wp
KT09KE9fQ1JFQVR8T19FWENMKSkpLCBub2lnbm9yZV9wYXRoPTEgKi8KK2ludCBvcGVuYXQ2NChp
bnQgZGlyZmQsIGNvbnN0IGNoYXIgKnBhdGgsIGludCBmbGFncywgLi4ue21vZGVfdCBtb2RlfSk7
IC8qIGZsYWdzPSgoZmxhZ3MmT19OT0ZPTExPVyl8fCgoZmxhZ3MmKE9fQ1JFQVR8T19FWENMKSk9
PShPX0NSRUFUfE9fRVhDTCkpKSwgbm9pZ25vcmVfcGF0aD0xICovCitpbnQgX19vcGVuYXQ2NF8y
KGludCBkaXJmZCwgY29uc3QgY2hhciAqcGF0aCwgaW50IGZsYWdzKTsgLyogZmxhZ3M9KChmbGFn
cyZPX05PRk9MTE9XKXx8KChmbGFncyYoT19DUkVBVHxPX0VYQ0wpKT09KE9fQ1JFQVR8T19FWENM
KSkpLCBub2lnbm9yZV9wYXRoPTEgKi8KIGludCBjcmVhdDY0KGNvbnN0IGNoYXIgKnBhdGgsIG1v
ZGVfdCBtb2RlKTsKIGludCBzdGF0KGNvbnN0IGNoYXIgKnBhdGgsIHN0cnVjdCBzdGF0ICpidWYp
OyAvKiByZWFsX2Z1bmM9cHNldWRvX3N0YXQgKi8KIGludCBsc3RhdChjb25zdCBjaGFyICpwYXRo
LCBzdHJ1Y3Qgc3RhdCAqYnVmKTsgLyogcmVhbF9mdW5jPXBzZXVkb19sc3RhdCwgZmxhZ3M9QVRf
U1lNTElOS19OT0ZPTExPVyAqLwpkaWZmIC0tZ2l0IGEvdGVzdC90ZXN0LW9wZW4tc3ltbGlua3Mu
YyBiL3Rlc3QvdGVzdC1vcGVuLXN5bWxpbmtzLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMC4uNGJiNWE4NwotLS0gL2Rldi9udWxsCisrKyBiL3Rlc3QvdGVzdC1vcGVuLXN5bWxp
bmtzLmMKQEAgLTAsMCArMSw5OSBAQAorI2luY2x1ZGUgPHN0ZGlvLmg+CisjaW5jbHVkZSA8c3Rk
Ym9vbC5oPgorI2luY2x1ZGUgPHN5cy90eXBlcy5oPgorI2luY2x1ZGUgPHN5cy9zdGF0Lmg+Cisj
aW5jbHVkZSA8ZmNudGwuaD4KKyNpbmNsdWRlIDxlcnJuby5oPgorI2luY2x1ZGUgPHVuaXN0ZC5o
PgorI2luY2x1ZGUgPHN0cmluZy5oPgorCisKK3N0cnVjdCB0ZXN0Y2FzZSB7CisgICAgY29uc3Qg
Y2hhciAqIHBhdGhuYW1lOworICAgIGludCBmbGFnczsKKyAgICBtb2RlX3QgbW9kZTsKKyAgICBp
bnQgZXhwZWN0ZWRfZXJybm87Cit9OworCisvKgorKiBMaXN0IG9mIHRlc3QgY2FzZXMgdG8gcnVu
LiBUaGUgZmlsZXMgKGdpdmVuIGJ5ICdwYXRobmFtZScpIGFyZSBleHBlY3RlZCB0byBiZQorKiBz
ZXR1cCBieSB0ZXN0LW9wZW4tc3ltbGlua3Muc2guCisqLworc3RhdGljIGNvbnN0IHN0cnVjdCB0
ZXN0Y2FzZSB0ZXN0Y2FzZXNbXSA9IHsKKyAgICB7ICJhIiwgT19XUk9OTFl8T19DUkVBVHxPX0VY
Q0wsIDA2NDQsIEVFWElTVCB9LAorICAgIHsgImEiLCBPX1JEV1J8T19DUkVBVHxPX0VYQ0wsIDA2
NDQsIEVFWElTVCB9LAorICAgIHsgImIiLCBPX1dST05MWXxPX0NSRUFUfE9fRVhDTCwgMDY0NCwg
RUVYSVNUIH0sCisgICAgeyAiYiIsIE9fUkRXUnxPX0NSRUFUfE9fRVhDTCwgMDY0NCwgRUVYSVNU
IH0sCisgICAgeyBOVUxMIH0KK307CisKK3N0YXRpYyBib29sIHJ1bl90ZXN0Y2FzZShjb25zdCBj
aGFyICogcHJvZ25hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RydWN0IHRl
c3RjYXNlICogdGVzdGNhc2UpOworCitzdGF0aWMgaW50IHRyeV9vcGVuKGNvbnN0IGNoYXIgKiBw
YXRobmFtZSwgaW50IGZsYWdzLCBtb2RlX3QgbW9kZSk7CisKKy8qCisqIEdpdmVuIGEgZGlyZWN0
b3J5ICh3aGljaCBpcyBleHBlY3RlZCB0byBiZSBzZXR1cCBjb250YWluaW5nIHNvbWUgZmlsZXMg
YnkKKyogdGVzdC1vcGVuLXN5bWxpbmtzLnNoKSwgbG9vcCB0aHJvdWdoIHRoZSB0ZXN0IGNhc2Vz
IGxpc3RlZCBhYm92ZSBhbmQgY2hlY2sKKyogdGhhdCB3aGVuIGNhbGxpbmcgb3BlbihwYXRobmFt
ZSwgZmxhZ3MsIG1vZGUpLCBlcnJubyBpcyBzZXQgdG8gdGhlIGV4cGVjdGVkCisqIHZhbHVlLgor
Ki8KK2ludCBtYWluKGludCBhcmdjLCBjaGFyICphcmd2W10pIHsKKyAgICBjb25zdCBjaGFyICog
cHJvZ25hbWUgPSBhcmd2WzBdOworCisgICAgaWYgKGFyZ2MgIT0gMikgeworICAgICAgICBmcHJp
bnRmKHN0ZGVyciwgInVzYWdlOiAlcyA8ZGlyPlxuIiwgcHJvZ25hbWUpOworICAgICAgICByZXR1
cm4gMTsKKyAgICB9CisKKyAgICBjb25zdCBjaGFyICogZGlybmFtZSA9IGFyZ3ZbMV07CisgICAg
aWYgKGNoZGlyKGRpcm5hbWUpICE9IDApIHsKKyAgICAgICAgcGVycm9yKGRpcm5hbWUpOworICAg
ICAgICByZXR1cm4gMTsKKyAgICB9CisKKyAgICBib29sIG9rID0gdHJ1ZTsKKworICAgIGZvciAo
aW50IGkgPSAwOyB0ZXN0Y2FzZXNbaV0ucGF0aG5hbWU7IGkrKykgeworICAgICAgICBvayAmPSBy
dW5fdGVzdGNhc2UocHJvZ25hbWUsICZ0ZXN0Y2FzZXNbaV0pOworICAgIH0KKworICAgIHJldHVy
biBvayA/IDAgOiAxOworfQorCisvKgorKiBHaXZlbiBhIHRlc3QgY2FzZSBvZiAocGF0aG5hbWUs
IGZsYWdzLCBtb2RlLCBleHBlY3RlZF9lcnJubyksIG9wZW4gdGhlIGZpbGUKKyogd2l0aCB0aGUg
Z2l2ZW4gYXJndW1lbnRzIGFuZCByZXR1cm4gdHJ1ZSBpZiB0aGUgYWN0dWFsIGVycm5vIG1hdGNo
ZXMgdGhlCisqIGV4cGVjdGVkIG9uZSwgb3Igb3RoZXJ3aXNlIGZhbHNlLgorKi8KK3N0YXRpYyBi
b29sIHJ1bl90ZXN0Y2FzZShjb25zdCBjaGFyICogcHJvZ25hbWUsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgY29uc3Qgc3RydWN0IHRlc3RjYXNlICogdGVzdGNhc2UpIHsKKworICAgIGludCBh
Y3R1YWxfZXJybm8gPSB0cnlfb3Blbih0ZXN0Y2FzZS0+cGF0aG5hbWUsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHRlc3RjYXNlLT5mbGFncywKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgdGVzdGNhc2UtPm1vZGUpOworCisgICAgaWYgKGFjdHVhbF9lcnJubyAhPSB0
ZXN0Y2FzZS0+ZXhwZWN0ZWRfZXJybm8pIHsKKyAgICAgICAgZnByaW50ZihzdGRlcnIsICIlczog
b3BlbiglcywgMHgleCwgJW8pIC0+ICVzIChleHBlY3RlZDogJXMpXG4iLAorICAgICAgICAgICAg
ICAgcHJvZ25hbWUsIHRlc3RjYXNlLT5wYXRobmFtZSwgdGVzdGNhc2UtPmZsYWdzLCB0ZXN0Y2Fz
ZS0+bW9kZSwKKyAgICAgICAgICAgICAgIHN0cmVycm9yKGFjdHVhbF9lcnJubyksIHN0cmVycm9y
KHRlc3RjYXNlLT5leHBlY3RlZF9lcnJubykpOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAg
fQorCisgICAgcmV0dXJuIHRydWU7Cit9CisKKy8qCisqIG9wZW4oKSBhIGZpbGUgd2l0aCB0aGUg
Z2l2ZW4gZmxhZ3MgYW5kIG1vZGUgYW5kIHJldHVybiBlcnJubyAob3IgMCwgaWYgdGhlCisqIGZp
bGUgd2FzIHN1Y2Nlc3NmdWxseSBvcGVuZWQpLgorKi8KK3N0YXRpYyBpbnQgdHJ5X29wZW4oY29u
c3QgY2hhciAqIHBhdGhuYW1lLCBpbnQgZmxhZ3MsIG1vZGVfdCBtb2RlKSB7CisgICAgaW50IGZk
ID0gb3BlbihwYXRobmFtZSwgZmxhZ3MsIG1vZGUpOworCisgICAgaWYgKGZkID49IDApIHsKKyAg
ICAgICAgY2xvc2UoZmQpOworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisKKyAgICByZXR1cm4g
ZXJybm87Cit9CmRpZmYgLS1naXQgYS90ZXN0L3Rlc3Qtb3Blbi1zeW1saW5rcy5zaCBiL3Rlc3Qv
dGVzdC1vcGVuLXN5bWxpbmtzLnNoCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAu
LmI1OGM3NWMKLS0tIC9kZXYvbnVsbAorKysgYi90ZXN0L3Rlc3Qtb3Blbi1zeW1saW5rcy5zaApA
QCAtMCwwICsxLDE4IEBACisjISAvYmluL3NoCisKKyMgKiBDcmVhdGUgYSB0ZW1wb3JhcnkgZGly
ZWN0b3J5CisjICogQ3JlYXRlIHNvbWUgc3ltbGlua3MgaW4gdGhlIGRpcmVjdG9yeQorIyAqIFJ1
biB0ZXN0L3Rlc3Qtb3Blbi1zeW1saW5rcywgd2hpY2ggd2lsbCBjYWxsIG9wZW4oT19DUkVBVHxP
X0VYQ0wpIG9uIHRoZQorIyAgIHN5bWxpbmtzIGluIHRoZSBkaXJlY3RvcnkgYW5kIGNoZWNrIHRo
YXQgZXJybm8gaXMgRUVYSVNULgorCit0bXBkaXI9IiQobWt0ZW1wIC1kIC1wICIkUFdEIikiCit0
cmFwICJybSAtcmYgJyR0bXBkaXInIiBFWElUIFRFUk0gSU5UCisKKyMgJ2EnIGlzIGEgc3ltbGlu
ayB0byBhIGZpbGUgdGhhdCBkb2Vzbid0IGV4aXN0CitsbiAtcyBub2V4aXN0LnR4dCAiJHRtcGRp
ci9hIgorCisjICdiJyBpcyBhIHN5bWxpbmsgdG8gYSBmaWxlIHRoYXQgZG9lc24ndCBleGlzdCBh
bmQgd2hlcmUgd2UgYWxzbyBkb24ndCBoYXZlCisjIHdyaXRlIHBlcm1pc3Npb25zIHRvIHRoZSBw
YXJlbnQgZGlyZWN0b3J5IChvZiB0aGUgdGFyZ2V0KS4KK2xuIC1zIC9yb290L25vZXhpc3QudHh0
ICIkdG1wZGlyL2IiCisKKy4vdGVzdC90ZXN0LW9wZW4tc3ltbGlua3MgIiR0bXBkaXIiCi0tIAoy
LjM0LjEKCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>