<?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>9268</bug_id>
          
          <creation_ts>2016-03-15 19:47:35 +0000</creation_ts>
          <short_desc>bug in relocate_sdk.py</short_desc>
          <delta_ts>2016-03-31 23:16:02 +0000</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>7</classification_id>
          <classification>Build System, Metadata &amp; Runtime</classification>
          <product>OE-Core</product>
          <component>Scripts and Tools</component>
          <version>2.1</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>High</priority>
          <bug_severity>major</bug_severity>
          <target_milestone>1.4.5</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Juro Bystricky">juro.bystricky</reporter>
          <assigned_to name="Juro Bystricky">juro.bystricky</assigned_to>
          <cc>maciej.borzecki</cc>
    
    <cc>ross.burton</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>59984</commentid>
    <comment_count>0</comment_count>
    <who name="Juro Bystricky">juro.bystricky</who>
    <bug_when>2016-03-15 19:47:35 +0000</bug_when>
    <thetext>The script relocate_sdk.py contains a bug(s) that can cause to install an SDK with incorrectly relocated/corrupted files.
If installing the SDK into a non-default location and if the path to the new SDK location is longer than the path of the default SDK location, we will overwrite some data inadvertently. The intent is to write 4096 bytes, but we will in fact end up writing more than that, easily proved by a printout:

...
while (offset + 4096) &lt;= sh_size:
                    path = f.read(4096)
                    new_path = old_prefix.sub(new_prefix, path)             
                    # pad with zeros
                    new_path += b(&quot;\0&quot;) * (4096 - len(new_path))
                    #print &quot;Changing %s to %s at %s&quot; % (str(path), str(new_path), str(offset))
                    # write it back
                    f.seek(sh_offset + offset)
                    print(&quot;Write length: %i&quot; % (len(new_path)))
                    f.write(new_path)
....

This will overwrite/corrupt the beginning of the next entry we want to process.
The reason we do not always observe the problem is (IMHO) because there is another bug, related to file flushing, basically compensating the overwriting bug. 
I believe adding an explicit flush to the code proves my point:
                    # write it back
                    f.seek(sh_offset + offset)
                    print(&quot;Write length: %i&quot; % (len(new_path)))
                    f.write(new_path)
                    f.flush()

The flush should make no difference, yet it will guarantee an entry to be overwritten (if the conditions are &quot;right&quot;: i.e. new_path longer than 4096). 

Similar code is used in two places.

At first I observed this with a python3 system, but it turns out it has nothing to do with python3, it was also observed with python2 and installing SDK on a NFS mounted drive (most likely due to some differences in fflush)
The remedy would be to ensure we always write 4096 bytes without the assumption that len(new_path) is 4096 bytes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>59985</commentid>
    <comment_count>1</comment_count>
      <attachid>3031</attachid>
    <who name="Juro Bystricky">juro.bystricky</who>
    <bug_when>2016-03-15 20:25:49 +0000</bug_when>
    <thetext>Created attachment 3031
relocate_sdk.py with multiple printouts</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>60457</commentid>
    <comment_count>2</comment_count>
    <who name="Juro Bystricky">juro.bystricky</who>
    <bug_when>2016-03-28 23:03:37 +0000</bug_when>
    <thetext>A patch that fixes this issue was merged:

http://git.yoctoproject.org/cgit.cgi/poky/commit/?id=c3c793b4286367b7050c8ec92fb90a1a9f85a89a

The patch fixes the relocation of the section &quot;.gccrelocprefix&quot;.
That fixes the observed problems.

However, similar fix is still needed for the relocation of the section &quot;.ldsocache&quot;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>60561</commentid>
    <comment_count>3</comment_count>
    <who name="Juro Bystricky">juro.bystricky</who>
    <bug_when>2016-03-31 00:45:18 +0000</bug_when>
    <thetext>Sent a patch to the mailing list.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>60612</commentid>
    <comment_count>4</comment_count>
    <who name="Juro Bystricky">juro.bystricky</who>
    <bug_when>2016-03-31 15:36:20 +0000</bug_when>
    <thetext>http://lists.openembedded.org/pipermail/openembedded-core/2016-March/119715.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>60638</commentid>
    <comment_count>5</comment_count>
    <who name="Juro Bystricky">juro.bystricky</who>
    <bug_when>2016-03-31 23:16:02 +0000</bug_when>
    <thetext>Merged:
