Message-Id: <199903011812.SAA19946@out2.ibm.net> From: "Mark E." To: djgpp-workers AT delorie DOT com Date: Mon, 1 Mar 1999 13:12:27 -0500 MIME-Version: 1.0 Content-type: Multipart/Mixed; boundary=Message-Boundary-22211 Subject: Re: chroot patches r3 References: <199902281957 DOT TAA94214 AT out5 DOT ibm DOT net> In-reply-to: X-mailer: Pegasus Mail for Win32 (v3.01d) Reply-To: djgpp-workers AT delorie DOT com --Message-Boundary-22211 Content-type: text/plain; charset=US-ASCII Content-transfer-encoding: 7BIT Content-description: Mail message body > > + int > > + fchroot (int fd) > > + { > > + unsigned int flags = __chroot_flags; > > + > > + if (fd < 0) > > + { > > + errno = EINVAL; > > + return -1; > > + } > > I think errno should be set here to EBADF, not EINVAL. Since an attempt to open() a directory will return -1 for a file descriptor, I think for now it might be better to remove that check since it would interfere with the very incompatibility that is being worked around. Also, I've attached patches for chroot.txh and fchroot.txh, plus patches for crt1.c and a revised patch for c1root.c. Mark --- Mark Elbrecht snowball3 AT usa DOT net http://members.xoom.com/snowball3/ --Message-Boundary-22211 Content-type: text/plain; charset=US-ASCII Content-disposition: inline Content-description: Attachment information. The following section of this message contains a file attachment prepared for transmission using the Internet MIME message format. If you are using Pegasus Mail, or any another MIME-compliant system, you should be able to save it or view it from within your mailer. If you cannot, please ask your system administrator for assistance. ---- File information ----------- File: djgpp1.dif Date: 1 Mar 1999, 13:08 Size: 8069 bytes. Type: Unknown --Message-Boundary-22211 Content-type: Application/Octet-stream; name="djgpp1.dif"; type=Unknown Content-disposition: attachment; filename="djgpp1.dif" Content-transfer-encoding: BASE64 KioqIHNyYy9saWJjL2NydDAvY3J0MS5jLm9yaWcJVGh1IFNlcCAxNyAwNTo1MDoyMiAxOTk4 DQotLS0gc3JjL2xpYmMvY3J0MC9jcnQxLmMJRnJpIEZlYiAyNiAxNzo1MTo0MiAxOTk5DQoq KioqKioqKioqKioqKioNCioqKiAxLDMgKioqKg0KLS0tIDEsNCAtLS0tDQorIC8qIENvcHly aWdodCAoQykgMTk5OSBESiBEZWxvcmllLCBzZWUgQ09QWUlORy5ESiBmb3IgZGV0YWlscyAq Lw0KICAvKiBDb3B5cmlnaHQgKEMpIDE5OTggREogRGVsb3JpZSwgc2VlIENPUFlJTkcuREog Zm9yIGRldGFpbHMgKi8NCiAgLyogQ29weXJpZ2h0IChDKSAxOTk3IERKIERlbG9yaWUsIHNl ZSBDT1BZSU5HLkRKIGZvciBkZXRhaWxzICovDQogIC8qIENvcHlyaWdodCAoQykgMTk5NiBE SiBEZWxvcmllLCBzZWUgQ09QWUlORy5ESiBmb3IgZGV0YWlscyAqLw0KKioqKioqKioqKioq KioqDQoqKiogMTg5LDE5NCAqKioqDQotLS0gMTkwLDE5NiAtLS0tDQogICAgX19jcnQwX3Nl dHVwX2FyZ3VtZW50cygpOw0KICAgIF9ucHhzZXR1cChfX2NydDBfYXJndiA/IF9fY3J0MF9h cmd2WzBdIDogX19kb3NfYXJndjApOw0KICAgIF9jcnQwX2luaXRfbWNvdW50KCk7DQorICAg X19jcnQwX3NldHVwX2Nocm9vdCgpOw0KICAgIF9fbWFpbigpOw0KICAgIGVycm5vID0gMDsJ LyogQU5TSSBzYXlzIGVycm5vIHNob3VsZCBiZSB6ZXJvIGF0IHByb2dyYW0gc3RhcnR1cCAq Lw0KICAgIGV4aXQobWFpbihfX2NydDBfYXJnYywgX19jcnQwX2FyZ3YsIGVudmlyb24pKTsN CioqKiBzcmMvbGliYy9jb21wYXQvdW5pc3RkL2Nocm9vdC50eGgub3JpZwlTdW4gRmViIDI4 IDE0OjI1OjAyIDE5OTkNCi0tLSBzcmMvbGliYy9jb21wYXQvdW5pc3RkL2Nocm9vdC50eGgJ TW9uIE1hciAgMSAxMzowMDoyMiAxOTk5DQoqKioqKioqKioqKioqKioNCioqKiAwICoqKioN Ci0tLSAxLDc0IC0tLS0NCisgQG5vZGUgY2hyb290LCBmaWxlIHN5c3RlbQ0KKyBAc3ViaGVh ZGluZyBTeW50YXgNCisgDQorIEBleGFtcGxlDQorICNpbmNsdWRlIDx1bmlzdGQuaD4NCisg DQorIGV4dGVybiB1bnNpZ25lZCBpbnQgX19jaHJvb3RfZmxhZ3M7DQorIA0KKyBpbnQgY2hy b290KGNvbnN0IGNoYXIgKm5ld19yb290X2RpcmVjdG9yeSk7DQorIEBlbmQgZXhhbXBsZQ0K KyANCisgQHN1YmhlYWRpbmcgRGVzY3JpcHRpb24NCisgDQorIENhdXNlcyBAdmFye25ld19y b290X2RpcmVjdG9yeX0gdG8gYmVjb21lIHRoZSByb290IGRpcmVjdG9yeSwgb3Igc3RhcnRp bmcgcG9pbnQsIGZvciBwYXRoIG5hbWUgc2VhcmNoZXMgYmVnaW5uaW5nIHdpdGggQGZpbGV7 Jy8nfSBvciBAZmlsZXsnXCd9LiBUaGUgY3VycmVudCB3b3JraW5nIGRpcmVjdG9yeSBpcyB1 bmFmZmVjdGVkLg0KKyANCisgQnkgZGVmYXVsdCwgQGNvZGV7Y2hyb290fSBpcyBzZXQgdG8g VW5peCBjb21wYXRpYmlsaXR5IG9yIHJlc3RyaWN0aXZlIG1vZGUuIEluIHRoaXMgbW9kZSwg QHZhcntuZXdfcm9vdF9kaXJlY3Rvcnl9IGNhbiBiZSBhbnkgZXhpc3RpbmcgZGlyZWN0b3J5 LiBJbiBzdWNjZXNzaXZlIGNhbGxzLCBAdmFye25ld19yb290X2RpcmVjdG9yeX0gbXVzdCBl eGlzdCBhbmQgYmUgcmVsYXRpdmUgdG8gdGhlIGN1cnJlbnQgcm9vdCBkaXJlY3RvcnksIG9y IGVsc2UgdGhlIGNhbGwgZmFpbHMuIFRoZSBvbmx5IHdheSB0byByZXNldCB0aGUgcm9vdCBk aXJlY3RvcnkgaXMgd2l0aCBhIGNhbGwgdG8gQHhyZWZ7ZmNocm9vdH0uIFRoaXMgbWltaWNz IHRoZSBiZWhhdmlvciBvZiBVbml4IHZlcnNpb25zIG9mIEBjb2Rle2Nocm9vdH0uDQorIA0K KyBUaGUgb3RoZXIgYXZhaWxhYmxlIG1vZGUgaXMgQmFzaCBjb21wYXRpYmlsaXR5IG9yIHBl cm1pc3NpdmUgbW9kZS4gSW4gdGhpcyBtb2RlLCBAdmFye25ld19yb290X2RpcmVjdG9yeX0g bXVzdCBzdGlsbCBleGlzdCwgYnV0IGl0IG5lZWQgbm90IGJlIHJlbGF0aXZlIHRvIHRoZSBj dXJyZW50IHJvb3QgbGlrZSBpbiByZXN0cmljdGl2ZSBtb2RlLiBUaGlzIG1pbWljcyB0aGUg YmVoYXZpb3Igb2YgdGhlIEBjb2Rle1NZU1JPT1R9IGVudmlyb25tZW50IHZhcmlhYmxlIGlu IHRoZSBESkdQUCBwb3J0IG9mIEJhc2ggMS4xNDcuDQorIA0KKyBUbyBhbGxvdyBhIGNoaWxk IHByb2dyYW0gdG8gaW5oZXJpdCB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgaXRzIHBhcmVudCwg QGNvZGV7Y2hkaXJ9IHNldHMgdGhlIGVudmlyb25tZW50IHZhcmlhYmxlcyBAY29kZXtST09U fSBhbmQgQGNvZGV7Q0hST09UX1VOSVh9LiBJZiBzZXQsIEBjb2Rle1JPT1R9IHdpbGwgY29u dGFpbiB0aGUgcm9vdCBkaXJlY3RvcnkuIElmIEB2YXJ7Q0hST09UX1VOSVgpIGlzIG5vdCBz ZXQgb3IgaXMgc2V0IHRvICdZJywgQGNvZGV7Y2hyb290fSBpcyBzZXQgdG8gZW5mb3JjZSB0 aGUgcmVzdHJpY3RpdmUgVW5peCBiZWhhdmlvci4gSWYgQGNvZGV7Q0hST09UX1VOSVh9IGlz IHNldCB0byBhbnl0aGluZyBvdGhlciB0aGFuICdZJywgdGhlbiBAY29kZXtjaHJvb3R9IGlz IHNldCB0byBhbGxvdyB0aGUgcGVybWlzc2l2ZSBiZWhhdmlvci4gQGNvZGV7U1lTUk9PVH0s IGFuIGVudmlyb25tZW50IHZhcmlhYmxlIHVzZWQgYnkgdGhlIERKR1BQIHBvcnQgb2YgQmFz aCAxLjE0NywgaXMgc3VwcG9ydGVkIGluIHRoZSBpbnRlcmVzdCBvZiBiYWNrd2FyZCBjb21w YXRpYmlsaXR5IGJ1dCBpdHMgdXNlIGlzIGRpc2NvdXJhZ2VkLiBJZiBAY29kZXtST09UfSBp cyBub3Qgc2V0LCBidXQgQGNvZGV7U1lTUk9PVH0gaXMsIHRoZW4gQGNvZGV7U1lTUk9PVH0g aXMgdXNlZCB0byBzZXQgdGhlIHJvb3QgZGlyZWN0b3J5LCBhbmQgQGNvZGV7Y2hyb290fSBp cyBzZXQgdG8gcGVybWlzc2l2ZSBtb2RlLCBhbmQgQGNvZGV7Q0hST09UX1VOSVh9IGlzIGln bm9yZWQuDQorIA0KKyBUaGUgZ2xvYmFsIHZhcmlhYmxlIEBjb2Rle19fY2hyb290X2ZsYWdz fSBjYW4gYmUgc2V0IHRvIGluY2x1ZGUgdGhlDQorIGZvbGxvd2luZyB2YWx1ZXMgdG8gY29u dHJvbCB0aGUgb3BlcmF0aW9uIG9mIEBjb2Rle2Nocm9vdH06DQorIA0KKyBAdGFibGUgQGNv ZGUNCisgDQorIEBpdGVtIF9fQ0hST09UX1VOSVhfTU9ERV9GTEFHDQorIA0KKyBJZiBzZXQs IEBjb2Rle2Nocm9vdH0gaXMgaW4gVW5peCBjb21wYXRpYmlsaXR5IG9yIHJlc3RyaWN0aXZl IG1vZGUuIElmIG5vdCBzZXQsIEBjb2Rle2Nocm9vdH0gaXMgaW4gQmFzaCBjb21wYXRpYmls aXR5IG9yIHBlcm1pc3NpdmUgbW9kZS4gU2VlIHRoZSBhYm92ZSBkZXNjcmlwdGlvbiBmb3Ig aG93IHRoZXNlIHR3byBtb2RlcyBkaWZmZXIuDQorIA0KKyBAZW5kIHRhYmxlDQorIA0KKyBA c3ViaGVhZGluZyBSZXR1cm4gVmFsdWUNCisgDQorIFplcm8gaWYgc3VjY2Vzc2Z1bCwgZWxz ZSBub256ZXJvIGFuZCBAY29kZXtlcnJub30gc2V0IGlmIGVycm9yLg0KKyANCisgQHN1Ymhl YWRpbmcgUG9ydGFiaWxpdHkNCisgDQorIEBwb3J0LW5vdGUgVGhlIHZhcmlhYmxlIEBjb2Rl e19fY2hyb290X2ZsYWdzfSBpcyBESkdQUCBzcGVjaWZpYy4NCisgQHBvcnRhYmlsaXR5ICFh bnNpLCAhcG9zaXgNCisgDQorIEBzdWJoZWFkaW5nIEV4YW1wbGUNCisgDQorIEBleGFtcGxl DQorIEluIG91ciBleGFtcGxlcywgYXNzdW1lICdjOi9kamdwcCcgYW5kICdjOi9kamdwcC9i aW4vZ2NjLmV4ZScgZXhpc3QuDQorIA0KKyBBbiBleGFtcGxlIGZvciBVbml4IGNvbXBhdGli aWxpdHkgb3IgcmVzdHJpY3RpdmUgbW9kZToNCisgDQorIGNocm9vdCgiYzovZGpncHAiKTsN CisgDQorIC8qIFRoaXMgY2FsbCB3aWxsIG5vdCBzdWNjZWVkLiBSb290IHdpbGwgbm90IGJl IGNoYW5nZWQuICovDQorIGNocm9vdCgiYzovIik7DQorIA0KKyAvKiBDaGVja3MgYzovZGpn cHAvYmluL2djYy5leGUgKi8NCisgaWYgKGFjY2VzcygiL2Jpbi9nY2MuZXhlIiwgUl9PSykg PT0gMCkNCisgICBwcmludGYoImdjYy5leGUgZm91bmQiKTsgIA0KKyANCisgLyogU3VjY2Vl ZHMgYmVjYXVzZSAnYzovZGpncHAvYmluJyBpcyByZWxhdGl2ZSB0byAnYzovZGpncHAnLg0K KyAgICBQYXNzaW5nIGluICcvYmluJyB3b3VsZCBoYXZlIGFsc28gd29ya2VkLiAqLw0KKyBj aHJvb3QoImM6L2RqZ3BwL2JpbiIpOw0KKyANCisgQW4gZXhhbXBsZSBmb3IgQmFzaCBjb21w YXRpYmlsaXR5IG9yIHBlcm1pc3NpdmUgbW9kZToNCisgLyogRGlzYWJsZSBVbml4IGNvbXBh dGliaWxpdHkgb3IgcmVzdHJpY3RpdmUgbW9kZS4gKi8NCisgX19jaHJvb3RfZmxhZ3MgPSAw Ow0KKyANCisgY2hyb290KCJjOi9kamdwcCIpOw0KKyANCisgLyogVGhpcyB3aWxsIHN1Y2Nl ZWQgc2luY2UgZGlyZWN0b3J5IG5lZWQgbm90IGJlIHJlbGF0aXZlDQorICAgIHRvICdjOi9k amdwcCcgbGlrZSBpbiB0aGUgZmlyc3QgZXhhbXBsZS4gKi8NCisgY2hyb290KCJjOi8iKTsN CisgDQorIGNocm9vdCgiZDovd2luZG93cyIpOw0KKyBAZW5kIGV4YW1wbGUNCisgDQoqKiog c3JjL2xpYmMvY29tcGF0L3VuaXN0ZC9mY2hyb290LnR4aC5vcmlnCVN1biBGZWIgMjggMTQ6 MjQ6NTggMTk5OQ0KLS0tIHNyYy9saWJjL2NvbXBhdC91bmlzdGQvZmNocm9vdC50eGgJTW9u IE1hciAgMSAxMDoxODoxOCAxOTk5DQoqKioqKioqKioqKioqKioNCioqKiAwICoqKioNCi0t LSAxLDM0IC0tLS0NCisgQG5vZGUgZmNocm9vdCwgZmlsZSBzeXN0ZW0NCisgQHN1YmhlYWRp bmcgU3ludGF4DQorIA0KKyBAZXhhbXBsZQ0KKyAjaW5jbHVkZSA8dW5pc3RkLmg+DQorIA0K KyBpbnQgZmNocm9vdChpbnQgZmlsZV9oYW5kbGUpOw0KKyBAZW5kIGV4YW1wbGUNCisgDQor IEBzdWJoZWFkaW5nIERlc2NyaXB0aW9uDQorIA0KKyBDbGVhcnMgdGhlIHJvb3QgZGlyZWN0 b3J5IHNldCBieSBhbnkgcHJldmlvdXMgY2FsbHMgdG8gQHhyZWZ7Y2hyb290fS4gIER1ZSB0 byB0aGUgZmFjdCB0aGF0IERPUyBkb2VzIG5vdCBhbGxvdyB5b3UgdG8gb2J0YWluIGEgZmls ZSBoYW5kbGUgdG8gYSBkaXJlY3RvcnksIEB2YXJ7ZmlsZV9oYW5kbGV9IGlzIGlnbm9yZWQg Zm9yIG5vbi1uZWdhdGl2ZSB2YWx1ZXMuIFRoaXMgZG9lcyBpbnRyb2R1Y2UgYW4gaW5jb21w YXRpYmlsaXR5IHdpdGggVW5peC4gSG93ZXZlciwgc2luY2UgQGNvZGV7ZmNocm9vdH0gaW4g VW5peCBpcyBndWFyYW50ZWVkIHRvIHN1Y2NlZWQgb25seSB3aGVuIGNoYW5naW5nIHRvIHRo ZSBzeXN0ZW0gcm9vdCwgdGhpcyBmdW5jdGlvbiBzaG91bGQgYmUgcG9ydGFibGUgbW9zdCBv ZiB0aGUgdGltZS4NCisgDQorIEBzdWJoZWFkaW5nIFJldHVybiBWYWx1ZQ0KKyANCisgQWx3 YXlzIHJldHVybnMgemVybyBmb3Igc3VjY2VzcywgdW5sZXNzIEB2YXJ7ZmlsZV9oYW5kbGV9 IGlzIGxlc3MgdGhhbiB6ZXJvLg0KKyANCisgQHN1YmhlYWRpbmcgUG9ydGFiaWxpdHkNCisg DQorIEBwb3J0YWJpbGl0eSAhYW5zaSwgIXBvc2l4DQorIA0KKyBAc3ViaGVhZGluZyBFeGFt cGxlDQorIA0KKyBAZXhhbXBsZQ0KKyBjaHJvb3QoImM6L2RqZ3BwIik7DQorIGlmIChhY2Nl c3MoIi9iaW4vZ2NjLmV4ZSIsIFJfT0spIDwgMCkNCisgICBmcHJpbnRmKHN0ZGVyciwgImdj Yy5leGUgbm90IGZvdW5kIik7ICANCisgDQorIGZjaHJvb3QoMSk7DQorIA0KKyBpZiAoYWNj ZXNzKCIvYmluL2djYy5leGUiLCBSX09LKSA8IDApDQorICAgZnByaW50ZihzdGRlcnIsICJn Y2MuZXhlIG5vdCBmb3VuZCIpOyAgDQorIEBlbmQgZXhhbXBsZQ0KKyANCioqKiBzcmMvbGli Yy9jcnQwL2Mxcm9vdC5jLm9yaWcJU3VuIEZlYiAyOCAxNDowODoyMiAxOTk5DQotLS0gc3Jj L2xpYmMvY3J0MC9jMXJvb3QuYwlNb24gTWFyICAxIDEzOjA1OjE2IDE5OTkNCioqKioqKioq KioqKioqKg0KKioqIDAgKioqKg0KLS0tIDEsNjkgLS0tLQ0KKyAjaW5jbHVkZSA8bGliYy9y b290Lmg+DQorICNpbmNsdWRlIDxsaWJjL2Jzcy5oPg0KKyAjaW5jbHVkZSA8c3RkbGliLmg+ DQorICNpbmNsdWRlIDx1bmlzdGQuaD4NCisgDQorIC8qIEhlcmUgaXMgd2UgY2hlY2sgZm9y IHRocmVlIGVudmlyb25tZW50YWwgdmFyaWFibGVzDQorICAgIHRoYXQgbWF5IHJlc3VsdCBp biBhIGNhbGwgdG8gY2hyb290KCk6DQorICAgIFJPT1QgICAgICAgIC0gdGhlIHJvb3QgcGF0 aC4gQ2FuIGJlIHNldCBtYW51YWxseSBvciBieSBjaHJvb3QoKS4NCisgICAgQ0hST09UX1VO SVggLSBZIGlmIGNocm9vdCBpcyB0byBlbXVsYXRlIHRoZSByZXN0cmljdGl2ZQ0KKyAgICAg ICAgICAgICAgICAgIGJlaGF2aW9yIG9mIHRoZSBVbml4IGltcGxlbWVudGF0aW9ucy4NCisg CQkgQW55IG90aGVyIHZhbHVlIHRvIHNlbGVjdCB0aGUgbm9uLXJlc3RyaWN0aXZlDQorIAkJ IGJlaGF2aW9yIGltcGxlbWVudGVkIGJ5IEJhc2ggMS4xNDcuDQorICAgIFNZU1JPT1QgICAg IC0gQmFzaCAxLjE0NyBzZXRzIHRoaXMgdmFyaWFibGUgdG8gdGhlIGRpcmVjdG9yeSB0bw0K KyAgICAgICAgICAgICAgICAgIHVzZSB3aGVuIHNlYXJjaGluZyBmb3IgcGF0aCBuYW1lcyBi ZWdpbm5pbmcNCisgCQkgd2l0aCAnLycgb3IgJ1wnLiBJZiBST09UIGlzIHNldCwgdGhpcyB2 YXJpYWJsZQ0KKyAJCSBpcyBpZ25vcmVkLiBJZiBST09UIGlzIG5vdCBzZXQgYW5kIFNZU1JP T1QgZG9lcw0KKyAJCSBjb250YWluIGEgcGF0aCwgdGhlbiBjaHJvb3QoKSBlbXVsYXRlcyB0 aGUNCisgCQkgbm9uLXJlc3RyaWN0aXZlIGJlaGF2aW9yIG9mIEJhc2ggMS4xNDcgcmVnYXJk bGVzcw0KKyAJCSBvZiB0aGUgdmFsdWUgb2YgQ0hST09UX1VOSVguIFRoaXMgdmFyaWFibGUg aXMgY2hlY2tlZA0KKyAJCSB0byBtYWludGFpbiBiYWNrd2FyZCBjb21wYXRpYmlsaXR5IHdp dGggQmFzaCAxLjE0Ny4NCisgCQkgU29tZWRheSwgdGhpcyB2YXJpYWJsZSB3aWxsIGJlIGNv bXBsZXRlbHkgaWdub3JlZA0KKyAJCSBvbmNlIGEgREpHUFAgcG9ydCBvZiBCYXNoIDIgaGFz IGJlZW4gcmVsZWFzZWQNCisgCQkgYW5kIGlzIGluIHdpZGUgdXNlLiAqLw0KKyANCisgDQor IHN0YXRpYyBpbnQgX19zZXR1cF9yb290X2Jzc19jb3VudCA9IC0xOw0KKyANCisgdm9pZA0K KyBfX2NydDBfc2V0dXBfY2hyb290KCkNCisgew0KKyAgIGNoYXIgKnJvb3QgPSBnZXRlbnYo Uk9PVF9FTlYpOw0KKyAgIGNoYXIgKnN5c3Jvb3QgPSAocm9vdCA/IE5VTEwgOiBnZXRlbnYo IlNZU1JPT1QiKSk7DQorICAgY2hhciAqdW5peF9tb2RlID0gKCFzeXNyb290ID8gZ2V0ZW52 KENIUk9PVF9FTlYpIDogTlVMTCk7DQorICAgaW50IHJldF9jb2RlOw0KKyANCisgICBpZiAo dW5peF9tb2RlKQ0KKyAgIHsNCisgICAgIGlmICgqdW5peF9tb2RlID09ICdZJyB8fCAqdW5p eF9tb2RlID09ICd5JykNCisgICAgICAgX19jaHJvb3RfZmxhZ3MgPSBfX0NIUk9PVF9VTklY X01PREVfRkxBRzsNCisgICAgIGVsc2UNCisgICAgICAgX19jaHJvb3RfZmxhZ3MgPSAwOw0K KyAgIH0NCisgICBlbHNlIGlmIChzeXNyb290KQ0KKyAgICAgX19jaHJvb3RfZmxhZ3MgPSAw Ow0KKyANCisgICBpZiAoc3lzcm9vdCkNCisgICAgIHJvb3QgPSBzeXNyb290Ow0KKyANCisg ICBpZiAocm9vdCkNCisgICB7DQorICAgICBfX3NldHVwX3Jvb3RfYnNzX2NvdW50ID0gX19i c3NfY291bnQ7DQorICAgICAvKiBBYm9ydHMgaWYgY2FsbCB0byBjaHJvb3QoKSBmYWlscy4g Ki8NCisgICAgIGlmIChjaHJvb3Qocm9vdCkgPCAwKQ0KKyAgICAgew0KKyAvKiAgICAgIGZw cmludGYoc3RkZXJyLCAiQ2FsbCB0byBjaHJvb3QoJyVzJykgZmFpbGVkIGluIF9fY3J0MF9z ZXR1cF9jaHJvb3QoKVxuIiwgcm9vdCk7ICovDQorICAgICAgIGFib3J0KCk7DQorICAgICB9 DQorICAgfQ0KKyAgIC8qIElmIHdlIGhhdmUgYmVlbiByZXN0YXJ0ZWQsIGFuZCBST09UIG9y IFNZU1JPT1Qgd2FzIG5vdCBkZWZpbmVkLA0KKyAgICAgIHRoZW4gcmVzZXQgdGhlIGRlZmF1 bHRzLiAqLw0KKyAgIGVsc2UgaWYgKF9fc2V0dXBfcm9vdF9ic3NfY291bnQgIT0gX19ic3Nf Y291bnQpDQorICAgew0KKyAgICAgX19kamdwcF9yb290WzBdID0gJ1wwJzsNCisgICAgIF9f ZGpncHBfcm9vdF9sZW4gPSAwOw0KKyAgICAgX19jaHJvb3RfZmxhZ3MgPSBfX0NIUk9PVF9V TklYX01PREVfRkxBRzsNCisgICAgIF9fc2V0dXBfcm9vdF9ic3NfY291bnQgPSBfX2Jzc19j b3VudDsNCisgICB9DQorIH0NCisgDQo= --Message-Boundary-22211--