[PATCH 2/5] builtin: Reduce use of redundant strlen
Eric Blake via M4-patches <[email protected]> Wed, 2 Apr 2025 17:28:37 -0500
| Newsgroups | gmane.comp.gnu.m4.patches |
|---|---|
| Message-ID | <[email protected]> |
V2hlbiBkZWFsaW5nIHdpdGggdG9rZW5zLCB3ZSBvZnRlbiBrbm93IHRoZSBsZW5ndGggb2YgdGhl IHRva2VuIGZyb20KdGhlIHRpbWUgaXQgd2FzIHBhcnNlZCBvciBjcmVhdGVkIGJ5IGV4cGFuc2lv bjsgc2F2ZSB0aGlzIGluZm9ybWF0aW9uCmFsb25nc2lkZSB0aGUgdG9rZW4gaW5zdGVhZCBvZiBj YWxsaW5nIHN0cmxlbigpIGV2ZXJ5d2hlcmUgdG8gcmUtbGVhcm4KaXQsIGZvciBhIHNsaWdodCBv cHRpbWl6YXRpb24uICBUaGUgcGxhY2VtZW50IG9mIHRoZSBuZXcgbWVtYmVyIGluCnN0cnVjdCB0 b2tlbl9kYXRhIGlzIGludGVudGlvbmFsIHRvIGF2b2lkIGNoYW5naW5nIHRoZSBzaXplIG9mIHRo ZQpzdHJ1Y3Qgb24gNjQtYml0IG1hY2hpbmVzLCBldmVuIGlmIHRoZSBzaXplIG9ubHkgbWF0dGVy cyBmb3IgdGV4dAp0b2tlbnMuICBUaGUgY29kZSBhbHJlYWR5IGhhcyBhIG51bWJlciBvZiBwbGFj ZXMgdGhhdCBhc3N1bWUgYSBtYXhpbXVtCnRva2VuIGxlbmd0aCBib3VuZGVkIGJ5IGludDsgc2Ny dWJiaW5nIHRoYXQgdG8gYWxsb3cgYSBmdWxsIHNpemVfdAp3b3VsZCBiZSBhIGxhcmdlciBwYXRj aC4KCiogc3JjL200LmggKHRva2VuX2RhdGEpOiBBZGQgc2l6ZSBtZW1iZXIuCihUT0tFTl9EQVRB X0xFTiwgU1lNQk9MX1RFWFRfTEVOKTogTmV3IG1hY3Jvcy4KKiBzcmMvaW5wdXQuYyAobmV4dF90 b2tlbik6IFJlbWVtYmVyIHNpemUuCiogc3JjL21hY3JvLmMgKGV4cGFuZF9hcmd1bWVudCwgY29s bGVjdF9hcmd1bWVudHMpOiBMaWtld2lzZS4KKiBzcmMvYnVpbHRpbi5jIChBUkdMRU4pOiBOZXcg bWFjcm8uCihkZWZpbmVfdXNlcl9tYWNybyk6IFNldCBsZW5ndGgsIGFuZCB3YXJuIHVzZXIgb24g b3ZlcnNpemUgY29udGVudC4KKG00X2V2YWwpOiBVc2UgY29tcGlsZS10aW1lIGJvdW5kIGZvciBy YWRpeC4KKGR1bXBfYXJncywgbTRfaWZkZWYsIG00X2lmZWxzZSwgbTRfYnVpbHRpbiwgbTRfaW5k aXIsIG00X2RlZm4pCihtNF9tYWtldGVtcCwgbTRfbWtzdGVtcCwgbTRfbTR3cmFwLCBtNF9sZW4s IG00X3N1YnN0ciwgbTRfdHJhbnNsaXQpCihtNF9yZWdleHAsIG00X3BhdHN1YnN0LCBleHBhbmRf dXNlcl9tYWNybyk6IFV0aWxpemUga25vd24gc2l6ZS4KLS0tCiBzcmMvYnVpbHRpbi5jIHwgODQg KysrKysrKysrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiBzcmMv aW5wdXQuYyAgIHwgIDEgKwogc3JjL200LmggICAgICB8ICA3ICsrKysrCiBzcmMvbWFjcm8uYyAg IHwgIDUgKysrCiA0IGZpbGVzIGNoYW5nZWQsIDU5IGluc2VydGlvbnMoKyksIDM4IGRlbGV0aW9u cygtKQoKZGlmZiAtLWdpdCBhL3NyYy9idWlsdGluLmMgYi9zcmMvYnVpbHRpbi5jCmluZGV4IDM0 NDdkYzMzLi42OWViMmE4YyAxMDA2NDQKLS0tIGEvc3JjL2J1aWx0aW4uYworKysgYi9zcmMvYnVp bHRpbi5jCkBAIC0zMiw2ICszMiw3IEBACiAjaW5jbHVkZSAid2FpdC1wcm9jZXNzLmgiCgogI2Rl ZmluZSBBUkcoaSkgKGFyZ2MgPiAoaSkgPyBUT0tFTl9EQVRBX1RFWFQgKGFyZ3ZbaV0pIDogIiIp CisjZGVmaW5lIEFSR0xFTihpKSAoYXJnYyA+IChpKSA/IFRPS0VOX0RBVEFfTEVOIChhcmd2W2ld KSA6IDApCgogLyogSW5pdGlhbGl6YXRpb24gb2YgYnVpbHRpbiBhbmQgcHJlZGVmaW5lZCBtYWNy b3MuICBUaGUgdGFibGUKICAgICJidWlsdGluX3RhYiIgaXMgYm90aCB1c2VkIGZvciBpbml0aWFs aXphdGlvbiwgYW5kIGJ5IHRoZSAiYnVpbHRpbiIKQEAgLTI5MCw2ICsyOTEsMTUgQEAgZGVmaW5l X3VzZXJfbWFjcm8gKGNvbnN0IGNoYXIgKm5hbWUsIGNvbnN0IGNoYXIgKnRleHQsIHN5bWJvbF9s b29rdXAgbW9kZSkKIHsKICAgc3ltYm9sICpzOwogICBjaGFyICpkZWZuID0geHN0cmR1cCAodGV4 dCA/IHRleHQgOiAiIik7CisgIHNpemVfdCBsZW4gPSBzdHJsZW4gKGRlZm4pOworCisgIGlmIChs ZW4gPiBJTlRfTUFYKQorICAgIHsKKyAgICAgIE00RVJST1IgKCh3YXJuaW5nX3N0YXR1cywgMCwK KyAgICAgICAgICAgICAgICBfKCJtYWNybyBgJXMnIGRlZmluaXRpb24gdG9vIGxvbmc7IHRydW5j YXRpbmcgdG8gSU5UX01BWCBieXRlcyIpLAorICAgICAgICAgICAgICAgICAgbmFtZSkpOworICAg ICAgbGVuID0gSU5UX01BWDsKKyAgICB9CgogICBzID0gbG9va3VwX3N5bWJvbCAobmFtZSwgbW9k ZSk7CiAgIGlmIChTWU1CT0xfVFlQRSAocykgPT0gVE9LRU5fVEVYVCkKQEAgLTI5NywxMiArMzA3 LDEyIEBAIGRlZmluZV91c2VyX21hY3JvIChjb25zdCBjaGFyICpuYW1lLCBjb25zdCBjaGFyICp0 ZXh0LCBzeW1ib2xfbG9va3VwIG1vZGUpCgogICBTWU1CT0xfVFlQRSAocykgPSBUT0tFTl9URVhU OwogICBTWU1CT0xfVEVYVCAocykgPSBkZWZuOworICBTWU1CT0xfVEVYVF9MRU4gKHMpID0gbGVu OwoKICAgLyogSW1wbGVtZW50IC0td2Fybi1tYWNyby1zZXF1ZW5jZS4gICovCiAgIGlmIChtYWNy b19zZXF1ZW5jZV9pbnVzZSAmJiB0ZXh0KQogICAgIHsKICAgICAgIHJlZ29mZl90IG9mZnNldCA9 IDA7Ci0gICAgICBzaXplX3QgbGVuID0gc3RybGVuIChkZWZuKTsKCiAgICAgICB3aGlsZSAoKG9m ZnNldCA9IHJlX3NlYXJjaCAoJm1hY3JvX3NlcXVlbmNlX2J1ZiwgZGVmbiwgbGVuLCBvZmZzZXQs CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGVuIC0gb2Zmc2V0LCAmbWFjcm9f c2VxdWVuY2VfcmVncykpID49IDApCkBAIC0zNDUsOSArMzU1LDcgQEAgYnVpbHRpbl9pbml0ICh2 b2lkKQogICAgICAgewogICAgICAgICBpZiAocHJlZml4X2FsbF9idWlsdGlucykKICAgICAgICAg ICB7Ci0gICAgICAgICAgICBzdHJpbmcgPSAoY2hhciAqKSB4bWFsbG9jIChzdHJsZW4gKGJwLT5u YW1lKSArIDQpOwotICAgICAgICAgICAgc3RyY3B5IChzdHJpbmcsICJtNF8iKTsKLSAgICAgICAg ICAgIHN0cmNhdCAoc3RyaW5nLCBicC0+bmFtZSk7CisgICAgICAgICAgICBzdHJpbmcgPSB4YXNw cmludGYgKCJtNF8lcyIsIGJwLT5uYW1lKTsKICAgICAgICAgICAgIGRlZmluZV9idWlsdGluIChz dHJpbmcsIGJwLCBTWU1CT0xfSU5TRVJUKTsKICAgICAgICAgICAgIGZyZWUgKHN0cmluZyk7CiAg ICAgICAgICAgfQpAQCAtNTE0LDcgKzUyMiw3IEBAIGR1bXBfYXJncyAoc3RydWN0IG9ic3RhY2sg Km9icywgaW50IGFyZ2MsIHRva2VuX2RhdGEgKiphcmd2LAogICAgICAgaWYgKHF1b3RlZCkKICAg ICAgICAgb2JzdGFja19ncm93IChvYnMsIGxxdW90ZS5zdHJpbmcsIGxxdW90ZS5sZW5ndGgpOwog ICAgICAgb2JzdGFja19ncm93IChvYnMsIFRPS0VOX0RBVEFfVEVYVCAoYXJndltpXSksCi0gICAg ICAgICAgICAgICAgICAgIHN0cmxlbiAoVE9LRU5fREFUQV9URVhUIChhcmd2W2ldKSkpOworICAg ICAgICAgICAgICAgICAgICBUT0tFTl9EQVRBX0xFTiAoYXJndltpXSkpOwogICAgICAgaWYgKHF1 b3RlZCkKICAgICAgICAgb2JzdGFja19ncm93IChvYnMsIHJxdW90ZS5zdHJpbmcsIHJxdW90ZS5s ZW5ndGgpOwogICAgIH0KQEAgLTYyMywyNyArNjMxLDI1IEBAIHN0YXRpYyB2b2lkCiBtNF9pZmRl ZiAoc3RydWN0IG9ic3RhY2sgKm9icywgaW50IGFyZ2MsIHRva2VuX2RhdGEgKiphcmd2KQogewog ICBzeW1ib2wgKnM7Ci0gIGNvbnN0IGNoYXIgKnJlc3VsdDsKKyAgaW50IHJlc3VsdCA9IDA7Cgog ICBpZiAoYmFkX2FyZ2MgKGFyZ3ZbMF0sIGFyZ2MsIDMsIDQpKQogICAgIHJldHVybjsKICAgcyA9 IGxvb2t1cF9zeW1ib2wgKEFSRyAoMSksIFNZTUJPTF9MT09LVVApOwoKICAgaWYgKHMgIT0gTlVM TCAmJiBTWU1CT0xfVFlQRSAocykgIT0gVE9LRU5fVk9JRCkKLSAgICByZXN1bHQgPSBBUkcgKDIp OworICAgIHJlc3VsdCA9IDI7CiAgIGVsc2UgaWYgKGFyZ2MgPj0gNCkKLSAgICByZXN1bHQgPSBB UkcgKDMpOwotICBlbHNlCi0gICAgcmVzdWx0ID0gTlVMTDsKKyAgICByZXN1bHQgPSAzOwoKLSAg aWYgKHJlc3VsdCAhPSBOVUxMKQotICAgIG9ic3RhY2tfZ3JvdyAob2JzLCByZXN1bHQsIHN0cmxl biAocmVzdWx0KSk7CisgIGlmIChyZXN1bHQpCisgICAgb2JzdGFja19ncm93IChvYnMsIEFSRyAo cmVzdWx0KSwgQVJHTEVOIChyZXN1bHQpKTsKIH0KCiBzdGF0aWMgdm9pZAogbTRfaWZlbHNlIChz dHJ1Y3Qgb2JzdGFjayAqb2JzLCBpbnQgYXJnYywgdG9rZW5fZGF0YSAqKmFyZ3YpCiB7Ci0gIGNv bnN0IGNoYXIgKnJlc3VsdDsKKyAgaW50IHJlc3VsdDsKICAgdG9rZW5fZGF0YSAqbWUgPSBhcmd2 WzBdOwoKICAgaWYgKGFyZ2MgPT0gMikKQEAgLTY1OCwxMSArNjY0LDExIEBAIG00X2lmZWxzZSAo c3RydWN0IG9ic3RhY2sgKm9icywgaW50IGFyZ2MsIHRva2VuX2RhdGEgKiphcmd2KQogICBhcmd2 Kys7CiAgIGFyZ2MtLTsKCi0gIHJlc3VsdCA9IE5VTEw7Ci0gIHdoaWxlIChyZXN1bHQgPT0gTlVM TCkKKyAgcmVzdWx0ID0gMDsKKyAgd2hpbGUgKCFyZXN1bHQpCgogICAgIGlmIChTVFJFUSAoQVJH ICgwKSwgQVJHICgxKSkpCi0gICAgICByZXN1bHQgPSBBUkcgKDIpOworICAgICAgcmVzdWx0ID0g MjsKCiAgICAgZWxzZQogICAgICAgc3dpdGNoIChhcmdjKQpAQCAtNjcyLDcgKzY3OCw3IEBAIG00 X2lmZWxzZSAoc3RydWN0IG9ic3RhY2sgKm9icywgaW50IGFyZ2MsIHRva2VuX2RhdGEgKiphcmd2 KQoKICAgICAgICAgY2FzZSA0OgogICAgICAgICBjYXNlIDU6Ci0gICAgICAgICAgcmVzdWx0ID0g QVJHICgzKTsKKyAgICAgICAgICByZXN1bHQgPSAzOwogICAgICAgICAgIGJyZWFrOwoKICAgICAg ICAgZGVmYXVsdDoKQEAgLTY4MCw3ICs2ODYsNyBAQCBtNF9pZmVsc2UgKHN0cnVjdCBvYnN0YWNr ICpvYnMsIGludCBhcmdjLCB0b2tlbl9kYXRhICoqYXJndikKICAgICAgICAgICBhcmd2ICs9IDM7 CiAgICAgICAgIH0KCi0gIG9ic3RhY2tfZ3JvdyAob2JzLCByZXN1bHQsIHN0cmxlbiAocmVzdWx0 KSk7CisgIG9ic3RhY2tfZ3JvdyAob2JzLCBBUkcgKHJlc3VsdCksIEFSR0xFTiAocmVzdWx0KSk7 CiB9CiAMCiAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0uCkBAIC04MzIsNiArODM4LDcgQEAgbTRfYnVpbHRpbiAoc3Ry dWN0IG9ic3RhY2sgKm9icywgaW50IGFyZ2MsIHRva2VuX2RhdGEgKiphcmd2KQogICAgICAgICAg ICAgewogICAgICAgICAgICAgICBUT0tFTl9EQVRBX1RZUEUgKGFyZ3ZbaV0pID0gVE9LRU5fVEVY VDsKICAgICAgICAgICAgICAgVE9LRU5fREFUQV9URVhUIChhcmd2W2ldKSA9IChjaGFyICopICIi OworICAgICAgICAgICAgICBUT0tFTl9EQVRBX0xFTiAoYXJndltpXSkgPSAwOwogICAgICAgICAg ICAgfQogICAgICAgYnAtPmZ1bmMgKG9icywgYXJnYyAtIDEsIGFyZ3YgKyAxKTsKICAgICB9CkBA IC04NzMsNiArODgwLDcgQEAgbTRfaW5kaXIgKHN0cnVjdCBvYnN0YWNrICpvYnMsIGludCBhcmdj LCB0b2tlbl9kYXRhICoqYXJndikKICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgVE9LRU5f REFUQV9UWVBFIChhcmd2W2ldKSA9IFRPS0VOX1RFWFQ7CiAgICAgICAgICAgICAgIFRPS0VOX0RB VEFfVEVYVCAoYXJndltpXSkgPSAoY2hhciAqKSAiIjsKKyAgICAgICAgICAgICAgVE9LRU5fREFU QV9MRU4gKGFyZ3ZbaV0pID0gMDsKICAgICAgICAgICAgIH0KICAgICAgIGNhbGxfbWFjcm8gKHMs IGFyZ2MgLSAxLCBhcmd2ICsgMSwgb2JzKTsKICAgICB9CkBAIC05MDYsNyArOTE0LDcgQEAgbTRf ZGVmbiAoc3RydWN0IG9ic3RhY2sgKm9icywgaW50IGFyZ2MsIHRva2VuX2RhdGEgKiphcmd2KQog ICAgICAgICB7CiAgICAgICAgIGNhc2UgVE9LRU5fVEVYVDoKICAgICAgICAgICBvYnN0YWNrX2dy b3cgKG9icywgbHF1b3RlLnN0cmluZywgbHF1b3RlLmxlbmd0aCk7Ci0gICAgICAgICAgb2JzdGFj a19ncm93IChvYnMsIFNZTUJPTF9URVhUIChzKSwgc3RybGVuIChTWU1CT0xfVEVYVCAocykpKTsK KyAgICAgICAgICBvYnN0YWNrX2dyb3cgKG9icywgU1lNQk9MX1RFWFQgKHMpLCBTWU1CT0xfVEVY VF9MRU4gKHMpKTsKICAgICAgICAgICBvYnN0YWNrX2dyb3cgKG9icywgcnF1b3RlLnN0cmluZywg cnF1b3RlLmxlbmd0aCk7CiAgICAgICAgICAgYnJlYWs7CgpAQCAtMTA5OSw3ICsxMTA3LDcgQEAg bTRfZXZhbCAoc3RydWN0IG9ic3RhY2sgKm9icywgaW50IGFyZ2MsIHRva2VuX2RhdGEgKiphcmd2 KQogICBpZiAoKkFSRyAoMikgJiYgIW51bWVyaWNfYXJnIChhcmd2WzBdLCBBUkcgKDIpLCAmcmFk aXgpKQogICAgIHJldHVybjsKCi0gIGlmIChyYWRpeCA8IDEgfHwgcmFkaXggPiAoaW50KSBzdHJs ZW4gKGRpZ2l0cykpCisgIGlmIChyYWRpeCA8IDEgfHwgcmFkaXggPiAzNikKICAgICB7CiAgICAg ICBNNEVSUk9SICgod2FybmluZ19zdGF0dXMsIDAsCiAgICAgICAgICAgICAgICAgXygicmFkaXgg JWQgaW4gYnVpbHRpbiBgJXMnIG91dCBvZiByYW5nZSIpLApAQCAtMTQ2NCw3ICsxNDcyLDcgQEAg bTRfbWFrZXRlbXAgKHN0cnVjdCBvYnN0YWNrICpvYnMsIGludCBhcmdjLCB0b2tlbl9kYXRhICoq YXJndikKICAgICAgICAgICAgbWFrZXRlbXAoWFhYWFhYWFgpIC0+IGBYMDBubm5ubicsIHdoZXJl IG5ubm5uIGlzIDE2LWJpdCBwaWQKICAgICAgICovCiAgICAgICBjb25zdCBjaGFyICpzdHIgPSBB UkcgKDEpOwotICAgICAgaW50IGxlbiA9IHN0cmxlbiAoc3RyKTsKKyAgICAgIGludCBsZW4gPSBB UkdMRU4gKDEpOwogICAgICAgaW50IGk7CiAgICAgICBpbnQgbGVuMjsKICAgICAgIGNvbnN0IGNo YXIgKmU7CkBAIC0xNDg2LDcgKzE0OTQsNyBAQCBtNF9tYWtldGVtcCAoc3RydWN0IG9ic3RhY2sg Km9icywgaW50IGFyZ2MsIHRva2VuX2RhdGEgKiphcmd2KQogICAgICAgICB9CiAgICAgfQogICBl bHNlCi0gICAgbWtzdGVtcF9oZWxwZXIgKG9icywgQVJHICgwKSwgQVJHICgxKSwgc3RybGVuIChB UkcgKDEpKSk7CisgICAgbWtzdGVtcF9oZWxwZXIgKG9icywgQVJHICgwKSwgQVJHICgxKSwgQVJH TEVOICgxKSk7CiB9Cgogc3RhdGljIHZvaWQKQEAgLTE0OTQsNyArMTUwMiw3IEBAIG00X21rc3Rl bXAgKHN0cnVjdCBvYnN0YWNrICpvYnMsIGludCBhcmdjLCB0b2tlbl9kYXRhICoqYXJndikKIHsK ICAgaWYgKGJhZF9hcmdjIChhcmd2WzBdLCBhcmdjLCAyLCAyKSkKICAgICByZXR1cm47Ci0gIG1r c3RlbXBfaGVscGVyIChvYnMsIEFSRyAoMCksIEFSRyAoMSksIHN0cmxlbiAoQVJHICgxKSkpOwor ICBta3N0ZW1wX2hlbHBlciAob2JzLCBBUkcgKDApLCBBUkcgKDEpLCBBUkdMRU4gKDEpKTsKIH0K CiAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0uCkBAIC0xNTg5LDcg KzE1OTcsNyBAQCBtNF9tNHdyYXAgKHN0cnVjdCBvYnN0YWNrICpvYnMsIGludCBhcmdjLCB0b2tl bl9kYXRhICoqYXJndikKICAgaWYgKGJhZF9hcmdjIChhcmd2WzBdLCBhcmdjLCAyLCAtMSkpCiAg ICAgcmV0dXJuOwogICBpZiAobm9fZ251X2V4dGVuc2lvbnMpCi0gICAgb2JzdGFja19ncm93IChv YnMsIEFSRyAoMSksIHN0cmxlbiAoQVJHICgxKSkpOworICAgIG9ic3RhY2tfZ3JvdyAob2JzLCBB UkcgKDEpLCBBUkdMRU4gKDEpKTsKICAgZWxzZQogICAgIGR1bXBfYXJncyAob2JzLCBhcmdjLCBh cmd2LCAnICcsIGZhbHNlKTsKICAgb2JzdGFja18xZ3JvdyAob2JzLCAnXDAnKTsKQEAgLTE3NDMs NyArMTc1MSw3IEBAIG00X2xlbiAoc3RydWN0IG9ic3RhY2sgKm9icywgaW50IGFyZ2MsIHRva2Vu X2RhdGEgKiphcmd2KQogewogICBpZiAoYmFkX2FyZ2MgKGFyZ3ZbMF0sIGFyZ2MsIDIsIDIpKQog ICAgIHJldHVybjsKLSAgc2hpcG91dF9pbnQgKG9icywgc3RybGVuIChBUkcgKDEpKSk7CisgIHNo aXBvdXRfaW50IChvYnMsIEFSR0xFTiAoMSkpOwogfQoKIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS4KQEAgLTE3OTEs MTEgKzE3OTksMTEgQEAgbTRfc3Vic3RyIChzdHJ1Y3Qgb2JzdGFjayAqb2JzLCBpbnQgYXJnYywg dG9rZW5fZGF0YSAqKmFyZ3YpCiAgICAgewogICAgICAgLyogYnVpbHRpbihgc3Vic3RyJykgaXMg YmxhbmssIGJ1dCBzdWJzdHIoYGFiYycpIGlzIGFiYy4gICovCiAgICAgICBpZiAoYXJnYyA9PSAy KQotICAgICAgICBvYnN0YWNrX2dyb3cgKG9icywgQVJHICgxKSwgc3RybGVuIChBUkcgKDEpKSk7 CisgICAgICAgIG9ic3RhY2tfZ3JvdyAob2JzLCBBUkcgKDEpLCBBUkdMRU4gKDEpKTsKICAgICAg IHJldHVybjsKICAgICB9CgotICBsZW5ndGggPSBhdmFpbCA9IHN0cmxlbiAoQVJHICgxKSk7Cisg IGxlbmd0aCA9IGF2YWlsID0gQVJHTEVOICgxKTsKICAgaWYgKCFudW1lcmljX2FyZyAoYXJndlsw XSwgQVJHICgyKSwgJnN0YXJ0KSkKICAgICByZXR1cm47CgpAQCAtMTg2OCw2ICsxODc2LDcgQEAg c3RhdGljIHZvaWQKIG00X3RyYW5zbGl0IChzdHJ1Y3Qgb2JzdGFjayAqb2JzLCBpbnQgYXJnYywg dG9rZW5fZGF0YSAqKmFyZ3YpCiB7CiAgIGNvbnN0IGNoYXIgKmRhdGEgPSBBUkcgKDEpOworICBp bnQgZGF0YWxlbiA9IEFSR0xFTiAoMSk7CiAgIGNvbnN0IGNoYXIgKmZyb20gPSBBUkcgKDIpOwog ICBjb25zdCBjaGFyICp0bzsKICAgY2hhciBtYXBbVUNIQVJfTUFYICsgMV07CkBAIC0xODc4LDcg KzE4ODcsNyBAQCBtNF90cmFuc2xpdCAoc3RydWN0IG9ic3RhY2sgKm9icywgaW50IGFyZ2MsIHRv a2VuX2RhdGEgKiphcmd2KQogICAgIHsKICAgICAgIC8qIGJ1aWx0aW4oYHRyYW5zbGl0JykgaXMg YmxhbmssIGJ1dCB0cmFuc2xpdChgYWJjJykgaXMgYWJjLiAgKi8KICAgICAgIGlmICgyIDw9IGFy Z2MpCi0gICAgICAgIG9ic3RhY2tfZ3JvdyAob2JzLCBkYXRhLCBzdHJsZW4gKGRhdGEpKTsKKyAg ICAgICAgb2JzdGFja19ncm93IChvYnMsIGRhdGEsIGRhdGFsZW4pOwogICAgICAgcmV0dXJuOwog ICAgIH0KCkBAIC0xODk1LDcgKzE5MDQsNyBAQCBtNF90cmFuc2xpdCAoc3RydWN0IG9ic3RhY2sg Km9icywgaW50IGFyZ2MsIHRva2VuX2RhdGEgKiphcmd2KQogICBpZiAoIWZyb21bMV0gfHwgIWZy b21bMl0pCiAgICAgewogICAgICAgY29uc3QgY2hhciAqcDsKLSAgICAgIHNpemVfdCBsZW4gPSBz dHJsZW4gKGRhdGEpOworICAgICAgc2l6ZV90IGxlbiA9IGRhdGFsZW47CiAgICAgICB3aGlsZSAo KHAgPSAoY2hhciAqKSBtZW1jaHIyIChkYXRhLCBmcm9tWzBdLCBmcm9tWzFdLCBsZW4pKSkKICAg ICAgICAgewogICAgICAgICAgIG9ic3RhY2tfZ3JvdyAob2JzLCBkYXRhLCBwIC0gZGF0YSk7CkBA IC0yMDc5LDcgKzIwODgsNyBAQCBtNF9yZWdleHAgKHN0cnVjdCBvYnN0YWNrICpvYnMsIGludCBh cmdjLCB0b2tlbl9kYXRhICoqYXJndikKICAgcmVnZXhwID0gVE9LRU5fREFUQV9URVhUIChhcmd2 WzJdKTsKCiAgIGluaXRfcGF0dGVybl9idWZmZXIgKCZidWYsICZyZWdzKTsKLSAgbXNnID0gcmVf Y29tcGlsZV9wYXR0ZXJuIChyZWdleHAsIHN0cmxlbiAocmVnZXhwKSwgJmJ1Zik7CisgIG1zZyA9 IHJlX2NvbXBpbGVfcGF0dGVybiAocmVnZXhwLCBBUkdMRU4gKDIpLCAmYnVmKTsKCiAgIGlmICht c2cgIT0gTlVMTCkKICAgICB7CkBAIC0yMDg5LDcgKzIwOTgsNyBAQCBtNF9yZWdleHAgKHN0cnVj dCBvYnN0YWNrICpvYnMsIGludCBhcmdjLCB0b2tlbl9kYXRhICoqYXJndikKICAgICAgIHJldHVy bjsKICAgICB9CgotICBsZW5ndGggPSBzdHJsZW4gKHZpY3RpbSk7CisgIGxlbmd0aCA9IEFSR0xF TiAoMSk7CiAgIC8qIEF2b2lkIG92ZXJoZWFkIG9mIGFsbG9jYXRpbmcgcmVncyBpZiB3ZSB3b24n dCB1c2UgaXQuICAqLwogICBzdGFydHBvcyA9IHJlX3NlYXJjaCAoJmJ1ZiwgdmljdGltLCBsZW5n dGgsIDAsIGxlbmd0aCwKICAgICAgICAgICAgICAgICAgICAgICAgIGFyZ2MgPT0gMyA/IE5VTEwg OiAmcmVncyk7CkBAIC0yMTMyLDE0ICsyMTQxLDE0IEBAIG00X3BhdHN1YnN0IChzdHJ1Y3Qgb2Jz dGFjayAqb2JzLCBpbnQgYXJnYywgdG9rZW5fZGF0YSAqKmFyZ3YpCiAgICAgewogICAgICAgLyog YnVpbHRpbihgcGF0c3Vic3QnKSBpcyBibGFuaywgYnV0IHBhdHN1YnN0KGBhYmMnKSBpcyBhYmMu ICAqLwogICAgICAgaWYgKGFyZ2MgPT0gMikKLSAgICAgICAgb2JzdGFja19ncm93IChvYnMsIEFS RyAoMSksIHN0cmxlbiAoQVJHICgxKSkpOworICAgICAgICBvYnN0YWNrX2dyb3cgKG9icywgQVJH ICgxKSwgQVJHTEVOICgxKSk7CiAgICAgICByZXR1cm47CiAgICAgfQoKICAgcmVnZXhwID0gVE9L RU5fREFUQV9URVhUIChhcmd2WzJdKTsKCiAgIGluaXRfcGF0dGVybl9idWZmZXIgKCZidWYsICZy ZWdzKTsKLSAgbXNnID0gcmVfY29tcGlsZV9wYXR0ZXJuIChyZWdleHAsIHN0cmxlbiAocmVnZXhw KSwgJmJ1Zik7CisgIG1zZyA9IHJlX2NvbXBpbGVfcGF0dGVybiAocmVnZXhwLCBBUkdMRU4gKDIp LCAmYnVmKTsKCiAgIGlmIChtc2cgIT0gTlVMTCkKICAgICB7CkBAIC0yMTUwLDcgKzIxNTksNyBA QCBtNF9wYXRzdWJzdCAoc3RydWN0IG9ic3RhY2sgKm9icywgaW50IGFyZ2MsIHRva2VuX2RhdGEg Kiphcmd2KQogICAgIH0KCiAgIHZpY3RpbSA9IFRPS0VOX0RBVEFfVEVYVCAoYXJndlsxXSk7Ci0g IGxlbmd0aCA9IHN0cmxlbiAodmljdGltKTsKKyAgbGVuZ3RoID0gQVJHTEVOICgxKTsKCiAgIG9m ZnNldCA9IDA7CiAgIHdoaWxlIChvZmZzZXQgPD0gbGVuZ3RoKQpAQCAtMjIzMCwxMyArMjIzOSwx NCBAQCBleHBhbmRfdXNlcl9tYWNybyAoc3RydWN0IG9ic3RhY2sgKm9icywgc3ltYm9sICpzeW0s CiAgICAgICAgICAgICAgICAgICAgaW50IGFyZ2MsIHRva2VuX2RhdGEgKiphcmd2KQogewogICBj b25zdCBjaGFyICp0ZXh0ID0gU1lNQk9MX1RFWFQgKHN5bSk7CisgIGNvbnN0IGNoYXIgKmVuZCA9 IHRleHQgKyBTWU1CT0xfVEVYVF9MRU4gKHN5bSk7CiAgIGludCBpOwogICB3aGlsZSAoMSkKICAg ICB7CiAgICAgICBjb25zdCBjaGFyICpkb2xsYXIgPSBzdHJjaHIgKHRleHQsICckJyk7CiAgICAg ICBpZiAoIWRvbGxhcikKICAgICAgICAgewotICAgICAgICAgIG9ic3RhY2tfZ3JvdyAob2JzLCB0 ZXh0LCBzdHJsZW4gKHRleHQpKTsKKyAgICAgICAgICBvYnN0YWNrX2dyb3cgKG9icywgdGV4dCwg ZW5kIC0gdGV4dCk7CiAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAgICAgICBvYnN0YWNr X2dyb3cgKG9icywgdGV4dCwgZG9sbGFyIC0gdGV4dCk7CkBAIC0yMjU0LDkgKzIyNjQsNyBAQCBl eHBhbmRfdXNlcl9tYWNybyAoc3RydWN0IG9ic3RhY2sgKm9icywgc3ltYm9sICpzeW0sCiAgICAg ICAgICAgICAgIGZvciAoaSA9IDA7IGNfaXNkaWdpdCAoKnRleHQpOyB0ZXh0KyspCiAgICAgICAg ICAgICAgICAgaSA9IGkqMTAgKyAoKnRleHQgLSAnMCcpOwogICAgICAgICAgICAgfQotICAgICAg ICAgIGlmIChpIDwgYXJnYykKLSAgICAgICAgICAgIG9ic3RhY2tfZ3JvdyAob2JzLCBUT0tFTl9E QVRBX1RFWFQgKGFyZ3ZbaV0pLAotICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJsZW4gKFRP S0VOX0RBVEFfVEVYVCAoYXJndltpXSkpKTsKKyAgICAgICAgICBvYnN0YWNrX2dyb3cgKG9icywg QVJHIChpKSwgQVJHTEVOIChpKSk7CiAgICAgICAgICAgYnJlYWs7CgogICAgICAgICBjYXNlICcj JzogLyogbnVtYmVyIG9mIGFyZ3VtZW50cyAqLwpkaWZmIC0tZ2l0IGEvc3JjL2lucHV0LmMgYi9z cmMvaW5wdXQuYwppbmRleCBmOGQ1YzBiYS4uMTY5NWFkMTAgMTAwNjQ0Ci0tLSBhL3NyYy9pbnB1 dC5jCisrKyBiL3NyYy9pbnB1dC5jCkBAIC0xMDIwLDYgKzEwMjAsNyBAQCBuZXh0X3Rva2VuICh0 b2tlbl9kYXRhICp0ZCwgaW50ICpsaW5lKQogICBvYnN0YWNrXzFncm93ICgmdG9rZW5fc3RhY2ss ICdcMCcpOwoKICAgVE9LRU5fREFUQV9UWVBFICh0ZCkgPSBUT0tFTl9URVhUOworICBUT0tFTl9E QVRBX0xFTiAodGQpID0gb2JzdGFja19vYmplY3Rfc2l6ZSAoJnRva2VuX3N0YWNrKSAtIDE7CiAg IFRPS0VOX0RBVEFfVEVYVCAodGQpID0gKGNoYXIgKikgb2JzdGFja19maW5pc2ggKCZ0b2tlbl9z dGFjayk7CiAjaWZkZWYgRU5BQkxFX0NIQU5HRVdPUkQKICAgaWYgKG9yaWdfdGV4dCA9PSBOVUxM KQpkaWZmIC0tZ2l0IGEvc3JjL200LmggYi9zcmMvbTQuaAppbmRleCA4NThjYjBkZS4uYjg0ZjQy NjIgMTAwNjQ0Ci0tLSBhL3NyYy9tNC5oCisrKyBiL3NyYy9tNC5oCkBAIC0yNzIsNiArMjcyLDEx IEBAIGVudW0gdG9rZW5fZGF0YV90eXBlCiBzdHJ1Y3QgdG9rZW5fZGF0YQogewogICBlbnVtIHRv a2VuX2RhdGFfdHlwZSB0eXBlOworICAvKiBTZXZlcmFsIHBsYWNlcyBpbiB0aGUgY29kZSBvbmx5 IHdvcmsgd2l0aCB0b2tlbnMgbm8gbGFyZ2VyIHRoYW4KKyAgICAgMkcuICBBbHRob3VnaCBsZW4g b25seSBtYXR0ZXJzIGZvciBhIHRleHQgdG9rZW4sIHB1dHRpbmcgaXQgaGVyZQorICAgICBpbnN0 ZWFkIG9mIGluIHRoZSB1bmlvbiBhbGxvd3Mgc3RydWN0IHRva2VuX2RhdGEgdG8gYmUKKyAgICAg c21hbGxlci4gICovCisgIGludCBsZW47CiAgIHVuaW9uCiAgICAgewogICAgICAgc3RydWN0CkBA IC0yODgsNiArMjkzLDcgQEAgc3RydWN0IHRva2VuX2RhdGEKIH07CgogI2RlZmluZSBUT0tFTl9E QVRBX1RZUEUoVGQpICAgICAgICAgICAgICgoVGQpLT50eXBlKQorI2RlZmluZSBUT0tFTl9EQVRB X0xFTihUZCkgICAgICAgICAgICAgICgoVGQpLT5sZW4pCiAjZGVmaW5lIFRPS0VOX0RBVEFfVEVY VChUZCkgICAgICAgICAgICAgKChUZCktPnUudV90LnRleHQpCiAjaWZkZWYgRU5BQkxFX0NIQU5H RVdPUkQKICMgZGVmaW5lIFRPS0VOX0RBVEFfT1JJR19URVhUKFRkKSAgICAgICAoKFRkKS0+dS51 X3Qub3JpZ2luYWxfdGV4dCkKQEAgLTM4MSw2ICszODcsNyBAQCBzdHJ1Y3Qgc3ltYm9sCiAjZGVm aW5lIFNZTUJPTF9OQU1FKFMpICAgICAgICAgICgoUyktPm5hbWUpCiAjZGVmaW5lIFNZTUJPTF9U WVBFKFMpICAgICAgICAgIChUT0tFTl9EQVRBX1RZUEUgKCYoUyktPmRhdGEpKQogI2RlZmluZSBT WU1CT0xfVEVYVChTKSAgICAgICAgICAoVE9LRU5fREFUQV9URVhUICgmKFMpLT5kYXRhKSkKKyNk ZWZpbmUgU1lNQk9MX1RFWFRfTEVOKFMpICAgICAgKFRPS0VOX0RBVEFfTEVOICgmKFMpLT5kYXRh KSkKICNkZWZpbmUgU1lNQk9MX0ZVTkMoUykgICAgICAgICAgKFRPS0VOX0RBVEFfRlVOQyAoJihT KS0+ZGF0YSkpCgogdHlwZWRlZiBlbnVtIHN5bWJvbF9sb29rdXAgc3ltYm9sX2xvb2t1cDsKZGlm ZiAtLWdpdCBhL3NyYy9tYWNyby5jIGIvc3JjL21hY3JvLmMKaW5kZXggMGUwMmI0M2MuLjc2ZTQ2 OWUyIDEwMDY0NAotLS0gYS9zcmMvbWFjcm8uYworKysgYi9zcmMvbWFjcm8uYwpAQCAtMTQ1LDYg KzE0NSw3IEBAIGV4cGFuZF9hcmd1bWVudCAoc3RydWN0IG9ic3RhY2sgKm9icywgdG9rZW5fZGF0 YSAqYXJncCkKICAgaW50IHBhcmVuX2xldmVsOwogICBjb25zdCBjaGFyICpmaWxlID0gY3VycmVu dF9maWxlOwogICBpbnQgbGluZSA9IGN1cnJlbnRfbGluZTsKKyAgc2l6ZV90IGxlbjsKCiAgIFRP S0VOX0RBVEFfVFlQRSAoYXJncCkgPSBUT0tFTl9WT0lEOwoKQEAgLTE2OCwxMiArMTY5LDE0IEBA IGV4cGFuZF9hcmd1bWVudCAoc3RydWN0IG9ic3RhY2sgKm9icywgdG9rZW5fZGF0YSAqYXJncCkK ICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgLyogVGhlIGFyZ3VtZW50IE1VU1QgYmUgZmlu aXNoZWQsIHdoZXRoZXIgd2Ugd2FudCBpdCBvciBub3QuICAqLwogICAgICAgICAgICAgICBvYnN0 YWNrXzFncm93IChvYnMsICdcMCcpOworICAgICAgICAgICAgICBsZW4gPSBvYnN0YWNrX29iamVj dF9zaXplIChvYnMpIC0gMTsKICAgICAgICAgICAgICAgdGV4dCA9IChjaGFyICopIG9ic3RhY2tf ZmluaXNoIChvYnMpOwoKICAgICAgICAgICAgICAgaWYgKFRPS0VOX0RBVEFfVFlQRSAoYXJncCkg PT0gVE9LRU5fVk9JRCkKICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICBUT0tF Tl9EQVRBX1RZUEUgKGFyZ3ApID0gVE9LRU5fVEVYVDsKICAgICAgICAgICAgICAgICAgIFRPS0VO X0RBVEFfVEVYVCAoYXJncCkgPSB0ZXh0OworICAgICAgICAgICAgICAgICAgVE9LRU5fREFUQV9M RU4gKGFyZ3ApID0gbGVuOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgcmV0dXJu IHQgPT0gVE9LRU5fQ09NTUE7CiAgICAgICAgICAgICB9CkBAIC0yMzUsNiArMjM4LDcgQEAgY29s bGVjdF9hcmd1bWVudHMgKHN5bWJvbCAqc3ltLCBzdHJ1Y3Qgb2JzdGFjayAqYXJncHRyLAoKICAg VE9LRU5fREFUQV9UWVBFICgmdGQpID0gVE9LRU5fVEVYVDsKICAgVE9LRU5fREFUQV9URVhUICgm dGQpID0gU1lNQk9MX05BTUUgKHN5bSk7CisgIFRPS0VOX0RBVEFfTEVOICgmdGQpID0gc3RybGVu IChTWU1CT0xfTkFNRSAoc3ltKSk7CiAgIHRkcCA9ICh0b2tlbl9kYXRhICopIG9ic3RhY2tfY29w eSAoYXJndW1lbnRzLCAmdGQsIHNpemVvZiB0ZCk7CiAgIG9ic3RhY2tfcHRyX2dyb3cgKGFyZ3B0 ciwgdGRwKTsKCkBAIC0yNDksNiArMjUzLDcgQEAgY29sbGVjdF9hcmd1bWVudHMgKHN5bWJvbCAq c3ltLCBzdHJ1Y3Qgb2JzdGFjayAqYXJncHRyLAogICAgICAgICAgICAgewogICAgICAgICAgICAg ICBUT0tFTl9EQVRBX1RZUEUgKCZ0ZCkgPSBUT0tFTl9URVhUOwogICAgICAgICAgICAgICBUT0tF Tl9EQVRBX1RFWFQgKCZ0ZCkgPSAoY2hhciAqKSAiIjsKKyAgICAgICAgICAgICAgVE9LRU5fREFU QV9MRU4gKCZ0ZCkgPSAwOwogICAgICAgICAgICAgfQogICAgICAgICAgIHRkcCA9ICh0b2tlbl9k YXRhICopIG9ic3RhY2tfY29weSAoYXJndW1lbnRzLCAmdGQsIHNpemVvZiB0ZCk7CiAgICAgICAg ICAgb2JzdGFja19wdHJfZ3JvdyAoYXJncHRyLCB0ZHApOwotLSAKMi40OC4xCgoKX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KTTQtcGF0Y2hlcyBtYWlsaW5n IGxpc3QKTTQtcGF0Y2hlc0BnbnUub3JnCmh0dHBzOi8vbGlzdHMuZ251Lm9yZy9tYWlsbWFuL2xp c3RpbmZvL200LXBhdGNoZXMK