http://git.yoctoproject.org/cgit/cgit.cgi/poky/commit/?h=master-next&amp;id=4dde12f17b5c0e8b029272284b9013cdef5ccd60</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>3031</attachid>
            <date>2016-03-15 20:25:49 +0000</date>
            <delta_ts>2016-03-15 20:25:49 +0000</delta_ts>
            <desc>relocate_sdk.py with multiple printouts</desc>
            <filename>relocate_sdk.py</filename>
            <type>text/x-python</type>
            <size>9322</size>
            <attacher name="Juro Bystricky">juro.bystricky</attacher>
            
              <data encoding="base64">IyEvdXNyL2Jpbi9lbnYgcHl0aG9uCiMKIyBDb3B5cmlnaHQgKGMpIDIwMTIgSW50ZWwgQ29ycG9y
YXRpb24KIwojIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJp
YnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CiMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2Vu
ZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIgYXMKIyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUg
U29mdHdhcmUgRm91bmRhdGlvbi4KIwojIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0
aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAojIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5U
WTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCiMgTUVSQ0hBTlRBQklMSVRZ
IG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLgojIFNlZSB0aGUgR05VIEdlbmVy
YWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIwojIFlvdSBzaG91bGQgaGF2ZSBy
ZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCiMgYWxvbmcg
d2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKIyBG
b3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAw
MjExMS0xMzA3IFVTQQojCiMgREVTQ1JJUFRJT04KIyBUaGlzIHNjcmlwdCBpcyBjYWxsZWQgYnkg
dGhlIFNESyBpbnN0YWxsZXIgc2NyaXB0LiBJdCByZXBsYWNlcyB0aGUgZHluYW1pYwojIGxvYWRl
ciBwYXRoIGluIGFsbCBiaW5hcmllcyBhbmQgYWxzbyBmaXhlcyB0aGUgU1lTRElSIHBhdGhzL2xl
bmd0aHMgYW5kIHRoZQojIGxvY2F0aW9uIG9mIGxkLnNvLmNhY2hlIGluIHRoZSBkeW5hbWljIGxv
YWRlciBiaW5hcnkKIwojIEFVVEhPUlMKIyBMYXVyZW50aXUgUGFsY3UgPGxhdXJlbnRpdS5wYWxj
dUBpbnRlbC5jb20+CiMKCmltcG9ydCBzdHJ1Y3QKaW1wb3J0IHN5cwppbXBvcnQgc3RhdAppbXBv
cnQgb3MKaW1wb3J0IHJlCmltcG9ydCBlcnJubwoKaWYgc3lzLnZlcnNpb24gPCAnMyc6CiAgICBk
ZWYgYih4KToKICAgICAgICByZXR1cm4geAplbHNlOgogICAgZGVmIGIoeCk6CiAgICAgICAgcmV0
dXJuIHguZW5jb2RlKHN5cy5nZXRmaWxlc3lzdGVtZW5jb2RpbmcoKSkKCm9sZF9wcmVmaXggPSBy
ZS5jb21waWxlKGIoIiMjREVGQVVMVF9JTlNUQUxMX0RJUiMjIikpCgpkZWYgZ2V0X2FyY2goKToK
ICAgIGYuc2VlaygwKQogICAgZV9pZGVudCA9Zi5yZWFkKDE2KQogICAgZWlfbWFnMCxlaV9tYWcx
XzMsZWlfY2xhc3MgPSBzdHJ1Y3QudW5wYWNrKCI8QjNzQjExeCIsIGVfaWRlbnQpCgogICAgaWYg
KGVpX21hZzAgIT0gMHg3ZiBhbmQgZWlfbWFnMV8zICE9ICJFTEYiKSBvciBlaV9jbGFzcyA9PSAw
OgogICAgICAgIHJldHVybiAwCgogICAgaWYgZWlfY2xhc3MgPT0gMToKICAgICAgICByZXR1cm4g
MzIKICAgIGVsaWYgZWlfY2xhc3MgPT0gMjoKICAgICAgICByZXR1cm4gNjQKCmRlZiBwYXJzZV9l
bGZfaGVhZGVyKCk6CiAgICBnbG9iYWwgZV90eXBlLCBlX21hY2hpbmUsIGVfdmVyc2lvbiwgZV9l
bnRyeSwgZV9waG9mZiwgZV9zaG9mZiwgZV9mbGFncyxcCiAgICAgICAgICAgZV9laHNpemUsIGVf
cGhlbnRzaXplLCBlX3BobnVtLCBlX3NoZW50c2l6ZSwgZV9zaG51bSwgZV9zaHN0cm5keAoKICAg
IGYuc2VlaygwKQogICAgZWxmX2hlYWRlciA9IGYucmVhZCg2NCkKCiAgICBpZiBhcmNoID09IDMy
OgogICAgICAgICMgMzJiaXQKICAgICAgICBoZHJfZm10ID0gIjxISElMTExJSEhISEhIIgogICAg
ICAgIGhkcl9zaXplID0gNTIKICAgIGVsc2U6CiAgICAgICAgIyA2NGJpdAogICAgICAgIGhkcl9m
bXQgPSAiPEhISVFRUUlISEhISEgiCiAgICAgICAgaGRyX3NpemUgPSA2NAoKICAgIGVfdHlwZSwg
ZV9tYWNoaW5lLCBlX3ZlcnNpb24sIGVfZW50cnksIGVfcGhvZmYsIGVfc2hvZmYsIGVfZmxhZ3Ms
XAogICAgZV9laHNpemUsIGVfcGhlbnRzaXplLCBlX3BobnVtLCBlX3NoZW50c2l6ZSwgZV9zaG51
bSwgZV9zaHN0cm5keCA9XAogICAgICAgIHN0cnVjdC51bnBhY2soaGRyX2ZtdCwgZWxmX2hlYWRl
clsxNjpoZHJfc2l6ZV0pCgpkZWYgY2hhbmdlX2ludGVycHJldGVyKGVsZl9maWxlX25hbWUpOgog
ICAgaWYgYXJjaCA9PSAzMjoKICAgICAgICBwaF9mbXQgPSAiPElJSUlJSUlJIgogICAgZWxzZToK
ICAgICAgICBwaF9mbXQgPSAiPElJUVFRUVFRIgoKICAgICIiIiBsb29rIGZvciBQVF9JTlRFUlAg
c2VjdGlvbiAiIiIKICAgIGZvciBpIGluIHJhbmdlKDAsZV9waG51bSk6CiAgICAgICAgZi5zZWVr
KGVfcGhvZmYgKyBpICogZV9waGVudHNpemUpCiAgICAgICAgcGhfaGRyID0gZi5yZWFkKGVfcGhl
bnRzaXplKQogICAgICAgIGlmIGFyY2ggPT0gMzI6CiAgICAgICAgICAgICMgMzJiaXQKICAgICAg
ICAgICAgcF90eXBlLCBwX29mZnNldCwgcF92YWRkciwgcF9wYWRkciwgcF9maWxlc3osXAogICAg
ICAgICAgICAgICAgcF9tZW1zeiwgcF9mbGFncywgcF9hbGlnbiA9IHN0cnVjdC51bnBhY2socGhf
Zm10LCBwaF9oZHIpCiAgICAgICAgZWxzZToKICAgICAgICAgICAgIyA2NGJpdAogICAgICAgICAg
ICBwX3R5cGUsIHBfZmxhZ3MsIHBfb2Zmc2V0LCBwX3ZhZGRyLCBwX3BhZGRyLCBcCiAgICAgICAg
ICAgIHBfZmlsZXN6LCBwX21lbXN6LCBwX2FsaWduID0gc3RydWN0LnVucGFjayhwaF9mbXQsIHBo
X2hkcikKCiAgICAgICAgIiIiIGNoYW5nZSBpbnRlcnByZXRlciAiIiIKICAgICAgICBpZiBwX3R5
cGUgPT0gMzoKICAgICAgICAgICAgIyBQVF9JTlRFUlAgc2VjdGlvbgogICAgICAgICAgICBmLnNl
ZWsocF9vZmZzZXQpCiAgICAgICAgICAgICMgRXh0ZXJuYWwgU0RLcyB3aXRoIG1peGVkIHByZS1j
b21waWxlZCBiaW5hcmllcyBzaG91bGQgbm90IGdldAogICAgICAgICAgICAjIHJlbG9jYXRlZCBz
byBsb29rIGZvciBzb21lIHZhcmlhbnQgb2YgL2xpYgogICAgICAgICAgICBmbmFtZSA9IGYucmVh
ZCgxMSkKICAgICAgICAgICAgaWYgZm5hbWUuc3RhcnRzd2l0aChiKCIvbGliLyIpKSBvciBmbmFt
ZS5zdGFydHN3aXRoKGIoIi9saWI2NC8iKSkgb3IgXAogICAgICAgICAgICAgICBmbmFtZS5zdGFy
dHN3aXRoKGIoIi9saWIzMi8iKSkgb3IgZm5hbWUuc3RhcnRzd2l0aChiKCIvdXNyL2xpYjMyLyIp
KSBvciBcCiAgICAgICAgICAgICAgIGZuYW1lLnN0YXJ0c3dpdGgoYigiL3Vzci9saWIzMi8iKSkg
b3IgZm5hbWUuc3RhcnRzd2l0aChiKCIvdXNyL2xpYjY0LyIpKToKICAgICAgICAgICAgICAgIGJy
ZWFrCiAgICAgICAgICAgIGlmIChsZW4obmV3X2RsX3BhdGgpID49IHBfZmlsZXN6KToKICAgICAg
ICAgICAgICAgIHByaW50KCJFUlJPUjogY291bGQgbm90IHJlbG9jYXRlICVzLCBpbnRlcnAgc2l6
ZSA9ICVpIGFuZCAlaSBpcyBuZWVkZWQuIiBcCiAgICAgICAgICAgICAgICAgICAgJSAoZWxmX2Zp
bGVfbmFtZSwgcF9tZW1zeiwgbGVuKG5ld19kbF9wYXRoKSArIDEpKQogICAgICAgICAgICAgICAg
YnJlYWsKICAgICAgICAgICAgZGxfcGF0aCA9IG5ld19kbF9wYXRoICsgYigiXDAiKSAqIChwX2Zp
bGVzeiAtIGxlbihuZXdfZGxfcGF0aCkpCiAgICAgICAgICAgIGYuc2VlayhwX29mZnNldCkKICAg
ICAgICAgICAgZi53cml0ZShkbF9wYXRoKQogICAgICAgICAgICBicmVhawoKZGVmIGNoYW5nZV9k
bF9zeXNkaXJzKCk6CiAgICBpZiBhcmNoID09IDMyOgogICAgICAgIHNoX2ZtdCA9ICI8SUlJSUlJ
SUlJSSIKICAgIGVsc2U6CiAgICAgICAgc2hfZm10ID0gIjxJSVFRUVFJSVFRIgoKICAgICIiIiBy
ZWFkIHNlY3Rpb24gc3RyaW5nIHRhYmxlICIiIgogICAgZi5zZWVrKGVfc2hvZmYgKyBlX3Noc3Ry
bmR4ICogZV9zaGVudHNpemUpCiAgICBzaF9oZHIgPSBmLnJlYWQoZV9zaGVudHNpemUpCiAgICBp
ZiBhcmNoID09IDMyOgogICAgICAgIHNoX29mZnNldCwgc2hfc2l6ZSA9IHN0cnVjdC51bnBhY2so
IjwxNnhJSTE2eCIsIHNoX2hkcikKICAgIGVsc2U6CiAgICAgICAgc2hfb2Zmc2V0LCBzaF9zaXpl
ID0gc3RydWN0LnVucGFjaygiPDI0eFFRMjR4Iiwgc2hfaGRyKQoKICAgIGYuc2VlayhzaF9vZmZz
ZXQpCiAgICBzaF9zdHJ0YWIgPSBmLnJlYWQoc2hfc2l6ZSkKCiAgICBzeXNkaXJzID0gc3lzZGly
c19sZW4gPSAiIgoKICAgICIiIiBjaGFuZ2UgbGQuc28uY2FjaGUgcGF0aCBhbmQgZGVmYXVsdCBs
aWJzIHBhdGggZm9yIGR5bmFtaWMgbG9hZGVyICIiIgogICAgZm9yIGkgaW4gcmFuZ2UoMCxlX3No
bnVtKToKICAgICAgICBmLnNlZWsoZV9zaG9mZiArIGkgKiBlX3NoZW50c2l6ZSkKICAgICAgICBz
aF9oZHIgPSBmLnJlYWQoZV9zaGVudHNpemUpCgogICAgICAgIHNoX25hbWUsIHNoX3R5cGUsIHNo
X2ZsYWdzLCBzaF9hZGRyLCBzaF9vZmZzZXQsIHNoX3NpemUsIHNoX2xpbmssXAogICAgICAgICAg
ICBzaF9pbmZvLCBzaF9hZGRyYWxpZ24sIHNoX2VudHNpemUgPSBzdHJ1Y3QudW5wYWNrKHNoX2Zt
dCwgc2hfaGRyKQoKICAgICAgICBuYW1lID0gc2hfc3RydGFiW3NoX25hbWU6c2hfc3RydGFiLmZp
bmQoYigiXDAiKSwgc2hfbmFtZSldCgogICAgICAgICIiIiBsb29rIG9ubHkgaW50byBTSFRfUFJP
R0JJVFMgc2VjdGlvbnMgIiIiCiAgICAgICAgaWYgc2hfdHlwZSA9PSAxOgogICAgICAgICAgICBm
LnNlZWsoc2hfb2Zmc2V0KQogICAgICAgICAgICAiIiIgZGVmYXVsdCBsaWJyYXJ5IHBhdGhzIGNh
bm5vdCBiZSBjaGFuZ2VkIG9uIHRoZSBmbHkgYmVjYXVzZSAgIiIiCiAgICAgICAgICAgICIiIiB0
aGUgc3RyaW5nIGxlbmd0aHMgaGF2ZSB0byBiZSBjaGFuZ2VkIHRvby4gICAgICAgICAgICAgICAg
ICAiIiIKICAgICAgICAgICAgaWYgbmFtZSA9PSBiKCIuc3lzZGlycyIpOgogICAgICAgICAgICAg
ICAgc3lzZGlycyA9IGYucmVhZChzaF9zaXplKQogICAgICAgICAgICAgICAgc3lzZGlyc19vZmYg
PSBzaF9vZmZzZXQKICAgICAgICAgICAgICAgIHN5c2RpcnNfc2VjdF9zaXplID0gc2hfc2l6ZQog
ICAgICAgICAgICBlbGlmIG5hbWUgPT0gYigiLnN5c2RpcnNsZW4iKToKICAgICAgICAgICAgICAg
IHN5c2RpcnNsZW4gPSBmLnJlYWQoc2hfc2l6ZSkKICAgICAgICAgICAgICAgIHN5c2RpcnNsZW5f
b2ZmID0gc2hfb2Zmc2V0CiAgICAgICAgICAgIGVsaWYgbmFtZSA9PSBiKCIubGRzb2NhY2hlIik6
CiAgICAgICAgICAgICAgICBsZHNvY2FjaGVfcGF0aCA9IGYucmVhZChzaF9zaXplKQogICAgICAg
ICAgICAgICAgbmV3X2xkc29jYWNoZV9wYXRoID0gb2xkX3ByZWZpeC5zdWIobmV3X3ByZWZpeCwg
bGRzb2NhY2hlX3BhdGgpCiAgICAgICAgICAgICAgICAjIHBhZCB3aXRoIHplcm9zCiAgICAgICAg
ICAgICAgICBuZXdfbGRzb2NhY2hlX3BhdGggKz0gYigiXDAiKSAqIChzaF9zaXplIC0gbGVuKG5l
d19sZHNvY2FjaGVfcGF0aCkpCiAgICAgICAgICAgICAgICAjIHdyaXRlIGl0IGJhY2sKICAgICAg
ICAgICAgICAgIGYuc2VlayhzaF9vZmZzZXQpCiAgICAgICAgICAgICAgICBmLndyaXRlKG5ld19s
ZHNvY2FjaGVfcGF0aCkKICAgICAgICAgICAgZWxpZiBuYW1lID09IGIoIi5nY2NyZWxvY3ByZWZp
eCIpOgogICAgICAgICAgICAgICAgb2Zmc2V0ID0gMAogICAgICAgICAgICAgICAgd2hpbGUgKG9m
ZnNldCArIDQwOTYpIDw9IHNoX3NpemU6CiAgICAgICAgICAgICAgICAgICAgcHJpbnQoIm9mZnNl
dDogJWkiICUgKG9mZnNldCkpCiAgICAgICAgICAgICAgICAgICAgcGF0aCA9IGYucmVhZCg0MDk2
KQogICAgICAgICAgICAgICAgICAgIG5ld19wYXRoID0gb2xkX3ByZWZpeC5zdWIobmV3X3ByZWZp
eCwgcGF0aCkKICAgICAgICAgICAgICAgICAgICBwcmludCgiMS4gbGVuKG5ld19wYXRoKTogJWki
ICUgKGxlbihuZXdfcGF0aCkpKQogICAgICAgICAgICAgICAgICAgIHByaW50KCIgICAgcGF0aCAl
cyIgJSAocGF0aFs6MjU2XSkpCiAgICAgICAgICAgICAgICAgICAgcHJpbnQoIm5ld19wYXRoICVz
IiAlIChuZXdfcGF0aFs6MjU2XSkpCiAgICAgICAgICAgICAgICAgICAgIyBwYWQgd2l0aCB6ZXJv
cwogICAgICAgICAgICAgICAgICAgIG5ld19wYXRoICs9IGIoIlwwIikgKiAoNDA5NiAtIGxlbihu
ZXdfcGF0aCkpCiAgICAgICAgICAgICAgICAgICAgcHJpbnQoIjIuIGxlbihuZXdfcGF0aCk6ICVp
IiAlIChsZW4obmV3X3BhdGgpKSkKICAgICAgICAgICAgICAgICAgICAjYicvb3B0L3plcGh5ci1z
ZGsvMi4wLjEvc3lzcm9vdHMvaTY4Ni1wb2t5c2RrLWxpbnV4L3Vzci9saWIvCiAgICAgICAgICAg
ICAgICAgICAgI2InL2hvbWUvanVyby9Cb3pvL3N5c3Jvb3RzL2k2ODYtcG9reXNkay1saW51eC91
c3IvbGliLwogICAgICAgICAgICAgICAgICAgICNwcmludCAiQ2hhbmdpbmcgJXMgdG8gJXMgYXQg
JXMiICUgKHN0cihwYXRoKSwgc3RyKG5ld19wYXRoKSwgc3RyKG9mZnNldCkpCiAgICAgICAgICAg
ICAgICAgICAgIyB3cml0ZSBpdCBiYWNrCiAgICAgICAgICAgICAgICAgICAgZi5zZWVrKHNoX29m
ZnNldCArIG9mZnNldCkKICAgICAgICAgICAgICAgICAgICBwcmludCgiV3JpdGUgbGVuZ3RoOiAl
aSIgJSAobGVuKG5ld19wYXRoKSkpCiAgICAgICAgICAgICAgICAgICAgd29mZnNldCA9IGYudGVs
bCgpIC0gc2hfb2Zmc2V0CiAgICAgICAgICAgICAgICAgICAgcHJpbnQoImJlZm9yZTogZi50ZWxs
ICVpIiAlICh3b2Zmc2V0KSkKICAgICAgICAgICAgICAgICAgICBmLndyaXRlKG5ld19wYXRoKQog
ICAgICAgICAgICAgICAgICAgIGYuZmx1c2goKQogICAgICAgICAgICAgICAgICAgIHdvZmZzZXQg
PSBmLnRlbGwoKSAtIHNoX29mZnNldAogICAgICAgICAgICAgICAgICAgIHByaW50KCJhZnRlcjog
IGYudGVsbCAlaSIgJSAod29mZnNldCkpCiAgICAgICAgICAgICAgICAgICAgb2Zmc2V0ID0gb2Zm
c2V0ICsgNDA5NgogICAgaWYgc3lzZGlycyAhPSAiIiBhbmQgc3lzZGlyc2xlbiAhPSAiIjoKICAg
ICAgICBwYXRocyA9IHN5c2RpcnMuc3BsaXQoYigiXDAiKSkKICAgICAgICBzeXNkaXJzID0gYigi
IikKICAgICAgICBzeXNkaXJzbGVuID0gYigiIikKICAgICAgICBmb3IgcGF0aCBpbiBwYXRoczoK
ICAgICAgICAgICAgIiIiIGV4aXQgdGhlIGxvb3Agd2hlbiB3ZSBlbmNvdW50ZXIgZmlyc3QgZW1w
dHkgc3RyaW5nICIiIgogICAgICAgICAgICBpZiBwYXRoID09IGIoIiIpOgogICAgICAgICAgICAg
ICAgYnJlYWsKCiAgICAgICAgICAgIG5ld19wYXRoID0gb2xkX3ByZWZpeC5zdWIobmV3X3ByZWZp
eCwgcGF0aCkKICAgICAgICAgICAgc3lzZGlycyArPSBuZXdfcGF0aCArIGIoIlwwIikKCiAgICAg
ICAgICAgIGlmIGFyY2ggPT0gMzI6CiAgICAgICAgICAgICAgICBzeXNkaXJzbGVuICs9IHN0cnVj
dC5wYWNrKCI8TCIsIGxlbihuZXdfcGF0aCkpCiAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAg
ICAgICBzeXNkaXJzbGVuICs9IHN0cnVjdC5wYWNrKCI8USIsIGxlbihuZXdfcGF0aCkpCgogICAg
ICAgICIiIiBwYWQgd2l0aCB6ZXJvcyAiIiIKICAgICAgICBzeXNkaXJzICs9IGIoIlwwIikgKiAo
c3lzZGlyc19zZWN0X3NpemUgLSBsZW4oc3lzZGlycykpCgogICAgICAgICIiIiB3cml0ZSB0aGUg
c2VjdGlvbnMgYmFjayAiIiIKICAgICAgICBmLnNlZWsoc3lzZGlyc19vZmYpCiAgICAgICAgZi53
cml0ZShzeXNkaXJzKQogICAgICAgIGYuc2VlayhzeXNkaXJzbGVuX29mZikKICAgICAgICBmLndy
aXRlKHN5c2RpcnNsZW4pCgojIE1BSU4KaWYgbGVuKHN5cy5hcmd2KSA8IDQ6CiAgICBzeXMuZXhp
dCgtMSkKCiMgSW4gcHl0aG9uID4gMywgc3RyaW5ncyBtYXkgYWxzbyBjb250YWluIFVuaWNvZGUg
Y2hhcmFjdGVycy4gU28sIGNvbnZlcnQKIyB0aGVtIHRvIGJ5dGVzCmlmIHN5cy52ZXJzaW9uX2lu
Zm8gPCAoMywpOgogICAgbmV3X3ByZWZpeCA9IHN5cy5hcmd2WzFdCiAgICBuZXdfZGxfcGF0aCA9
IHN5cy5hcmd2WzJdCiAgICBwcmludCgicHl0aG9uMiBuZXdfcHJlZml4OiVzIiAlIChuZXdfcHJl
Zml4KSkKZWxzZToKICAgIG5ld19wcmVmaXggPSBzeXMuYXJndlsxXS5lbmNvZGUoKQogICAgbmV3
X2RsX3BhdGggPSBzeXMuYXJndlsyXS5lbmNvZGUoKQogICAgcHJpbnQoInB5dGhvbjMgbmV3X3By
ZWZpeDolcyIgJSAobmV3X3ByZWZpeCkpCgpleGVjdXRhYmxlc19saXN0ID0gc3lzLmFyZ3ZbMzpd
Cgpmb3IgZSBpbiBleGVjdXRhYmxlc19saXN0OgogICAgcGVybXMgPSBvcy5zdGF0KGUpW3N0YXQu
U1RfTU9ERV0KICAgIGlmIG9zLmFjY2VzcyhlLCBvcy5XX09LfG9zLlJfT0spOgogICAgICAgIHBl
cm1zID0gTm9uZQogICAgZWxzZToKICAgICAgICBvcy5jaG1vZChlLCBwZXJtc3xzdGF0LlNfSVJX
WFUpCgogICAgdHJ5OgogICAgICAgIHByaW50KCJQcm9jZXNzaW5nICVzIiAlIGUpCiAgICAgICAg
ZiA9IG9wZW4oZSwgInIrYiIpCiAgICBleGNlcHQgSU9FcnJvcjoKICAgICAgICBleGN0eXBlLCBp
b2V4ID0gc3lzLmV4Y19pbmZvKClbOjJdCiAgICAgICAgaWYgaW9leC5lcnJubyA9PSBlcnJuby5F
VFhUQlNZOgogICAgICAgICAgICBwcmludCgiQ291bGQgbm90IG9wZW4gJXMuIEZpbGUgdXNlZCBi
eSBhbm90aGVyIHByb2Nlc3MuXG5QbGVhc2UgIlwKICAgICAgICAgICAgICAgICAgIm1ha2Ugc3Vy
ZSB5b3UgZXhpdCBhbGwgcHJvY2Vzc2VzIHRoYXQgbWlnaHQgdXNlIGFueSBTREsgIlwKICAgICAg
ICAgICAgICAgICAgImJpbmFyaWVzLiIgJSBlKQogICAgICAgIGVsc2U6CiAgICAgICAgICAgIHBy
aW50KCJDb3VsZCBub3Qgb3BlbiAlczogJXMoJWQpIiAlIChlLCBpb2V4LnN0cmVycm9yLCBpb2V4
LmVycm5vKSkKICAgICAgICBzeXMuZXhpdCgtMSkKCiAgICAjIFNhdmUgb2xkIHNpemUgYW5kIGRv
IGEgc2l6ZSBjaGVjayBhdCB0aGUgZW5kLiBKdXN0IGEgc2FmZXR5IG1lYXN1cmUuCiAgICBvbGRf
c2l6ZSA9IG9zLnBhdGguZ2V0c2l6ZShlKQogICAgaWYgb2xkX3NpemUgPj0gNjQ6CiAgICAgICAg
YXJjaCA9IGdldF9hcmNoKCkKICAgICAgICBpZiBhcmNoOgogICAgICAgICAgICBwYXJzZV9lbGZf
aGVhZGVyKCkKICAgICAgICAgICAgY2hhbmdlX2ludGVycHJldGVyKGUpCiAgICAgICAgICAgIGNo
YW5nZV9kbF9zeXNkaXJzKCkKCiAgICAiIiIgY2hhbmdlIHBlcm1pc3Npb25zIGJhY2sgIiIiCiAg
ICBpZiBwZXJtczoKICAgICAgICBvcy5jaG1vZChlLCBwZXJtcykKCiAgICBmLmNsb3NlKCkKCiAg
ICBpZiBvbGRfc2l6ZSAhPSBvcy5wYXRoLmdldHNpemUoZSk6CiAgICAgICAgcHJpbnQoIk5ldyBm
aWxlIHNpemUgZm9yICVzIGlzIGRpZmZlcmVudC4gTG9va3MgbGlrZSBhIHJlbG9jYXRpb24gZXJy
b3IhIiwgZSkKICAgICAgICBzeXMuZXhpdCgtMSkKCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>