From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 25060 invoked by alias); 29 Jun 2017 08:32:36 -0000 Mailing-List: contact zsh-workers-help@zsh.org; run by ezmlm Precedence: bulk X-No-Archive: yes List-Id: Zsh Workers List List-Post: List-Help: X-Seq: 41373 Received: (qmail 5162 invoked from network); 29 Jun 2017 08:32:35 -0000 X-Qmail-Scanner-Diagnostics: from aok120.rev.netart.pl by f.primenet.com.au (envelope-from , uid 7791) with qmail-scanner-2.11 (clamdscan: 0.99.2/21882. spamassassin: 3.4.1. Clear:RC:0(85.128.245.120):SA:0(0.0/5.0):. Processed in 3.275333 secs); 29 Jun 2017 08:32:35 -0000 X-Spam-Checker-Version: SpamAssassin 3.4.1 (2015-04-28) on f.primenet.com.au X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=unavailable autolearn_force=no version=3.4.1 X-Envelope-From: psprint@zdharma.org X-Qmail-Scanner-Mime-Attachments: |final_uplift_gdbm.diff| X-Qmail-Scanner-Zip-Files: | Received-SPF: none (ns1.primenet.com.au: domain at zdharma.org does not designate permitted sender hosts) X-Virus-Scanned: by amavisd-new using ClamAV (3) Date: Thu, 29 Jun 2017 10:32:16 +0200 From: Sebastian Gniazdowski To: zsh-workers@zsh.org Message-ID: Subject: [PATCH] gdbm bugfixes X-Mailer: Airmail (442) MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="5954bb10_51d8d77_168" --5954bb10_51d8d77_168 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Content-Disposition: inline Hello, the =22standard=22 (sent before) fixes, without double-module architectur= e, just fixes. In the persecution aura around me I better state that the = bugs are almost in 100% inherited from old db=5Fgdbm.c: - no deletehashtable() in custom hash-set-fn - no emptyhashtable() in custom hash-set-fn - call to *untie function to remove PM=5FREADONLY flag caused memory leak= , the flag is now removed directly, if user gave -u option to untie - data returned by libgdbm should be free()-d (e.g. key returned by gdbm=5F= nextkey) - freeparamnode() had if(delunset) condition, this caused memory leak =E2= =80=93 replaced with myfreeparamnode() This is effect of many days of work on zredis =E2=80=93 I'm saing that th= e topic is well excavated. Would still hope for two-module architecture, = if moddeps problem would be solved. -- =20 Sebastian Gniazdowski psprint /at/ zdharma.org --5954bb10_51d8d77_168 Content-Type: application/octet-stream Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="=?utf-8?Q?final=5Fuplift=5Fgdbm.diff?=" ZGlmZiAtLWdpdCBhL1NyYy9Nb2R1bGVzL2RiX2dkYm0uYyBiL1NyYy9Nb2R1bGVzL2RiX2dkYm0u YwppbmRleCAwYWIwZmU3Li42MzY5ZjllIDEwMDY0NAotLS0gYS9TcmMvTW9kdWxlcy9kYl9nZGJt LmMKKysrIGIvU3JjL01vZHVsZXMvZGJfZ2RibS5jCkBAIC00Miw3ICs0Miw5IEBAIHN0YXRpYyBQ YXJhbSBjcmVhdGVoYXNoKCBjaGFyICpuYW1lLCBpbnQgZmxhZ3MgKTsKIHN0YXRpYyBpbnQgYXBw ZW5kX3RpZWRfbmFtZSggY29uc3QgY2hhciAqbmFtZSApOwogc3RhdGljIGludCByZW1vdmVfdGll ZF9uYW1lKCBjb25zdCBjaGFyICpuYW1lICk7CiBzdGF0aWMgY2hhciAqdW5tZXRhZnlfemFsbG9j KGNvbnN0IGNoYXIgKnRvX2NvcHksIGludCAqbmV3X2xlbik7Ci1zdGF0aWMgdm9pZCBzZXRfbGVu Z3RoKGNoYXIgKmJ1ZiwgaW50IHNpemUpOworc3RhdGljIHZvaWQgbXlmcmVlcGFyYW1ub2RlKEhh c2hOb2RlIGhuKTsKKworc3RhdGljIGludCBub19kYXRhYmFzZV9hY3Rpb24gPSAwOwogCiAvKgog ICogTWFrZSBzdXJlIHdlIGhhdmUgYWxsIHRoZSBiaXRzIEknbSB1c2luZyBmb3IgbWVtb3J5IG1h cHBpbmcsIG90aGVyd2lzZQpAQCAtNzIsNyArNzQsNyBAQCBzdGF0aWMgY2hhciAqYmFja3R5cGUg PSAiZGIvZ2RibSI7CiAgKi8KIAogc3RydWN0IGdzdV9zY2FsYXJfZXh0IHsKLSAgICBzdHJ1Y3Qg Z3N1X3NjYWxhciBzdGQ7CisgICAgc3RydWN0IGdzdV9zY2FsYXIgc3RkOyAvKiBTaXplIG9mIHRo cmVlIHBvaW50ZXJzICovCiAgICAgR0RCTV9GSUxFIGRiZjsKICAgICBjaGFyICpkYmZpbGVfcGF0 aDsKIH07CkBAIC0xMDYsNiArMTA4LDcgQEAgc3RhdGljIHN0cnVjdCBwYXJhbWRlZiBwYXRhYltd ID0gewogc3RhdGljIGludAogYmluX3p0aWUoY2hhciAqbmFtLCBjaGFyICoqYXJncywgT3B0aW9u cyBvcHMsIFVOVVNFRChpbnQgZnVuYykpCiB7CisgICAgc3RydWN0IGdzdV9zY2FsYXJfZXh0ICpk YmZfY2FycmllcjsKICAgICBjaGFyICpyZXNvdXJjZV9uYW1lLCAqcG1uYW1lOwogICAgIEdEQk1f RklMRSBkYmYgPSBOVUxMOwogICAgIGludCByZWFkX3dyaXRlID0gR0RCTV9TWU5DLCBwbWZsYWdz ID0gUE1fUkVNT1ZBQkxFOwpAQCAtMTY0LDIxICsxNjcsMTcgQEAgYmluX3p0aWUoY2hhciAqbmFt LCBjaGFyICoqYXJncywgT3B0aW9ucyBvcHMsIFVOVVNFRChpbnQgZnVuYykpCiAKICAgICBpZiAo ISh0aWVkX3BhcmFtID0gY3JlYXRlaGFzaChwbW5hbWUsIHBtZmxhZ3MpKSkgewogICAgICAgICB6 d2Fybm5hbShuYW0sICJjYW5ub3QgY3JlYXRlIHRoZSByZXF1ZXN0ZWQgcGFyYW1ldGVyICVzIiwg cG1uYW1lKTsKLQlmZHRhYmxlW2dkYm1fZmRlc2MoZGJmKV0gPSBGRFRfVU5VU0VEOwogCWdkYm1f Y2xvc2UoZGJmKTsKIAlyZXR1cm4gMTsKICAgICB9CiAKLSAgICBhZGRtb2R1bGVmZChnZGJtX2Zk ZXNjKGRiZiksIEZEVF9NT0RVTEUpOwotICAgIGFwcGVuZF90aWVkX25hbWUocG1uYW1lKTsKLQog ICAgIHRpZWRfcGFyYW0tPmdzdS5oID0gJmdkYm1faGFzaF9nc3U7CiAKICAgICAvKiBBbGxvY2F0 ZSBwYXJhbWV0ZXIgc3ViLWdzdSwgZmlsbCBkYmYgZmllbGQuIAogICAgICAqIGRiZiBhbGxvY2F0 aW9uIGlzIDEgdG8gMSBhY2NvbXBhbmllZCBieQogICAgICAqIGdzdV9zY2FsYXJfZXh0IGFsbG9j YXRpb24uICovCiAKLSAgICBzdHJ1Y3QgZ3N1X3NjYWxhcl9leHQgKmRiZl9jYXJyaWVyID0gKHN0 cnVjdCBnc3Vfc2NhbGFyX2V4dCAqKSB6YWxsb2Moc2l6ZW9mKHN0cnVjdCBnc3Vfc2NhbGFyX2V4 dCkpOworICAgIGRiZl9jYXJyaWVyID0gKHN0cnVjdCBnc3Vfc2NhbGFyX2V4dCAqKSB6YWxsb2Mo c2l6ZW9mKHN0cnVjdCBnc3Vfc2NhbGFyX2V4dCkpOwogICAgIGRiZl9jYXJyaWVyLT5zdGQgPSBn ZGJtX2dzdV9leHQuc3RkOwogICAgIGRiZl9jYXJyaWVyLT5kYmYgPSBkYmY7CiAgICAgdGllZF9w YXJhbS0+dS5oYXNoLT50bXBkYXRhID0gKHZvaWQgKilkYmZfY2FycmllcjsKQEAgLTE5MCw2ICsx ODksMTAgQEAgYmluX3p0aWUoY2hhciAqbmFtLCBjaGFyICoqYXJncywgT3B0aW9ucyBvcHMsIFVO VVNFRChpbnQgZnVuYykpCiAgICAgICAgIHJlc291cmNlX25hbWUgPSB4c3ltbGluayhyZXNvdXJj ZV9uYW1lLCAxKTsKICAgICB9CiAgICAgZGJmX2NhcnJpZXItPmRiZmlsZV9wYXRoID0genRyZHVw KHJlc291cmNlX25hbWUpOworCisgICAgYWRkbW9kdWxlZmQoZ2RibV9mZGVzYyhkYmYpLCBGRFRf SU5URVJOQUwpOworICAgIGFwcGVuZF90aWVkX25hbWUocG1uYW1lKTsKKwogICAgIHJldHVybiAw OwogfQogCkBAIC0yMTUsOCArMjE4LDkgQEAgYmluX3p1bnRpZShjaGFyICpuYW0sIGNoYXIgKiph cmdzLCBPcHRpb25zIG9wcywgVU5VU0VEKGludCBmdW5jKSkKIAl9CiAKIAlxdWV1ZV9zaWduYWxz KCk7Ci0JaWYgKE9QVF9JU1NFVChvcHMsJ3UnKSkKLQkgICAgZ2RibXVudGllKHBtKTsJLyogY2xl YXIgcmVhZC1vbmx5LW5lc3MgKi8KKwlpZiAoT1BUX0lTU0VUKG9wcywndScpKSB7CisgICAgICAg ICAgICBwbS0+bm9kZS5mbGFncyAmPSB+UE1fUkVBRE9OTFk7CisgICAgICAgIH0KIAlpZiAodW5z ZXRwYXJhbV9wbShwbSwgMCwgMSkpIHsKIAkgICAgLyogYXNzdW1lIGFscmVhZHkgcmVwb3J0ZWQg Ki8KIAkgICAgcmV0ID0gMTsKQEAgLTI3MCw4ICsyNzQsNyBAQCBiaW5femdkYm1wYXRoKGNoYXIg Km5hbSwgY2hhciAqKmFyZ3MsIE9wdGlvbnMgb3BzLCBVTlVTRUQoaW50IGZ1bmMpKQogICoKICAq IEl0IHdpbGwgYmUgbGVmdCBpbiB0aGlzIHN0YXRlIGlmIGRhdGFiYXNlIGRvZXNuJ3QKICAqIGNv bnRhaW4gc3VjaCBrZXkuIFRoYXQgbWlnaHQgYmUgYSBkcmF3YmFjaywgbWF5YmUKLSAqIHNldHRp bmcgdG8gZW1wdHkgdmFsdWUgaGFzIHNlbnNlLCBhcyBubyBvdGhlciB3cml0ZXIKLSAqIGNhbiBl eGlzdC4gVGhpcyB3b3VsZCByZW1vdmUgc3VidGxlIGhjYWxsb2MoMSkgbGVhay4KKyAqIHNldHRp bmcgdG8gZW1wdHkgdmFsdWUgaGFzIHNlbnNlLgogICovCiAKIC8qKi8KQEAgLTI3OSw3ICsyODIs OCBAQCBzdGF0aWMgY2hhciAqCiBnZGJtZ2V0Zm4oUGFyYW0gcG0pCiB7CiAgICAgZGF0dW0ga2V5 LCBjb250ZW50OwotICAgIGludCByZXQ7CisgICAgaW50IHJldCwgdW1sZW47CisgICAgY2hhciAq dW1rZXk7CiAgICAgR0RCTV9GSUxFIGRiZjsKIAogICAgIC8qIEtleSBhbHJlYWR5IHJldHJpZXZl ZD8gVGhlcmUgaXMgbm8gc2Vuc2Ugb2YgYXNraW5nIHRoZQpAQCAtMjkyLDEzICsyOTYsMTMgQEAg Z2RibWdldGZuKFBhcmFtIHBtKQogICAgICAqIC0gaWYgd2UgYXJlIHJlYWRlcnMsIHdlIGZvciBz dXJlIGhhdmUgbmV3ZXN0IGNvcHkgb2YgZGF0YQogICAgICAqLwogICAgIGlmICggcG0tPm5vZGUu ZmxhZ3MgJiBQTV9VUFRPREFURSApIHsKLSAgICAgICAgcmV0dXJuIHBtLT51LnN0ciA/IHBtLT51 LnN0ciA6IChjaGFyICopIGhjYWxsb2MoMSk7CisgICAgICAgIHJldHVybiBwbS0+dS5zdHIgPyBw bS0+dS5zdHIgOiAiIjsKICAgICB9CiAKICAgICAvKiBVbm1ldGFmeSBrZXkuIEdEQk0gZml0cyBu aWNlIGludG8gdGhpcwogICAgICAqIHByb2Nlc3MsIGFzIGl0IHVzZXMgbGVuZ3RoIG9mIGRhdGEg Ki8KLSAgICBpbnQgdW1sZW4gPSAwOwotICAgIGNoYXIgKnVta2V5ID0gdW5tZXRhZnlfemFsbG9j KHBtLT5ub2RlLm5hbSwmdW1sZW4pOworICAgIHVtbGVuID0gMDsKKyAgICB1bWtleSA9IHVubWV0 YWZ5X3phbGxvYyhwbS0+bm9kZS5uYW0sJnVtbGVuKTsKIAogICAgIGtleS5kcHRyID0gdW1rZXk7 CiAgICAga2V5LmRzaXplID0gdW1sZW47CkBAIC0zMTQsMjYgKzMxOCwyNiBAQCBnZGJtZ2V0Zm4o UGFyYW0gcG0pCiAgICAgICAgIC8qIEVuc3VyZSB0aGVyZSdzIG5vIGxlYWsgKi8KICAgICAgICAg aWYgKHBtLT51LnN0cikgewogICAgICAgICAgICAgenNmcmVlKHBtLT51LnN0cik7CisgICAgICAg ICAgICBwbS0+dS5zdHIgPSBOVUxMOwogICAgICAgICB9CiAKICAgICAgICAgLyogTWV0YWZ5IHJl dHVybmVkIGRhdGEuIEFsbCBmaXRzIC0gbWV0YWZ5CiAgICAgICAgICAqIGNhbiBvYnRhaW4gZGF0 YSBsZW5ndGggdG8gYXZvaWQgdXNpbmcgXDAgKi8KICAgICAgICAgcG0tPnUuc3RyID0gbWV0YWZ5 KGNvbnRlbnQuZHB0ciwgY29udGVudC5kc2l6ZSwgTUVUQV9EVVApOworICAgICAgICAvKiBnZGJt IGFsbG9jYXRlcyB3aXRoIG1hbGxvYyAqLworICAgICAgICBmcmVlKGNvbnRlbnQuZHB0cik7CiAK LSAgICAgICAgLyogRnJlZSBrZXksIHJlc3RvcmluZyBpdHMgb3JpZ2luYWwgbGVuZ3RoICovCi0g ICAgICAgIHNldF9sZW5ndGgodW1rZXksIHVtbGVuKTsKLSAgICAgICAgenNmcmVlKHVta2V5KTsK KyAgICAgICAgLyogRnJlZSBrZXkgKi8KKyAgICAgICAgemZyZWUodW1rZXksIHVtbGVuKzEpOwog CiAgICAgICAgIC8qIENhbiByZXR1cm4gcG9pbnRlciwgY29ycmVjdGx5IHNhdmVkIGluc2lkZSBo YXNoICovCiAgICAgICAgIHJldHVybiBwbS0+dS5zdHI7CiAgICAgfQogCi0gICAgLyogRnJlZSBr ZXksIHJlc3RvcmluZyBpdHMgb3JpZ2luYWwgbGVuZ3RoICovCi0gICAgc2V0X2xlbmd0aCh1bWtl eSwgdW1sZW4pOwotICAgIHpzZnJlZSh1bWtleSk7CisgICAgLyogRnJlZSBrZXkgKi8KKyAgICB6 ZnJlZSh1bWtleSwgdW1sZW4rMSk7CiAKLSAgICAvKiBDYW4gdGhpcyBiZSAiIiA/ICovCi0gICAg cmV0dXJuIChjaGFyICopIGhjYWxsb2MoMSk7CisgICAgcmV0dXJuICIiOwogfQogCiAvKiovCkBA IC0zNjEsNyArMzY1LDcgQEAgZ2RibXNldGZuKFBhcmFtIHBtLCBjaGFyICp2YWwpCiAKICAgICAv KiBEYXRhYmFzZSAqLwogICAgIGRiZiA9ICgoc3RydWN0IGdzdV9zY2FsYXJfZXh0ICopcG0tPmdz dS5zKS0+ZGJmOwotICAgIGlmIChkYmYpIHsKKyAgICBpZiAoZGJmICYmIG5vX2RhdGFiYXNlX2Fj dGlvbiA9PSAwKSB7CiAgICAgICAgIGludCB1bWxlbiA9IDA7CiAgICAgICAgIGNoYXIgKnVta2V5 ID0gdW5tZXRhZnlfemFsbG9jKHBtLT5ub2RlLm5hbSwmdW1sZW4pOwogCkBAIC0zNzgsMTUgKzM4 MiwxMyBAQCBnZGJtc2V0Zm4oUGFyYW0gcG0sIGNoYXIgKnZhbCkKICAgICAgICAgICAgICh2b2lk KWdkYm1fc3RvcmUoZGJmLCBrZXksIGNvbnRlbnQsIEdEQk1fUkVQTEFDRSk7CiAKICAgICAgICAg ICAgIC8qIEZyZWUgKi8KLSAgICAgICAgICAgIHNldF9sZW5ndGgodW12YWwsIHVtbGVuKTsKLSAg ICAgICAgICAgIHpzZnJlZSh1bXZhbCk7CisgICAgICAgICAgICB6ZnJlZSh1bXZhbCwgdW1sZW4r MSk7CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAodm9pZClnZGJtX2RlbGV0ZShkYmYs IGtleSk7CiAgICAgICAgIH0KIAogICAgICAgICAvKiBGcmVlIGtleSAqLwotICAgICAgICBzZXRf bGVuZ3RoKHVta2V5LCBrZXkuZHNpemUpOwotICAgICAgICB6c2ZyZWUodW1rZXkpOworICAgICAg ICB6ZnJlZSh1bWtleSwga2V5LmRzaXplKzEpOwogICAgIH0KIH0KIApAQCAtNDI3LDcgKzQyOSw3 IEBAIGdldGdkYm1ub2RlKEhhc2hUYWJsZSBodCwgY29uc3QgY2hhciAqbmFtZSkKICAgICAgICAg dmFsX3BtID0gKFBhcmFtKSB6c2hjYWxsb2MoIHNpemVvZiAoKnZhbF9wbSkgKTsKICAgICAgICAg dmFsX3BtLT5ub2RlLmZsYWdzID0gUE1fU0NBTEFSIHwgUE1fSEFTSEVMRU07IC8qIG5vIFBNX1VQ VE9EQVRFICovCiAgICAgICAgIHZhbF9wbS0+Z3N1LnMgPSAoR3N1U2NhbGFyKSBodC0+dG1wZGF0 YTsKLSAgICAgICAgaHQtPmFkZG5vZGUoIGh0LCB6dHJkdXAoIG5hbWUgKSwgdmFsX3BtICk7IC8v IHNldHMgcG0tPm5vZGUubmFtCisgICAgICAgIGh0LT5hZGRub2RlKCBodCwgenRyZHVwKCBuYW1l ICksIHZhbF9wbSApOyAvKiBzZXRzIHBtLT5ub2RlLm5hbSAqLwogICAgIH0KIAogICAgIHJldHVy biAoSGFzaE5vZGUpIHZhbF9wbTsKQEAgLTQzNyw3ICs0MzksNyBAQCBnZXRnZGJtbm9kZShIYXNo VGFibGUgaHQsIGNvbnN0IGNoYXIgKm5hbWUpCiBzdGF0aWMgdm9pZAogc2NhbmdkYm1rZXlzKEhh c2hUYWJsZSBodCwgU2NhbkZ1bmMgZnVuYywgaW50IGZsYWdzKQogewotICAgIGRhdHVtIGtleTsK KyAgICBkYXR1bSBrZXksIHByZXZfa2V5OwogICAgIEdEQk1fRklMRSBkYmYgPSAoKHN0cnVjdCBn c3Vfc2NhbGFyX2V4dCAqKWh0LT50bXBkYXRhKS0+ZGJmOwogCiAgICAgLyogSXRlcmF0ZSBrZXlz IGFkZGluZyB0aGVtIHRvIGhhc2gsIHNvCkBAIC00NTYsNyArNDU4LDkgQEAgc2NhbmdkYm1rZXlz KEhhc2hUYWJsZSBodCwgU2NhbkZ1bmMgZnVuYywgaW50IGZsYWdzKQogCiAgICAgICAgIC8qIEl0 ZXJhdGUgLSBubyBwcm9ibGVtIGFzIGludGVyZmFjaW5nIFBhcmFtCiAgICAgICAgICAqIHdpbGwg ZG8gYXQgbW9zdCBvbmx5IGZldGNoZXMsIG5vdCBzdG9yZXMgKi8KKyAgICAgICAgcHJldl9rZXkg PSBrZXk7CiAgICAgICAgIGtleSA9IGdkYm1fbmV4dGtleShkYmYsIGtleSk7CisgICAgICAgIGZy ZWUocHJldl9rZXkuZHB0cik7CiAgICAgfQogCiB9CkBAIC00ODksOCArNDkzLDE1IEBAIGdkYm1o YXNoc2V0Zm4oUGFyYW0gcG0sIEhhc2hUYWJsZSBodCkKIAlrZXkgPSBnZGJtX2ZpcnN0a2V5KGRi Zik7CiAgICAgfQogCi0gICAgLyoganVzdCBkZWxldGVkIGV2ZXJ5dGhpbmcsIGNsZWFuIHVwICov Ci0gICAgKHZvaWQpZ2RibV9yZW9yZ2FuaXplKGRiZik7CisgICAgLyogSnVzdCBkZWxldGVkIGV2 ZXJ5dGhpbmcsIGNsZWFuIHVwIGlmIG5vIG5ldyBkYXRhLgorICAgICAqIFVzZXIgY2FuIGFsc28g cmVvcmdhbml6ZSB2aWEgZ2RibXRvb2wuICovCisgICAgaWYgKCFodCB8fCBodC0+aHNpemUgPT0g MCkgeworICAgICAgICAodm9pZClnZGJtX3Jlb3JnYW5pemUoZGJmKTsKKyAgICB9CisKKyAgICBu b19kYXRhYmFzZV9hY3Rpb24gPSAxOworICAgIGVtcHR5aGFzaHRhYmxlKHBtLT51Lmhhc2gpOwor ICAgIG5vX2RhdGFiYXNlX2FjdGlvbiA9IDA7CiAKICAgICBpZiAoIWh0KQogCXJldHVybjsKQEAg LTQ5OCw5ICs1MDksMTEgQEAgZ2RibWhhc2hzZXRmbihQYXJhbSBwbSwgSGFzaFRhYmxlIGh0KQog ICAgICAvKiBQdXQgbmV3IHN0cmluZ3MgaW50byBkYXRhYmFzZSwgd2FpdGluZwogICAgICAgKiBm b3IgdGhlaXIgaW50ZXJmYWNpbmctUGFyYW1zIHRvIGJlIGNyZWF0ZWQgKi8KIAotICAgIGZvciAo aSA9IDA7IGkgPCBodC0+aHNpemU7IGkrKykKKyAgICBmb3IgKGkgPSAwOyBpIDwgaHQtPmhzaXpl OyBpKyspIHsKIAlmb3IgKGhuID0gaHQtPm5vZGVzW2ldOyBobjsgaG4gPSBobi0+bmV4dCkgewog CSAgICBzdHJ1Y3QgdmFsdWUgdjsKKyAgICAgICAgICAgIGludCB1bWxlbiA9IDA7CisgICAgICAg ICAgICBjaGFyICp1bWtleSwgKnVtdmFsOwogCiAJICAgIHYuaXNhcnIgPSB2LmZsYWdzID0gdi5z dGFydCA9IDA7CiAJICAgIHYuZW5kID0gLTE7CkBAIC01MDgsOCArNTIxLDcgQEAgZ2RibWhhc2hz ZXRmbihQYXJhbSBwbSwgSGFzaFRhYmxlIGh0KQogCSAgICB2LnBtID0gKFBhcmFtKSBobjsKIAog ICAgICAgICAgICAgLyogVW5tZXRhZnkga2V5ICovCi0gICAgICAgICAgICBpbnQgdW1sZW4gPSAw OwotICAgICAgICAgICAgY2hhciAqdW1rZXkgPSB1bm1ldGFmeV96YWxsb2Modi5wbS0+bm9kZS5u YW0sJnVtbGVuKTsKKyAgICAgICAgICAgIHVta2V5ID0gdW5tZXRhZnlfemFsbG9jKHYucG0tPm5v ZGUubmFtLCZ1bWxlbik7CiAKIAkgICAga2V5LmRwdHIgPSB1bWtleTsKIAkgICAga2V5LmRzaXpl ID0gdW1sZW47CkBAIC01MTcsMjMgKzUyOSwyMyBAQCBnZGJtaGFzaHNldGZuKFBhcmFtIHBtLCBI YXNoVGFibGUgaHQpCiAJICAgIHF1ZXVlX3NpZ25hbHMoKTsKIAogICAgICAgICAgICAgLyogVW5t ZXRhZnkgKi8KLSAgICAgICAgICAgIGNoYXIgKnVtdmFsID0gdW5tZXRhZnlfemFsbG9jKGdldHN0 cnZhbHVlKCZ2KSwmdW1sZW4pOworICAgICAgICAgICAgdW12YWwgPSB1bm1ldGFmeV96YWxsb2Mo Z2V0c3RydmFsdWUoJnYpLCZ1bWxlbik7CiAKICAgICAgICAgICAgIC8qIFN0b3JlICovCiAJICAg IGNvbnRlbnQuZHB0ciA9IHVtdmFsOwogCSAgICBjb250ZW50LmRzaXplID0gdW1sZW47CiAJICAg ICh2b2lkKWdkYm1fc3RvcmUoZGJmLCBrZXksIGNvbnRlbnQsIEdEQk1fUkVQTEFDRSk7CQogCi0g ICAgICAgICAgICAvKiBGcmVlIC0gdW5tZXRhZnlfemFsbG9jIGFsbG9jYXRlcyBleGFjdCByZXF1 aXJlZAotICAgICAgICAgICAgICogc3BhY2UsIGhvd2V2ZXIgdW5tZXRhZmllZCBzdHJpbmcgY2Fu IGhhdmUgemVyb3MKLSAgICAgICAgICAgICAqIGluIGNvbnRlbnQsIHNvIHdlIG11c3QgZmlyc3Qg ZmlsbCB3aXRoIG5vbi0wIGJ5dGVzICovCi0gICAgICAgICAgICBzZXRfbGVuZ3RoKHVtdmFsLCBj b250ZW50LmRzaXplKTsKLSAgICAgICAgICAgIHpzZnJlZSh1bXZhbCk7Ci0gICAgICAgICAgICBz ZXRfbGVuZ3RoKHVta2V5LCBrZXkuZHNpemUpOwotICAgICAgICAgICAgenNmcmVlKHVta2V5KTsK KyAgICAgICAgICAgIC8qIEZyZWUgLSB1bm1ldGFmeV96YWxsb2MgYWxsb2NhdGVzCisgICAgICAg ICAgICAgKiBleGFjdCByZXF1aXJlZCBzcGFjZSArIDEgbnVsbCBieXRlICovCisgICAgICAgICAg ICB6ZnJlZSh1bXZhbCwgY29udGVudC5kc2l6ZSsxKTsKKyAgICAgICAgICAgIHpmcmVlKHVta2V5 LCBrZXkuZHNpemUrMSk7CiAKIAkgICAgdW5xdWV1ZV9zaWduYWxzKCk7CiAJfQorICAgIH0KKyAg ICAvKiBXZSByZXVzZSBvdXIgaGFzaCwgdGhlIGlucHV0IGlzIHRvIGJlIGRlbGV0ZWQgKi8KKyAg ICBkZWxldGVwYXJhbXRhYmxlKGh0KTsKIH0KIAogLyoqLwpAQCAtNTY2LDE0ICs1NzgsMTYgQEAg Z2RibXVudGllKFBhcmFtIHBtKQogc3RhdGljIHZvaWQKIGdkYm1oYXNodW5zZXRmbihQYXJhbSBw bSwgVU5VU0VEKGludCBleHApKQogeworICAgIHN0cnVjdCBnc3Vfc2NhbGFyX2V4dCAqIGdzdV9l eHQ7CisKICAgICBnZGJtdW50aWUocG0pOwogCiAgICAgLyogUmVtZW1iZXIgY3VzdG9tIEdTVSBz dHJ1Y3R1cmUgYXNzaWduZWQgdG8KICAgICAgKiB1Lmhhc2gtPnRtcGRhdGEgYmVmb3JlIGhhc2gg Z2V0cyBkZWxldGVkICovCi0gICAgc3RydWN0IGdzdV9zY2FsYXJfZXh0ICogZ3N1X2V4dCA9IHBt LT51Lmhhc2gtPnRtcGRhdGE7CisgICAgZ3N1X2V4dCA9IHBtLT51Lmhhc2gtPnRtcGRhdGE7CiAK LSAgICAvKiBVc2VzIG5vcm1hbCB1bnNldHRlci4gV2lsbCBkZWxldGUgYWxsIG93bmVkCi0gICAg ICogcGFyYW1ldGVycyBhbmQgYWxzbyBoYXNodGFibGUuICovCisgICAgLyogVXNlcyBub3JtYWwg dW5zZXR0ZXIgKGJlY2F1c2UgZ2RibXVudGllIGlzIGNhbGxlZCBhYm92ZSkuCisgICAgICogV2ls bCBkZWxldGUgYWxsIG93bmVkIGZpZWxkLXBhcmFtZXRlcnMgYW5kIGFsc28gaGFzaHRhYmxlLiAq LwogICAgIHBtLT5nc3UuaC0+c2V0Zm4ocG0sIE5VTEwpOwogCiAgICAgLyogRG9uJ3QgbmVlZCBj dXN0b20gR1NVIHN0cnVjdHVyZSB3aXRoIGl0cwpAQCAtNjU0LDEzICs2NjgsMTcgQEAgc3RhdGlj IFBhcmFtIGNyZWF0ZWhhc2goIGNoYXIgKm5hbWUsIGludCBmbGFncyApIHsKIAlwbS0+bGV2ZWwg PSBsb2NhbGxldmVsOwogCiAgICAgLyogVGhpcyBjcmVhdGVzIHN0YW5kYXJkIGhhc2guICovCi0g ICAgaHQgPSBwbS0+dS5oYXNoID0gbmV3cGFyYW10YWJsZSgzMiwgbmFtZSk7CisgICAgaHQgPSBw bS0+dS5oYXNoID0gbmV3cGFyYW10YWJsZSgxNywgbmFtZSk7CiAgICAgaWYgKCFwbS0+dS5oYXNo KSB7CiAgICAgICAgIHBhcmFtdGFiLT5yZW1vdmVub2RlKHBhcmFtdGFiLCBuYW1lKTsKICAgICAg ICAgcGFyYW10YWItPmZyZWVub2RlKCZwbS0+bm9kZSk7Ci0gICAgICAgIHp3YXJubmFtKG5hbWUs ICJPdXQgb2YgbWVtb3J5IHdoZW4gYWxsb2NhdGluZyBoYXNoIik7CisgICAgICAgIHp3YXJubmFt KG5hbWUsICJvdXQgb2YgbWVtb3J5IHdoZW4gYWxsb2NhdGluZyBoYXNoIik7CisgICAgICAgIHJl dHVybiBOVUxMOwogICAgIH0KIAorICAgIC8qIERvZXMgZnJlZSBQYXJhbSAodW5zZXRmbiBpcyBj YWxsZWQpICovCisgICAgaHQtPmZyZWVub2RlID0gbXlmcmVlcGFyYW1ub2RlOworCiAgICAgLyog VGhlc2UgcHJvdmlkZSBzcGVjaWFsIGZlYXR1cmVzICovCiAgICAgaHQtPmdldG5vZGUgPSBodC0+ Z2V0bm9kZTIgPSBnZXRnZGJtbm9kZTsKICAgICBodC0+c2NhbnRhYiA9IHNjYW5nZGJta2V5czsK QEAgLTY5OSw2ICs3MTcsNyBAQCBzdGF0aWMgaW50IGFwcGVuZF90aWVkX25hbWUoIGNvbnN0IGNo YXIgKm5hbWUgKSB7CiAKIHN0YXRpYyBpbnQgcmVtb3ZlX3RpZWRfbmFtZSggY29uc3QgY2hhciAq bmFtZSApIHsKICAgICBpbnQgb2xkX2xlbiA9IGFycmxlbih6Z2RibV90aWVkKTsKKyAgICBpbnQg bmV3X2xlbjsKIAogICAgIC8qIFR3byBzdGFnZSwgdG8gYWx3YXlzIGhhdmUgYXJybGVuKCkgPT0g emZyZWUtc2l6ZSAtIDEuCiAgICAgICogQ291bGQgZG8gYWxsb2NhdGlvbiBhbmQgcmV2ZXJ0IHdo ZW4gYG5vdCBmb3VuZGAsIGJ1dApAQCAtNzIxLDEzICs3NDAsMTQgQEAgc3RhdGljIGludCByZW1v dmVfdGllZF9uYW1lKCBjb25zdCBjaGFyICpuYW1lICkgewogCiAgICAgLyogU2Vjb25kIHN0YWdl LiBTaXplIGNoYW5nZWQ/IE9ubHkgb2xkX3NpemUtMQogICAgICAqIGNoYW5nZSBpcyBwb3NzaWJs ZSwgYnV0Li4gcGFyYW5vaWEgd2F5ICovCi0gICAgaW50IG5ld19sZW4gPSBhcnJsZW4oemdkYm1f dGllZCk7CisgICAgbmV3X2xlbiA9IGFycmxlbih6Z2RibV90aWVkKTsKICAgICBpZiAobmV3X2xl biAhPSBvbGRfbGVuKSB7CisgICAgICAgIGNoYXIgKipkc3Q7CiAgICAgICAgIGNoYXIgKipuZXdf emdkYm1fdGllZCA9IHpzaGNhbGxvYygobmV3X2xlbisxKSAqIHNpemVvZihjaGFyICopKTsKIAog ICAgICAgICAvKiBDb3B5ICovCiAgICAgICAgIHAgPSB6Z2RibV90aWVkOwotICAgICAgICBjaGFy ICoqZHN0ID0gbmV3X3pnZGJtX3RpZWQ7CisgICAgICAgIGRzdCA9IG5ld196Z2RibV90aWVkOwog ICAgICAgICB3aGlsZSAoKnApIHsKICAgICAgICAgICAgICpkc3QrKyA9ICpwKys7CiAgICAgICAg IH0KQEAgLTc0NiwxMCArNzY2LDkgQEAgc3RhdGljIGludCByZW1vdmVfdGllZF9uYW1lKCBjb25z dCBjaGFyICpuYW1lICkgewogICogLSBkdXBsaWNhdGVzIGJ1ZmVyIHRvIHdvcmsgb24gaXQsCiAg KiAtIGRvZXMgemFsbG9jIG9mIGV4YWN0IHNpemUgZm9yIHRoZSBuZXcgc3RyaW5nLAogICogLSBy ZXN0b3JlcyB3b3JrIGJ1ZmZlciB0byBvcmlnaW5hbCBjb250ZW50LCB0byByZXN0b3JlIHN0cmxl bgotICoKLSAqIE5vIHpzZnJlZSgpLWNvbmZ1c2luZyBzdHJpbmcgd2lsbCBiZSBwcm9kdWNlZC4K ICAqLwotc3RhdGljIGNoYXIgKnVubWV0YWZ5X3phbGxvYyhjb25zdCBjaGFyICp0b19jb3B5LCBp bnQgKm5ld19sZW4pIHsKK3N0YXRpYyBjaGFyICoKK3VubWV0YWZ5X3phbGxvYyhjb25zdCBjaGFy ICp0b19jb3B5LCBpbnQgKm5ld19sZW4pIHsKICAgICBjaGFyICp3b3JrLCAqdG9fcmV0dXJuOwog ICAgIGludCBteV9uZXdfbGVuID0gMDsKIApAQCAtNzcxLDE2ICs3OTAsMjcgQEAgc3RhdGljIGNo YXIgKnVubWV0YWZ5X3phbGxvYyhjb25zdCBjaGFyICp0b19jb3B5LCBpbnQgKm5ld19sZW4pIHsK ICAgICByZXR1cm4gdG9fcmV0dXJuOwogfQogCi0vKgotICogRm9yIHpzaC1hbGxvY2F0b3IsIHJl c3Qgb2YgWnNoIHNlZW1zIHRvIHVzZQotICogZnJlZSgpIGluc3RlYWQgb2YgenNmcmVlKCksIGFu ZCBzdWNoIGxlbmd0aAotICogcmVzdG9yYXRpb24gY2F1c2VzIHNsb3dkb3duLCBidXQgYWxsIGlz IHRoaXMKLSAqIHdheSBzdHJpY3QgLSBjb3JyZWN0ICovCi1zdGF0aWMgdm9pZCBzZXRfbGVuZ3Ro KGNoYXIgKmJ1ZiwgaW50IHNpemUpIHsKLSAgICBidWZbc2l6ZV09J1wwJzsKLSAgICB3aGlsZSAo IC0tIHNpemUgPj0gMCApIHsKLSAgICAgICAgYnVmW3NpemVdPScgJzsKK3N0YXRpYyB2b2lkCitt eWZyZWVwYXJhbW5vZGUoSGFzaE5vZGUgaG4pCit7CisgICAgUGFyYW0gcG0gPSAoUGFyYW0pIGhu OworCisgICAgLyogVXBzdHJlYW06IFRoZSBzZWNvbmQgYXJndW1lbnQgb2YgdW5zZXRmbigpIGlz IHVzZWQgYnkgbW9kdWxlcyB0bworICAgICAqIGRpZmZlcmVudGlhdGUgImV4cCJsaWNpdCB1bnNl dCBmcm9tIGltcGxpY2l0IHVuc2V0LCBhcyB3aGVuCisgICAgICogYSBwYXJhbWV0ZXIgaXMgZ29p bmcgb3V0IG9mIHNjb3BlLiAgSXQncyBub3QgY2xlYXIgd2hpY2gKKyAgICAgKiBvZiB0aGVzZSBh cHBsaWVzIGhlcmUsIGJ1dCBwYXNzaW5nIDEgaGFzIGFsd2F5cyB3b3JrZWQuCisgICAgICovCisK KyAgICAvKiBpZiAoZGVsdW5zZXQpICovCisgICAgcG0tPmdzdS5zLT51bnNldGZuKHBtLCAxKTsK KworICAgIHpzZnJlZShwbS0+bm9kZS5uYW0pOworICAgIC8qIElmIHRoaXMgdmFyaWFibGUgd2Fz IHRpZWQgYnkgdGhlIHVzZXIsIGVuYW1lIHdhcyB6dHJkdXAnZCAqLworICAgIGlmIChwbS0+bm9k ZS5mbGFncyAmIFBNX1RJRUQgJiYgcG0tPmVuYW1lKSB7CisgICAgICAgIHpzZnJlZShwbS0+ZW5h bWUpOworICAgICAgICBwbS0+ZW5hbWUgPSBOVUxMOwogICAgIH0KKyAgICB6ZnJlZShwbSwgc2l6 ZW9mKHN0cnVjdCBwYXJhbSkpOwogfQogCiAjZWxzZQo= --5954bb10_51d8d77_168--