<?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>14193</bug_id>
          
          <creation_ts>2021-01-20 18:11:03 +0000</creation_ts>
          <short_desc>pseudo applies PSEUDO_IGNORE_PATHS variable too greedy</short_desc>
          <delta_ts>2021-04-22 17:47:01 +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>poky integration</component>
          <version>3.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>Medium</priority>
          <bug_severity>normal</bug_severity>
          <target_milestone>3.3</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Krayushkin Konstantin">ip.jango</reporter>
          <assigned_to name="Dorinda">dorindabassey</assigned_to>
          <cc>dorindabassey</cc>
    
    <cc>randy.macleod</cc>
    
    <cc>richard.purdie</cc>
    
    <cc>ross.burton</cc>
    
    <cc>yp.pseudo.watcher</cc>
    
    <cc>yp.watcher</cc>
          
          
          <cf_os>---</cf_os>
          <cf_regression_type>---</cf_regression_type>
          
          <cf_docchange>Yes (doc changes required)</cf_docchange>

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>88969</commentid>
    <comment_count>0</comment_count>
      <attachid>4761</attachid>
    <who name="Krayushkin Konstantin">ip.jango</who>
    <bug_when>2021-01-20 18:11:03 +0000</bug_when>
    <thetext>Created attachment 4761
pseudo patch for pseudo_client_ignore_path_chroot

During migration from Yocto 3.1.1 to Yocto 3.2 one of our packages failed to build with error

ERROR: lpack-20070629-r0 do_package: Error executing a python function in exec_python_func() autogenerated:
                                                                                                                  
The stack trace of python calls that resulted in this exception/failure was:                                       
File: &apos;exec_python_func() autogenerated&apos;, lineno: 2, function: &lt;module&gt;                                            
    0001:                                                                                                         
*** 0002:perform_packagecopy(d)                                                                                   
    0003:                                                                                                         
File: &apos;/work/yocto/build-yocto/build/../layers/poky/meta/classes/package.bbclass&apos;, lineno: 826, function: perform_
packagecopy                                                                                                        
    0822:        rpath_replace (dvar, d)                                                                          
    0823:}                                                                                                        
    0824:perform_packagecopy[cleandirs] = &quot;${PKGD}&quot;                                                               
    0825:perform_packagecopy[dirs] = &quot;${PKGD}&quot;                                                                    
*** 0826:                                                                                                         
    0827:# We generate a master list of directories to process, we start by                                       
    0828:# seeding this list with reasonable defaults, then load from                                             
    0829:# the fs-perms.txt files                                                                                 
    0830:python fixup_perms () {                                                                                  
File: &apos;/usr/lib/python3.8/subprocess.py&apos;, lineno: 411, function: check_output                                      
    0407:        # Explicitly passing input=None was previously equivalent to passing an                          
    0408:        # empty string. That is maintained here for backwards compatibility.                             
    0409:        kwargs[&apos;input&apos;] = &apos;&apos; if kwargs.get(&apos;universal_newlines&apos;, False) else b&apos;&apos;                         
    0410:                                                                                                         
*** 0411:    return run(*popenargs, stdout=PIPE, timeout=timeout, check=True,                                     
    0412:               **kwargs).stdout                                                                          
    0413:                                                                                                         
    0414:                                                                                                         
    0415:class CompletedProcess(object):                                                                          
File: &apos;/usr/lib/python3.8/subprocess.py&apos;, lineno: 512, function: run                                               
    0508:            # We don&apos;t call process.wait() as .__exit__ does that for us.                                
    0509:            raise                                                                                        
    0510:        retcode = process.poll()                                                                         
    0511:        if check and retcode:                                                                            
*** 0512:            raise CalledProcessError(retcode, process.args,                                              
    0513:                                     output=stdout, stderr=stderr)                                       
    0514:    return CompletedProcess(process.args, retcode, stdout, stderr)                                       
    0515:                                                                                                         
    0516:                                                                                                         
Exception: subprocess.CalledProcessError: Command &apos;tar -cf - -C /work/yocto/build-yocto/build/tmp/work/cortexa9t2h
f-neon-poky-linux-gnueabi/lpack/20070629-r0/image -p -S . | tar -xf - -C /work/yocto/build-yocto/build/tmp/work/co
rtexa9t2hf-neon-poky-linux-gnueabi/lpack/20070629-r0/package&apos; returned non-zero exit status 2.                     
                                                                                                                  
Subprocess output:                                                                                                 
tar: ./usr/lib/lua/5.1/pack.so: Cannot change ownership to uid 0, gid 0: Operation not permitted                   
tar: ./usr/lib/lua/5.1: Cannot change ownership to uid 0, gid 0: Operation not permitted                           
tar: ./usr/lib/lua: Cannot change ownership to uid 0, gid 0: Operation not permitted                               
tar: ./usr/lib: Cannot change ownership to uid 0, gid 0: Operation not permitted                                   
tar: ./usr: Cannot change ownership to uid 0, gid 0: Operation not permitted                                       
tar: .: Cannot change ownership to uid 0, gid 0: Operation not permitted                                           
tar: Exiting with failure status due to previous errors


After digging Yocto metadata i found, that problem was in new pseudo variable PSEUDO_IGNORE_PATHS (added in commit 84d006b9fb9c131fb626a090d9e4a76cc47eaf84 in git.yoctoproject.org/poky, branch gatesgarth). To be more precise, PSEUDO_IGNORE_PATHS contains item with ${S} value of the recipe. In our case that was

PSEUDO_IGNORE_PATHS = &quot;...,/work/yocto/build-yocto/build/tmp/work/co
rtexa9t2hf-neon-poky-linux-gnueabi/lpack/20070629-r0/pack,...&quot;

The last path segment here &apos;pack&apos; was the reason of the error. It was forcing &apos;package&apos; directory in the recipe WORKDIR to be filtered out and ignored by pseudo.

After looking through pseudo sources i found function that actually applies PSEUDO_IGNORE_PATHS - pseudo_client_ignore_path_chroot (added in f3ae0c96e012426a8bcb6f881d1c8c30f9673b14, branch oe-core).

In applied patch i suggest fixes of this issue, that distinguish partial path segments and full path segments, so paths &apos;/var/some/path&apos; and &apos;/var/some/pa&apos; are treated as two different paths, and same for &apos;.../recipe-sysroot&apos; - it would not ignore &apos;.../recipe-sysroot-sysroot&apos; anymore. This changes logic of PSEUDO_IGNORE_PATHS usage slightly - now it is required to specify full path to be ignored. That is, some changes would be required for PSEUDO_IGNORE_PATHS definition in bitbake.conf - all paths have to be specified exactly:

-PSEUDO_IGNORE_PATHS = &quot;/usr/,/etc/,/lib,/dev/,${T},${WORKDIR}/recipe-sysroot,${SSTATE_DIR},${STAMPS_DIR},${WORKDIR}/pkgdata-sysroot,${TMPDIR}/sstate-control,${DEPLOY_DIR},${WORKDIR}/deploy-,${TMPDIR}/buildstats,${WORKDIR}/sstate-build-package_,${WORKDIR}/sstate-install-package_,${WORKDIR}/sstate-build-image_complete,${TMPDIR}/sysroots-components,${BUILDHISTORY_DIR},${TMPDIR}/pkgdata,${TOPDIR}/cache,${COREBASE}/scripts,${COREBASE}/meta,${CCACHE_DIR}&quot;
+PSEUDO_IGNORE_PATHS = &quot;/usr,/etc,/lib,/dev,${T},${WORKDIR}/recipe-sysroot,${WORKDIR}/recipe-sysroot-native,${SSTATE_DIR},${STAMPS_DIR},${WORKDIR}/pkgdata-sysroot,${TMPDIR}/sstate-control,${DEPLOY_DIR},${WORKDIR}/deploy-ipks,${WORKDIR}/deploy-source-date-epoch,${TMPDIR}/buildstats,${WORKDIR}/sstate-install-package_qa,${WORKDIR}/sstate-install-package_write_ipk,${WORKDIR}/sstate-build-image_complete,${TMPDIR}/sysroots-components,${BUILDHISTORY_DIR},${TMPDIR}/pkgdata,${TOPDIR}/cache,${COREBASE}/scripts,${COREBASE}/meta,${CCACHE_DIR}&quot;


Here is my questions:
1) feedback about changes in the patch
2) where should i post the patch, as it is not actually oe-core project and project http://git.yoctoproject.org/cgit/cgit.cgi/pseudo is closed for public contributions

Posted all this here as was written here http://git.yoctoproject.org/cgit/cgit.cgi/pseudo/tree/README</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>88978</commentid>
    <comment_count>1</comment_count>
    <who name="Randy MacLeod">randy.macleod</who>
    <bug_when>2021-01-21 15:43:13 +0000</bug_when>
    <thetext>Dorinda, Is this something you&apos;d like to work on.
We need a sanity check to see if ${S} and the paths in pseudo ignore paths overlap and error if they do overlap.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>88990</commentid>
    <comment_count>2</comment_count>
    <who name="Dorinda">dorindabassey</who>
    <bug_when>2021-01-21 20:56:25 +0000</bug_when>
    <thetext>oh cool, i&apos;d love to work on this, let me think of a solution thank you.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>89051</commentid>
    <comment_count>3</comment_count>
      <attachid>4764</attachid>
    <who name="Krayushkin Konstantin">ip.jango</who>
    <bug_when>2021-01-28 13:01:21 +0000</bug_when>
    <thetext>Created attachment 4764
pseudo patch for pseudo_client_ignore_path_chroot

Found a bug in my own patch. Attached *PATCH v2* to this task</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>89052</commentid>
    <comment_count>4</comment_count>
    <who name="Krayushkin Konstantin">ip.jango</who>
    <bug_when>2021-01-28 13:17:16 +0000</bug_when>
    <thetext>(In reply to comment #1)
&gt; Dorinda, Is this something you&apos;d like to work on.
&gt; We need a sanity check to see if ${S} and the paths in pseudo ignore paths
&gt; overlap and error if they do overlap.

Hm, that was an issue after all, that should be fixed, not hidden behind some Yocto heuristic mechanisms. I mean such sanity checks are obviously useful, but only for protection; the issue will still be presented in the code despite those protections. The issue is that pseudo code works unstable while processing PSEUDO_IGNORE_PATHS environment variable.

The best way to implement PSEUDO_IGNORE_PATHS application in my opinion would be by using globs, or at most regular expressions. Richard&apos;s Purdie decision to just compare strings is arguable, but he is an architect after all, so i just followed his ideas in my patch. But once again, the code works unstable - what if similar bug will appears during some other variable matching, not ${S}? How many variables are there in every package build? And all of them are potentially buggy.

Please consider my approach once again. Maybe we should call Richard Purdie for his opinion? I was fixing exactly his code after all.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>89064</commentid>
    <comment_count>5</comment_count>
    <who name="Dorinda">dorindabassey</who>
    <bug_when>2021-01-28 15:51:19 +0000</bug_when>
    <thetext>Hi, you may have a point there i guess but am not very familiar pseudo. Nonetheless i submitted a patch to oe-core mailing list here @ https://lists.openembedded.org/g/openembedded-core/message/147373  although it&apos;s still a WIP.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>89080</commentid>
    <comment_count>6</comment_count>
    <who name="Krayushkin Konstantin">ip.jango</who>
    <bug_when>2021-01-29 09:56:21 +0000</bug_when>
    <thetext>(In reply to comment #5)
&gt; Hi, you may have a point there i guess but am not very familiar pseudo.
&gt; Nonetheless i submitted a patch to oe-core mailing list here @
&gt; https://lists.openembedded.org/g/openembedded-core/message/147373  although
&gt; it&apos;s still a WIP.

Copying ny reply on mailing list.

The point was that ${S}, that is ignored (and should be ignored), is part of some other path, that is NOT in PSEUDO_IGNORE_PATHS and should not be ignored.
Example:
/some/long/path/and/finally/s_directory -- this is ${S}, that should be ignored; also it is part of PSEUDO_IGNORE_PATHS... and that&apos;s why it is actually ignored
/some/long/path/and/finally/s_directory_with_some_suffix -- this is some another directory, that should not be ignored, but because it is prefixed by ${S}, it incorrectly is ignored

My actual case: 
S == /&lt;build-root&gt;/build/tmp/work/&lt;SoC-tunes&gt;-poky-linux-gnieabi/lpack/&lt;version&gt;/pack -- it is in PSEUDO_IGNORE_PATHS, and it should be ignored; pay attention to the last path segment, pack
/&lt;build-root&gt;/build/tmp/work/&lt;SoC-tunes&gt;-poky-linux-gnieabi/lpack/&lt;version&gt;/package -- this should not have be ignored, but incorrectly ${S} was applied to it, because of the algorithm in pseudo

So, what you should do in sanity check is actually check overlaps of ${S} with the list of important directories, that should not be ignored, not with PSEUDO_IGNORE_PATHS. Where to get this list of important directories - that&apos;s a question... The only thing i can imagine right now - just hardcode it like shown below. Also, consider that ${S} is only one case of overlapping.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>89081</commentid>
    <comment_count>7</comment_count>
    <who name="Krayushkin Konstantin">ip.jango</who>
    <bug_when>2021-01-29 10:02:58 +0000</bug_when>
    <thetext>In mailing list https://lists.openembedded.org/g/openembedded-core/topic/patch_sanity_bbclass/80117826 i saw Chen Qi suggested the opposite strategy for pseudo path filtering. If this new strategy would be applied, this task 14193 may be closed. With PSEUDO_CONSIDER_PATHS the problem in this task would be solved anyways - neither mine, nor Dorinda&apos;s patch would be necessary.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>89094</commentid>
    <comment_count>8</comment_count>
    <who name="Richard Purdie">richard.purdie</who>
    <bug_when>2021-01-30 11:05:43 +0000</bug_when>
    <thetext>Rightly or wrongly (and it can be argued either way), PSEUDO_IGNORE_PATHS does simple prefix matching. Whilst we could force that to be more exact path matching, we could lose flexibility and the configuration here wouldn&apos;t work since we do use that matching capability to minimise the list of paths needed in PSEUDO_IGNORE_PATHS.

I&apos;ve replied to Dorina&apos;s patch on the mailing list detailing the kind of sanity test we need to ensure people at least don&apos;t hit problems like reported here and get a better error message explaining the problem.

Whether or not we move to the path inclusion method rather than exclusion remains to be seen, it was advised explicitly against by the pseudo authors.

Patches for pseudo and discussion can be sent to the mailing list as detailed in the README but its unlikely we&apos;d change the matching mechanism at this point as detailed above. The sanity test is however important to stop people being caught out by this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>89164</commentid>
    <comment_count>9</comment_count>
    <who name="Dorinda">dorindabassey</who>
    <bug_when>2021-02-08 11:08:03 +0000</bug_when>
    <thetext>Hi All,
Patch submitted at 
https://git.yoctoproject.org/cgit/cgit.cgi/poky/commit/?id=785b5489aba6aae6919abdd3faf54abf2439bec6</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>89959</commentid>
    <comment_count>10</comment_count>
    <who name="Ross Burton">ross.burton</who>
    <bug_when>2021-04-15 15:01:24 +0000</bug_when>
    <thetext>The sanity test is merged in 6e4bd8cabcdedf4b52345ef5eb421f71d0f19b1d.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>90069</commentid>
    <comment_count>11</comment_count>
    <who name="Richard Purdie">richard.purdie</who>
    <bug_when>2021-04-22 17:47:01 +0000</bug_when>
    <thetext>Sanity test has been added, not sure we can change the rest of the implementation without causing efficiency issues or breakage with the way it is being used in OE-Core. Path inclusion rather than exclusion may be the other route to explore too, many people are requesting that.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>4761</attachid>
            <date>2021-01-20 18:11:03 +0000</date>
            <delta_ts>2021-01-28 13:01:21 +0000</delta_ts>
            <desc>pseudo patch for pseudo_client_ignore_path_chroot</desc>
            <filename>0001-pseudo_client-fixed-bug-in-PSEUDO_IGNORE_PATHS-appli.patch</filename>
            <type>text/plain</type>
            <size>5192</size>
            <attacher name="Krayushkin Konstantin">ip.jango</attacher>
            
              <data encoding="base64">RnJvbSBkMTY0YjU1OGM0Nzc0MDkwYjU5YjQxNTQzNjAyODkyNWM4Yjk0NjNiIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBLcmF5dXNoa2luIEtvbnN0YW50aW4gPGtrcmF5dXNoa2luQGxp
bnRlY2gucnU+CkRhdGU6IEZyaSwgMTUgSmFuIDIwMjEgMTc6MjM6MDkgKzAzMDAKU3ViamVjdDog
W1BBVENIXSBwc2V1ZG9fY2xpZW50OiBmaXhlZCBidWcgaW4gUFNFVURPX0lHTk9SRV9QQVRIUyBh
cHBsaWNhdGlvbgogZm9yIGFjdHVhbCBwYXRoIHN0cmluZwoKQnVnIHdhcyBkZXRlY3RlZCBpbiBZ
b2N0byBwcm9qZWN0LCB3aGlsZSBtaWdyYXRpbmcgZnJvbSAzLjEuMSB0byAzLjIsIGluIGZ1bmN0
aW9uCidwc2V1ZG9fY2xpZW50X2lnbm9yZV9wYXRoX2Nocm9vdCcuCgpIZXJlIGlzIGV4YWN0IGNh
c2UsIHdoZXJlIHByZXZpb3VzIGltcGxlbWV0YXRpb24gZmFpbGVkOgpQU0VVRE9fSUdOT1JFX1BB
VEhTPSIuLi4sL3dvcmsveW9jdG8vYnVpbGQteW9jdG8vYnVpbGQvdG1wL3dvcmsvY29ydGV4YTl0
MmhmLW5lb24tcG9reS1saW51eC1nbnVlYWJpL2xwYWNrLzIwMDcwNjI5LXIwL3BhY2ssLi4uIgp0
aGlzIHdhcyBhcHBsaWVkIHRvIHBhdGggIi93b3JrL3lvY3RvL2J1aWxkLXlvY3RvL2J1aWxkL3Rt
cC93b3JrL2NvcnRleGE5dDJoZi1uZW9uLXBva3ktbGludXgtZ251ZWFiaS9scGFjay8yMDA3MDYy
OS1yMC9wYWNrYWdlIgphbmQgdHJpZ2dlcmVkIHRoZSBpZ25vcmFuY2UgKCdwc2V1ZG9fY2xpZW50
X2lnbm9yZV9wYXRoX2Nocm9vdCcgcmV0dXJuZWQgJzEnKS4KClRoaXMgd2FzIGEgbWlzdGFrZSwg
YmVjYXVzZSAnLi4uL2xwYWNrLzIwMDcwNjI5LXIwL3BhY2snIGFuZCAnLi4uL2xwYWNrLzIwMDcw
NjI5LXIwL3BhY2thZ2UnCmFyZSBhY3R1YWxseSB0d28gY29tcGxpdGFsbHkgZGlmZmVyZW50IGRp
cmVjdG9yaWVzLCBidXQgd2l0aCB2ZXJ5IHNpbWlsYXIgbmFtZXM7ICcuLi4vcGFjaycKc2hvdWxk
IGhhdmUgYmVlbiBpZ25vcmVkLCBidXQgJy4uLi9wYWNrYWdlJyAtIHNob3VsZCBoYXZlIG5vdC4K
CkFsZ29yaXRobSBpbiAncHNldWRvX2NsaWVudF9pZ25vcmVfcGF0aF9jaHJvb3QnIHdhcyB1cGdy
YWRlZCBhbmQgdGVzdGVkIG9uIHRoaXMgZGF0YToKMSkgUFNFVURPX0lHTk9SRV9QQVRIUz0iL3Bh
dGgwL3NvbWUvcGF0aCwvcGF0aDEvLC9wYXRoMiwvcGF0aDMvc3ViL3BhdGgsL3BhdGg0L3dpdGgv
ZmlsZS5leHQsL3BhdGg1L3N1Yi9wYXRoLyIKMikgIGFzc2VydChwc2V1ZG9fY2xpZW50X2lnbm9y
ZV9wYXRoKCIvcGF0aDEiKSA9PSAxKTsKICAgIGFzc2VydChwc2V1ZG9fY2xpZW50X2lnbm9yZV9w
YXRoKCIvcGF0aDIiKSA9PSAxKTsKICAgIGFzc2VydChwc2V1ZG9fY2xpZW50X2lnbm9yZV9wYXRo
KCIvcGF0aDMvc3ViL3BhdGgiKSA9PSAxKTsKICAgIGFzc2VydChwc2V1ZG9fY2xpZW50X2lnbm9y
ZV9wYXRoKCIvcGF0aDMvc3ViL3BhdGgvIikgPT0gMSk7CiAgICBhc3NlcnQocHNldWRvX2NsaWVu
dF9pZ25vcmVfcGF0aCgiL3BhdGg0L3dpdGgvZmlsZS5leHQiKSA9PSAxKTsKICAgIGFzc2VydChw
c2V1ZG9fY2xpZW50X2lnbm9yZV9wYXRoKCIvcGF0aDUvc3ViL3BhdGgiKSA9PSAxKTsKICAgIGFz
c2VydChwc2V1ZG9fY2xpZW50X2lnbm9yZV9wYXRoKCIvcGF0aDUvc3ViL3BhdGgvIikgPT0gMSk7
CgogICAgYXNzZXJ0KHBzZXVkb19jbGllbnRfaWdub3JlX3BhdGgoIi9wYXRoMS9zdWIvcGF0aCIp
ID09IDEpOwogICAgYXNzZXJ0KHBzZXVkb19jbGllbnRfaWdub3JlX3BhdGgoIi9wYXRoMS9zdWIv
cGF0aC8iKSA9PSAxKTsKICAgIGFzc2VydChwc2V1ZG9fY2xpZW50X2lnbm9yZV9wYXRoKCIvcGF0
aDMvc3ViL3BhdGgvYW5kL21vcmUvIikgPT0gMSk7CiAgICBhc3NlcnQocHNldWRvX2NsaWVudF9p
Z25vcmVfcGF0aCgiL3BhdGg1L3N1Yi9wYXRoL2FuZC9tb3JlIikgPT0gMSk7CgogICAgYXNzZXJ0
KHBzZXVkb19jbGllbnRfaWdub3JlX3BhdGgoIi9wYXRoMC9zb21lIikgPT0gMCk7CiAgICBhc3Nl
cnQocHNldWRvX2NsaWVudF9pZ25vcmVfcGF0aCgiL3BhdGgzL2Fub3RoZXIvcGF0aCIpID09IDAp
OwogICAgYXNzZXJ0KHBzZXVkb19jbGllbnRfaWdub3JlX3BhdGgoIi9wYXRoMy9hbm90aGVyL3Bh
dGgvIikgPT0gMCk7CiAgICBhc3NlcnQocHNldWRvX2NsaWVudF9pZ25vcmVfcGF0aCgiL3BhdGg0
L3dpdGgvZmlsZS5leHQyIikgPT0gMCk7CiAgICBhc3NlcnQocHNldWRvX2NsaWVudF9pZ25vcmVf
cGF0aCgiL3BhdGg0L3dpdGgyL2ZpbGUuZXh0IikgPT0gMCk7Ci0tLQogcHNldWRvX2NsaWVudC5j
IHwgNzMgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0tLS0tLQog
MSBmaWxlIGNoYW5nZWQsIDUwIGluc2VydGlvbnMoKyksIDIzIGRlbGV0aW9ucygtKQoKZGlmZiAt
LWdpdCBhL3BzZXVkb19jbGllbnQuYyBiL3BzZXVkb19jbGllbnQuYwppbmRleCAxMTZkOTI2Li5i
ZjhmNGE2IDEwMDY0NAotLS0gYS9wc2V1ZG9fY2xpZW50LmMKKysrIGIvcHNldWRvX2NsaWVudC5j
CkBAIC0xNTE5LDQwICsxNTE5LDY3IEBAIGJhc2VfcGF0aChpbnQgZGlyZmQsIGNvbnN0IGNoYXIg
KnBhdGgsIGludCBsZWF2ZV9sYXN0KSB7CiAJcmV0dXJuIG5ld3BhdGg7CiB9CiAKLWludCBwc2V1
ZG9fY2xpZW50X2lnbm9yZV9mZChpbnQgZmQpIHsKK2ludAorcHNldWRvX2NsaWVudF9pZ25vcmVf
ZmQoaW50IGZkKSB7CiAJaWYgKGZkID49IDAgJiYgZmQgPD0gbmZkcykKIAkJcmV0dXJuIHBzZXVk
b19jbGllbnRfaWdub3JlX3BhdGgoZmRfcGF0aChmZCkpOwogCXJldHVybiAwOwogfQogCi1pbnQg
cHNldWRvX2NsaWVudF9pZ25vcmVfcGF0aF9jaHJvb3QoY29uc3QgY2hhciAqcGF0aCwgaW50IGln
bm9yZV9jaHJvb3QpIHsKK3N0YXRpYyBpbnQKK3BzZXVkb19jbGllbnRfaWdub3JlX3BhdGhfY2hy
b290KGNvbnN0IGNoYXIgKnBhdGgsIGludCBpZ25vcmVfY2hyb290KSB7CiAJY2hhciAqZW52Owot
CWlmIChwYXRoKSB7Ci0JCWlmIChpZ25vcmVfY2hyb290ICYmIHBzZXVkb19jaHJvb3QgJiYgc3Ry
bmNtcChwYXRoLCBwc2V1ZG9fY2hyb290LCBwc2V1ZG9fY2hyb290X2xlbikgPT0gMCkKLQkJCXJl
dHVybiAwOwotCQllbnYgPSBwc2V1ZG9fZ2V0X3ZhbHVlKCJQU0VVRE9fSUdOT1JFX1BBVEhTIik7
Ci0JCWlmIChlbnYpIHsKLQkJCWNoYXIgKnAgPSBlbnY7Ci0gICAgICAgIAkgICAgICAgIHdoaWxl
ICgqcCkgewotCQkJCWNoYXIgKm5leHQgPSBzdHJjaHIocCwgJywnKTsKLQkJCQlpZiAoIW5leHQp
Ci0JCQkJICAgIG5leHQgPSBzdHJjaHIocCwgJ1wwJyk7Ci0JCQkJaWYgKChuZXh0IC0gcCkgJiYg
IXN0cm5jbXAocGF0aCwgcCwgbmV4dCAtIHApKSB7Ci0JCSAJCQlwc2V1ZG9fZGVidWcoUERCR0Zf
UEFUSCB8IFBEQkdGX1ZFUkJPU0UsICJpZ25vcmluZyBwYXRoOiAnJXMnXG4iLCBwYXRoKTsKLQkJ
CQkJcmV0dXJuIDE7Ci0JCQkJfQotCQkJCWlmIChuZXh0ICYmICpuZXh0ICE9ICdcMCcpCi0JCQkJ
CXAgPSBuZXh0KzE7Ci0JCQkJZWxzZQotCQkJCQlicmVhazsKLQkJCX0KLQkJCWZyZWUoZW52KTsK
KwljaGFyICpwOworCWNoYXIgKm5leHQ7CisJaW50IHRyYWlsaW5nX3NsYXNoZXNfY291bnQ7CisK
KwlpZiAoIXBhdGggfHwgKnBhdGggPT0gJ1wwJykKKwkJcmV0dXJuIDA7CisKKwlpZiAoaWdub3Jl
X2Nocm9vdCAmJiBwc2V1ZG9fY2hyb290ICYmIHN0cm5jbXAocGF0aCwgcHNldWRvX2Nocm9vdCwg
cHNldWRvX2Nocm9vdF9sZW4pID09IDApCisJCXJldHVybiAwOworCisJZW52ID0gcHNldWRvX2dl
dF92YWx1ZSgiUFNFVURPX0lHTk9SRV9QQVRIUyIpOworCWlmICghZW52KQorCQlyZXR1cm4gMDsK
KworCXAgPSBlbnY7CisJd2hpbGUgKCpwKSB7CisJCXRyYWlsaW5nX3NsYXNoZXNfY291bnQgPSAw
OworCQluZXh0ID0gc3RyY2hyKHAsICcsJyk7CisJCWlmICghbmV4dCkKKwkJCW5leHQgPSBzdHJj
aHIocCwgJ1wwJyk7CisJCWlmICghbmV4dCB8fCBuZXh0LXAgPD0gMCkKKwkJICAgIGJyZWFrOwor
CisJCS8vIHRha2UgaW50byBhY2NvdW50IHRyYWlsaW5nIHNsYXNoZXMgaW4gJ1BTRVVET19JR05P
UkVfUEFUSFMnIGl0ZW0gLSB0aGV5IG1heSBsZWFkIHRvIHN1Y2gKKwkJLy8gY2FzZSwgdGhhdCAn
L3VzcicgZmFpbHMgdGVzdCBhZ2FpbnN0ICcvdXNyLycKKwkJd2hpbGUgKCoobmV4dC0xKSA9PSAn
LycgJiYgbmV4dC1wID4gMCkgeworCQkJbmV4dC0tOworCQkJdHJhaWxpbmdfc2xhc2hlc19jb3Vu
dCsrOworCQl9CisKKwkJLyoKKwkJICogaGVyZSB3ZSBhcmUgbWF0Y2hpbmcgJ3BhdGgnIGFnYWlu
c3QgJ1BTRVVET19JR05PUkVfUEFUSFMnIGl0ZW07IGNhc2VzIHNob3VsZCBiZSBjaGVja2VkOgor
CQkgKiAtICdwYXRoJyBsZW5ndGggaXMgZ3JlYXRlciBvciBlcXVhbHMgdG8gJ1BTRVVET19JR05P
UkVfUEFUSFMnIGl0ZW0gbGVuZ3RoCisJCSAqIC0gYm90aCAnUFNFVURPX0lHTk9SRV9QQVRIUycg
aXRlbSBhbmQgJ3BhdGgnIGFyZSBtYXRjaGVkIGJ5IHBhdGhzIHNlZ21lbnRzLCBzbyAnaWdub3Jl
PS9zb21lL3BhJyBkb2Vzbid0CisJCSAqICAgYXBwbHkgdG8gJ3BhdGg9L3NvbWUvcGF0aCcodGhl
ZXNlIGFyZSBkaXN0aW5jdCBwYXRocyksIGJ1dCAnaWdub3JlPS9zb21lL3BhJyBmaWx0ZXJzIG91
dCAncGF0aD0vc29tZS9wYS90aCcKKwkJICogLSB3aG9sZSAnUFNFVURPX0lHTk9SRV9QQVRIUycg
aXRlbSBzdHJpbmcgaXMgcGFydCBvZiAncGF0aCcgc3RyaW5nIChhY2NvcmRpbmcgdG8gcGF0aCBz
ZWdtZW50cywgc2VlIGFib3ZlKQorCQkgKi8gCisJCWlmICgocGF0aFtuZXh0LXBdID09ICdcMCcg
fHwgcGF0aFtuZXh0LXBdID09ICcvJykgJiYgc3RybmNtcChwYXRoLCBwLCBuZXh0LXApID09IDAp
IHsKKwkJCXBzZXVkb19kZWJ1ZyhQREJHRl9QQVRIIHwgUERCR0ZfVkVSQk9TRSwgImlnbm9yaW5n
IHBhdGg6ICclcydcbiIsIHBhdGgpOworCQkJcmV0dXJuIDE7CiAJCX0KKworCQlwID0gbmV4dCsx
K3RyYWlsaW5nX3NsYXNoZXNfY291bnQ7CiAJfQorCisJZnJlZShlbnYpOwogCXJldHVybiAwOwog
fQogCi1pbnQgcHNldWRvX2NsaWVudF9pZ25vcmVfcGF0aChjb25zdCBjaGFyICpwYXRoKSB7Citp
bnQKK3BzZXVkb19jbGllbnRfaWdub3JlX3BhdGgoY29uc3QgY2hhciAqcGF0aCkgewogCXJldHVy
biBwc2V1ZG9fY2xpZW50X2lnbm9yZV9wYXRoX2Nocm9vdChwYXRoLCAxKTsKIH0KIAotLSAKMi4y
NS4xCgo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>4764</attachid>
            <date>2021-01-28 13:01:21 +0000</date>
            <delta_ts>2021-01-28 13:01:21 +0000</delta_ts>
            <desc>pseudo patch for pseudo_client_ignore_path_chroot</desc>
            <filename>0001-pseudo_client-fixed-bug-with-PSEUDO_IGNORE_PATHS-app.patch</filename>
            <type>text/plain</type>
            <size>5430</size>
            <attacher name="Krayushkin Konstantin">ip.jango</attacher>
            
              <data encoding="base64">RnJvbSBmMzUwNzM4MWYyMTg5NWJjNDU2MDQ5YWIyNzkzNDg5ODg0ZmQwZDAwIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBLcmF5dXNoa2luIEtvbnN0YW50aW4gPGtrcmF5dXNoa2luQGxp
bnRlY2gucnU+CkRhdGU6IE1vbiwgMjUgSmFuIDIwMjEgMTc6NDI6MzkgKzAzMDAKU3ViamVjdDog
W1BBVENIIHYyXSBwc2V1ZG9fY2xpZW50OiBmaXhlZCBidWcgd2l0aCBQU0VVRE9fSUdOT1JFX1BB
VEhTIGFwcGxpY2F0aW9uCiBmb3IgYWN0dWFsIHBhdGggc3RyaW5nCgpCdWcgd2FzIGRldGVjdGVk
IGluIFlvY3RvIHByb2plY3QsIHdoaWxlIG1pZ3JhdGluZyBmcm9tIDMuMS4xIHRvIDMuMiwgaW4g
ZnVuY3Rpb24KJ3BzZXVkb19jbGllbnRfaWdub3JlX3BhdGhfY2hyb290Jy4KCkhlcmUgaXMgZXhh
Y3QgY2FzZSwgd2hlcmUgcHJldmlvdXMgaW1wbGVtZXRhdGlvbiBmYWlsZWQ6ClBTRVVET19JR05P
UkVfUEFUSFM9Ii4uLiwvd29yay95b2N0by9idWlsZC15b2N0by9idWlsZC90bXAvd29yay9jb3J0
ZXhhOXQyaGYtbmVvbi1wb2t5LWxpbnV4LWdudWVhYmkvbHBhY2svMjAwNzA2MjktcjAvcGFjaywu
Li4iCnRoaXMgd2FzIGFwcGxpZWQgdG8gcGF0aCAiL3dvcmsveW9jdG8vYnVpbGQteW9jdG8vYnVp
bGQvdG1wL3dvcmsvY29ydGV4YTl0MmhmLW5lb24tcG9reS1saW51eC1nbnVlYWJpL2xwYWNrLzIw
MDcwNjI5LXIwL3BhY2thZ2UiCmFuZCB0cmlnZ2VyZWQgdGhlIGlnbm9yYW5jZSAoJ3BzZXVkb19j
bGllbnRfaWdub3JlX3BhdGhfY2hyb290JyByZXR1cm5lZCAnMScpLgoKVGhpcyB3YXMgYSBtaXN0
YWtlLCBiZWNhdXNlICcuLi4vbHBhY2svMjAwNzA2MjktcjAvcGFjaycgYW5kICcuLi4vbHBhY2sv
MjAwNzA2MjktcjAvcGFja2FnZScKYXJlIGFjdHVhbGx5IHR3byBjb21wbGl0YWxseSBkaWZmZXJl
bnQgZGlyZWN0b3JpZXMsIGJ1dCB3aXRoIHZlcnkgc2ltaWxhciBuYW1lczsgJy4uLi9wYWNrJwpz
aG91bGQgaGF2ZSBiZWVuIGlnbm9yZWQsIGJ1dCAnLi4uL3BhY2thZ2UnIC0gc2hvdWxkIGhhdmUg
bm90LgoKQWxnb3JpdGhtIGluICdwc2V1ZG9fY2xpZW50X2lnbm9yZV9wYXRoX2Nocm9vdCcgd2Fz
IHVwZ3JhZGVkIGFuZCB0ZXN0ZWQgb24gdGhpcyBkYXRhOgoxKSBQU0VVRE9fSUdOT1JFX1BBVEhT
PSIvcGF0aDAvc29tZS9wYXRoLC9wYXRoMS8sL3BhdGgyLC9wYXRoMy9zdWIvcGF0aCwvcGF0aDQv
d2l0aC9maWxlLmV4dCwvcGF0aDUvc3ViL3BhdGgvIgoyKSAgYXNzZXJ0KHBzZXVkb19jbGllbnRf
aWdub3JlX3BhdGgoIi9wYXRoMSIpID09IDEpOwogICAgYXNzZXJ0KHBzZXVkb19jbGllbnRfaWdu
b3JlX3BhdGgoIi9wYXRoMiIpID09IDEpOwogICAgYXNzZXJ0KHBzZXVkb19jbGllbnRfaWdub3Jl
X3BhdGgoIi9wYXRoMy9zdWIvcGF0aCIpID09IDEpOwogICAgYXNzZXJ0KHBzZXVkb19jbGllbnRf
aWdub3JlX3BhdGgoIi9wYXRoMy9zdWIvcGF0aC8iKSA9PSAxKTsKICAgIGFzc2VydChwc2V1ZG9f
Y2xpZW50X2lnbm9yZV9wYXRoKCIvcGF0aDQvd2l0aC9maWxlLmV4dCIpID09IDEpOwogICAgYXNz
ZXJ0KHBzZXVkb19jbGllbnRfaWdub3JlX3BhdGgoIi9wYXRoNS9zdWIvcGF0aCIpID09IDEpOwog
ICAgYXNzZXJ0KHBzZXVkb19jbGllbnRfaWdub3JlX3BhdGgoIi9wYXRoNS9zdWIvcGF0aC8iKSA9
PSAxKTsKCiAgICBhc3NlcnQocHNldWRvX2NsaWVudF9pZ25vcmVfcGF0aCgiL3BhdGgxL3N1Yi9w
YXRoIikgPT0gMSk7CiAgICBhc3NlcnQocHNldWRvX2NsaWVudF9pZ25vcmVfcGF0aCgiL3BhdGgx
L3N1Yi9wYXRoLyIpID09IDEpOwogICAgYXNzZXJ0KHBzZXVkb19jbGllbnRfaWdub3JlX3BhdGgo
Ii9wYXRoMy9zdWIvcGF0aC9hbmQvbW9yZS8iKSA9PSAxKTsKICAgIGFzc2VydChwc2V1ZG9fY2xp
ZW50X2lnbm9yZV9wYXRoKCIvcGF0aDUvc3ViL3BhdGgvYW5kL21vcmUiKSA9PSAxKTsKCiAgICBh
c3NlcnQocHNldWRvX2NsaWVudF9pZ25vcmVfcGF0aCgiL3BhdGgwL3NvbWUiKSA9PSAwKTsKICAg
IGFzc2VydChwc2V1ZG9fY2xpZW50X2lnbm9yZV9wYXRoKCIvcGF0aDMvYW5vdGhlci9wYXRoIikg
PT0gMCk7CiAgICBhc3NlcnQocHNldWRvX2NsaWVudF9pZ25vcmVfcGF0aCgiL3BhdGgzL2Fub3Ro
ZXIvcGF0aC8iKSA9PSAwKTsKICAgIGFzc2VydChwc2V1ZG9fY2xpZW50X2lnbm9yZV9wYXRoKCIv
cGF0aDQvd2l0aC9maWxlLmV4dDIiKSA9PSAwKTsKICAgIGFzc2VydChwc2V1ZG9fY2xpZW50X2ln
bm9yZV9wYXRoKCIvcGF0aDQvd2l0aDIvZmlsZS5leHQiKSA9PSAwKTsKClNpZ25lZC1vZmYtYnk6
IEtvbnN0YW50aW4gS3JheXVzaGtpbiA8a2tyYXl1c2hraW5AbGludGVjaC5ydT4KLS0tCiBwc2V1
ZG9fY2xpZW50LmMgfCA4MCArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0tLS0t
LS0tLS0tLS0tCiAxIGZpbGUgY2hhbmdlZCwgNTcgaW5zZXJ0aW9ucygrKSwgMjMgZGVsZXRpb25z
KC0pCgpkaWZmIC0tZ2l0IGEvcHNldWRvX2NsaWVudC5jIGIvcHNldWRvX2NsaWVudC5jCmluZGV4
IDExNmQ5MjYuLmFiZDczNDkgMTAwNjQ0Ci0tLSBhL3BzZXVkb19jbGllbnQuYworKysgYi9wc2V1
ZG9fY2xpZW50LmMKQEAgLTE1MTksNDAgKzE1MTksNzQgQEAgYmFzZV9wYXRoKGludCBkaXJmZCwg
Y29uc3QgY2hhciAqcGF0aCwgaW50IGxlYXZlX2xhc3QpIHsKIAlyZXR1cm4gbmV3cGF0aDsKIH0K
IAotaW50IHBzZXVkb19jbGllbnRfaWdub3JlX2ZkKGludCBmZCkgeworaW50Citwc2V1ZG9fY2xp
ZW50X2lnbm9yZV9mZChpbnQgZmQpIHsKIAlpZiAoZmQgPj0gMCAmJiBmZCA8PSBuZmRzKQogCQly
ZXR1cm4gcHNldWRvX2NsaWVudF9pZ25vcmVfcGF0aChmZF9wYXRoKGZkKSk7CiAJcmV0dXJuIDA7
CiB9CiAKLWludCBwc2V1ZG9fY2xpZW50X2lnbm9yZV9wYXRoX2Nocm9vdChjb25zdCBjaGFyICpw
YXRoLCBpbnQgaWdub3JlX2Nocm9vdCkgeworc3RhdGljIGludAorcHNldWRvX2NsaWVudF9pZ25v
cmVfcGF0aF9jaHJvb3QoY29uc3QgY2hhciAqcGF0aCwgaW50IGlnbm9yZV9jaHJvb3QpIHsKIAlj
aGFyICplbnY7Ci0JaWYgKHBhdGgpIHsKLQkJaWYgKGlnbm9yZV9jaHJvb3QgJiYgcHNldWRvX2No
cm9vdCAmJiBzdHJuY21wKHBhdGgsIHBzZXVkb19jaHJvb3QsIHBzZXVkb19jaHJvb3RfbGVuKSA9
PSAwKQotCQkJcmV0dXJuIDA7Ci0JCWVudiA9IHBzZXVkb19nZXRfdmFsdWUoIlBTRVVET19JR05P
UkVfUEFUSFMiKTsKLQkJaWYgKGVudikgewotCQkJY2hhciAqcCA9IGVudjsKLSAgICAgICAgCSAg
ICAgICAgd2hpbGUgKCpwKSB7Ci0JCQkJY2hhciAqbmV4dCA9IHN0cmNocihwLCAnLCcpOwotCQkJ
CWlmICghbmV4dCkKLQkJCQkgICAgbmV4dCA9IHN0cmNocihwLCAnXDAnKTsKLQkJCQlpZiAoKG5l
eHQgLSBwKSAmJiAhc3RybmNtcChwYXRoLCBwLCBuZXh0IC0gcCkpIHsKLQkJIAkJCXBzZXVkb19k
ZWJ1ZyhQREJHRl9QQVRIIHwgUERCR0ZfVkVSQk9TRSwgImlnbm9yaW5nIHBhdGg6ICclcydcbiIs
IHBhdGgpOwotCQkJCQlyZXR1cm4gMTsKLQkJCQl9Ci0JCQkJaWYgKG5leHQgJiYgKm5leHQgIT0g
J1wwJykKLQkJCQkJcCA9IG5leHQrMTsKLQkJCQllbHNlCi0JCQkJCWJyZWFrOwotCQkJfQotCQkJ
ZnJlZShlbnYpOworCWNoYXIgKnA7CisJY2hhciAqbmV4dDsKKwlpbnQgdHJhaWxpbmdfc2xhc2hl
c19jb3VudDsKKwljaGFyIGxvZ19idWZmWzI1Nl07CisKKwlpZiAoIXBhdGggfHwgKnBhdGggPT0g
J1wwJykKKwkJcmV0dXJuIDA7CisKKwlpZiAoaWdub3JlX2Nocm9vdCAmJiBwc2V1ZG9fY2hyb290
ICYmIHN0cm5jbXAocGF0aCwgcHNldWRvX2Nocm9vdCwgcHNldWRvX2Nocm9vdF9sZW4pID09IDAp
CisJCXJldHVybiAwOworCisJZW52ID0gcHNldWRvX2dldF92YWx1ZSgiUFNFVURPX0lHTk9SRV9Q
QVRIUyIpOworCWlmICghZW52KQorCQlyZXR1cm4gMDsKKworCW1lbXNldChsb2dfYnVmZiwgMCwg
MjU2KTsKKworCXAgPSBlbnY7CisJd2hpbGUgKCpwKSB7CisJCXRyYWlsaW5nX3NsYXNoZXNfY291
bnQgPSAwOworCQluZXh0ID0gc3RyY2hyKHAsICcsJyk7CisJCWlmICghbmV4dCkKKwkJCW5leHQg
PSBzdHJjaHIocCwgJ1wwJyk7CisJCWlmICghbmV4dCkgLy8ganVzdCBpbiBjYXNlCisJCQlicmVh
azsKKworCQkvLyB0YWtlIGludG8gYWNjb3VudCB0cmFpbGluZyBzbGFzaGVzIGluICdQU0VVRE9f
SUdOT1JFX1BBVEhTJyBpdGVtIC0gdGhleSBtYXkgbGVhZCB0byBzdWNoCisJCS8vIGNhc2UsIHRo
YXQgJy91c3InIGZhaWxzIHRlc3QgYWdhaW5zdCAnL3Vzci8nCisJCXdoaWxlICgqKG5leHQtMSkg
PT0gJy8nICYmIG5leHQtMS1wID4gMCkgeworCQkJbmV4dC0tOworCQkJdHJhaWxpbmdfc2xhc2hl
c19jb3VudCsrOworCQl9CisKKwkJLyoKKwkJICogaGVyZSB3ZSBhcmUgbWF0Y2hpbmcgJ3BhdGgn
IGFnYWluc3QgJ1BTRVVET19JR05PUkVfUEFUSFMnIGl0ZW07IGNhc2VzIHNob3VsZCBiZSBjaGVj
a2VkOgorCQkgKiAtICdwYXRoJyBsZW5ndGggaXMgZ3JlYXRlciBvciBlcXVhbHMgdG8gJ1BTRVVE
T19JR05PUkVfUEFUSFMnIGl0ZW0gbGVuZ3RoCisJCSAqIC0gYm90aCAnUFNFVURPX0lHTk9SRV9Q
QVRIUycgaXRlbSBhbmQgJ3BhdGgnIGFyZSBtYXRjaGVkIGJ5IHBhdGhzIHNlZ21lbnRzLCBzbyAn
aWdub3JlPS9zb21lL3BhJyBkb2Vzbid0CisJCSAqICAgYXBwbHkgdG8gJ3BhdGg9L3NvbWUvcGF0
aCcodGhlZXNlIGFyZSBkaXN0aW5jdCBwYXRocyksIGJ1dCAnaWdub3JlPS9zb21lL3BhJyBmaWx0
ZXJzIG91dCAncGF0aD0vc29tZS9wYS90aCcKKwkJICogLSB3aG9sZSAnUFNFVURPX0lHTk9SRV9Q
QVRIUycgaXRlbSBzdHJpbmcgaXMgcGFydCBvZiAncGF0aCcgc3RyaW5nIChhY2NvcmRpbmcgdG8g
cGF0aCBzZWdtZW50cywgc2VlIGFib3ZlKQorCQkgKi8gCisJCWlmICgocGF0aFtuZXh0LXBdID09
ICdcMCcgfHwgcGF0aFtuZXh0LXBdID09ICcvJykgJiYgc3RybmNtcChwYXRoLCBwLCBuZXh0LXAp
ID09IDApIHsKKwkJCW1lbWNweShsb2dfYnVmZiwgcCwgKG5leHQtcCkgPiAyNTUgPyAyNTUgOiAo
bmV4dC1wKSk7CisJCQlwc2V1ZG9fZGVidWcoUERCR0ZfUEFUSCB8IFBEQkdGX1ZFUkJPU0UsICJp
Z25vcmluZyBwYXRoOiAnJXMnIGJ5ICclcydcbiIsIHBhdGgsIGxvZ19idWZmKTsKKwkJCXJldHVy
biAxOwogCQl9CisKKwkJaWYgKCpuZXh0ID09ICdcMCcpCisJCQlicmVhazsKKwkJZWxzZQorCQkJ
cCA9IG5leHQrMSt0cmFpbGluZ19zbGFzaGVzX2NvdW50OwogCX0KKworCWZyZWUoZW52KTsKIAly
ZXR1cm4gMDsKIH0KIAotaW50IHBzZXVkb19jbGllbnRfaWdub3JlX3BhdGgoY29uc3QgY2hhciAq
cGF0aCkgeworaW50Citwc2V1ZG9fY2xpZW50X2lnbm9yZV9wYXRoKGNvbnN0IGNoYXIgKnBhdGgp
IHsKIAlyZXR1cm4gcHNldWRvX2NsaWVudF9pZ25vcmVfcGF0aF9jaHJvb3QocGF0aCwgMSk7CiB9
CiAKLS0gCjIuMjUuMQoK
</data>

          </attachment>
      

    </bug>

</bugzilla>