看板 DFBSD_bugs 關於我們 聯絡資訊
--216.240.41.26.80.70713.1241972886.186.1 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable Alexander Polakov <polachok@gmail.com> added the comment: I tried to fix memory leak and null pointer free here. _____________________________________________________ DragonFly issue tracker <bugs@lists.dragonflybsd.org> <http://bugs.dragonflybsd.org/issue1359> _____________________________________________________ --216.240.41.26.80.70713.1241972886.186.1 Content-Type: text/x-csrc Content-Disposition: attachment; filename="powernow.c" Content-Transfer-Encoding: base64 LyoKICogQ29weXJpZ2h0IChjKSAyMDA0IE1hcnRpbiBWXHhlOWdpYXJkLgogKiBDb3B5cmlnaHQg KGMpIDIwMDQtMjAwNSBCcnVubyBEdWNyb3QKICogQ29weXJpZ2h0IChjKSAyMDA0IEZVS1VEQSBO b2J1aGlrbyA8bmZ1a3VkYUBzcGEuaXMudWVjLmFjLmpwPgogKiBDb3B5cmlnaHQgKGMpIDIwMDQs IDIwMDYgVGhlIE5ldEJTRCBGb3VuZGF0aW9uLCBJbmMuCiAqIEFsbCByaWdodHMgcmVzZXJ2ZWQu CiAqCiAqIFRoaXMgY29kZSBpcyBkZXJpdmVkIGZyb20gc29mdHdhcmUgY29udHJpYnV0ZWQgdG8g VGhlIE5ldEJTRCBGb3VuZGF0aW9uCiAqIGJ5IEp1YW4gUm9tZXJvIFBhcmRpbmVzIGFuZCBNYXJ0 aW4gVmVnaWFyZC4KICoKICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwogKiBhcmUgbWV0OgogKiAx LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv cHlyaWdodAogKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s bG93aW5nIGRpc2NsYWltZXIuCiAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CiAqICAgIG5vdGljZSwgdGhpcyBsaXN0 IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKICogICAg ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp c3RyaWJ1dGlvbi4KICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQVVUSE9SIGBg QVMgSVMnJyBBTkQgQU5ZIEVYUFJFU1MgT1IKICogSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUwogKiBPRiBNRVJD SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVND TEFJTUVELgogKiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SIEJFIExJQUJMRSBGT1IgQU5Z IERJUkVDVCwgSU5ESVJFQ1QsCiAqIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1Ig Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVAogKiBOT1QgTElNSVRFRCBUTywg UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us CiAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD QVVTRUQgQU5EIE9OIEFOWQogKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCiAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBP UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgogKiBUSElT IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN QUdFLgogKi8KLyogQU1EIFBPV0VSTk9XIEs4IGRyaXZlciAqLwoKI2luY2x1ZGUgPHN5cy9wYXJh bS5oPgojaW5jbHVkZSA8c3lzL3N5c3RtLmg+CiNpbmNsdWRlIDxzeXMvbWFsbG9jLmg+CiNpbmNs dWRlIDxzeXMva2VybmVsLmg+CiNpbmNsdWRlIDxzeXMvbW9kdWxlLmg+CiNpbmNsdWRlIDxzeXMv c3lzY3RsLmg+CiNpbmNsdWRlIDxidXMvaXNhL2lzYS5oPgojaW5jbHVkZSA8bWFjaGluZS9jcHUu aD4KI2luY2x1ZGUgPG1hY2hpbmUvcG1hcC5oPgojaW5jbHVkZSA8bWFjaGluZS9wYy9iaW9zLmg+ CiNpbmNsdWRlIDxtYWNoaW5lL2NwdWZ1bmMuaD4KI2luY2x1ZGUgPG1hY2hpbmUvbWRfdmFyLmg+ CiNpbmNsdWRlIDxtYWNoaW5lL3NwZWNpYWxyZWcuaD4KCiNkZWZpbmUgUE44X1NUQV9NRklEKHgp ICAgICAgICAgICAgICAgICAoKCh4KSA+PiAxNikgJiAweDNmKQojZGVmaW5lIFBOOF9TVEFfTVZJ RCh4KSAgICAgICAgICAgICAgICAgKCgoeCkgPj4gNDgpICYgMHgxZikKI2RlZmluZSBQTjhfU1RB X1NGSUQoeCkgICAgICAgICAgICAgICAgICgoKHgpID4+IDgpICYgMHgzZikKCi8qCiAqIE1TUnMg YW5kIGJpdHMgdXNlZCBieSBQb3dlck5vdyEgdGVjaG5vbG9neQogKi8KI2RlZmluZSBNU1JfQU1E SzdfRklEVklEX0NUTCAgICAgICAgICAgIDB4YzAwMTAwNDEKI2RlZmluZSBNU1JfQU1ESzdfRklE VklEX1NUQVRVUyAgICAgICAgIDB4YzAwMTAwNDIKI2RlZmluZSBBTURfUE5fRklEX1ZJRCAgICAg ICAgICAgICAgICAgIDB4MDYKCiNkZWZpbmUgQklPU19TVEFSVCAgICAgICAgICAgICAgICAgICAg ICAweGUwMDAwCiNkZWZpbmUgQklPU19MRU4gICAgICAgICAgICAgICAgICAgICAgICAweDIwMDAw CiNkZWZpbmUgQklPU19TVEVQICAgICAgICAgICAgICAgICAgICAgICAxNgoKI2RlZmluZSBQTjhf UFNCX1ZFUlNJT04gICAgICAgICAgICAgICAgIDB4MTQKI2RlZmluZSBQTjhfUFNCX1RPX1JWTyh4 KSAgICAgICAgICAgICAgICgoeCkgJiAweDAzKQojZGVmaW5lIFBOOF9QU0JfVE9fSVJUKHgpICAg ICAgICAgICAgICAgKCgoeCkgPj4gMikgJiAweDAzKQojZGVmaW5lIFBOOF9QU0JfVE9fTVZTKHgp ICAgICAgICAgICAgICAgKCgoeCkgPj4gNCkgJiAweDAzKQojZGVmaW5lIFBOOF9QU0JfVE9fQkFU VCh4KSAgICAgICAgICAgICAgKCgoeCkgPj4gNikgJiAweDAzKQovKiBCaXRmaWVsZHMgdXNlZCBi eSBLOCAqLwojZGVmaW5lIFBOOF9DVFJfRklEKHgpICAgICAgICAgICAgICAgICAgKCh4KSAmIDB4 M2YpCiNkZWZpbmUgUE44X0NUUl9WSUQoeCkgICAgICAgICAgICAgICAgICAoKCh4KSAmIDB4MWYp IDw8IDgpCiNkZWZpbmUgUE44X0NUUl9QRU5ESU5HKHgpICAgICAgICAgICAgICAoKCh4KSAmIDEp IDw8IDMyKQojZGVmaW5lIFBOOF9TVEFfQ0ZJRCh4KSAgICAgICAgICAgICAgICAgKCh4KSAmIDB4 M2YpCiNkZWZpbmUgUE44X1NUQV9TRklEKHgpICAgICAgICAgICAgICAgICAoKCh4KSA+PiA4KSAm IDB4M2YpCiNkZWZpbmUgUE44X1NUQV9NRklEKHgpICAgICAgICAgICAgICAgICAoKCh4KSA+PiAx NikgJiAweDNmKQojZGVmaW5lIFBOOF9TVEFfUEVORElORyh4KSAgICAgICAgICAgICAgKCgoeCkg Pj4gMzEpICYgMHgwMSkKI2RlZmluZSBQTjhfU1RBX0NWSUQoeCkgICAgICAgICAgICAgICAgICgo KHgpID4+IDMyKSAmIDB4MWYpCiNkZWZpbmUgUE44X1NUQV9TVklEKHgpICAgICAgICAgICAgICAg ICAoKCh4KSA+PiA0MCkgJiAweDFmKQojZGVmaW5lIFBOOF9TVEFfTVZJRCh4KSAgICAgICAgICAg ICAgICAgKCgoeCkgPj4gNDgpICYgMHgxZikKI2RlZmluZSBQTjhfUExMX0xPQ0soeCkgICAgICAg ICAgICAgICAgICgoeCkgKiAxMDAwLzUpCiNkZWZpbmUgV1JJVEVfRklEVklEKGZpZCwgdmlkLCBj dHJsKSAgICBcCiAgICAgICAgd3Jtc3IoTVNSX0FNREs3X0ZJRFZJRF9DVEwsICAgICBcCiAgICAg ICAgICAgICgoKGN0cmwpIDw8IDMyKSB8ICgxVUxMIDw8IDE2KSB8ICgodmlkKSA8PCA4KSB8IChm aWQpKSkKI2RlZmluZSBDT1VOVF9PRkZfSVJUKGlydCkgICAgICAgICAgICAgIERFTEFZKDEwICog KDEgPDwgKGlydCkpKQojZGVmaW5lIENPVU5UX09GRl9WU1QodnN0KSAgICAgICAgICAgICAgREVM QVkoMjAgKiAodnN0KSkKI2RlZmluZSBGSURfVE9fVkNPX0ZJRChmaWQpICAgICAgICAgICAgIFwK ICAgICAgICAoKChmaWQpIDwgOCkgPyAoOCArICgoZmlkKSA8PCAxKSkgOiAoZmlkKSkKCiNkZWZp bmUgUkVBRF9QRU5ESU5HX1dBSVQoc3RhdHVzKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBcCiAgICAgICAgZG8geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBcCiAgICAgICAgICAgICAgICAoc3RhdHVzKSA9IHJkbXNyKE1TUl9BTURLN19G SURWSURfU1RBVFVTKTsgICAgICBcCiAgICAgICAgfSB3aGlsZSAoUE44X1NUQV9QRU5ESU5HKHN0 YXR1cykpCiNkZWZpbmUgYWJzKHgpICggeCA8IDAgPyAteCA6IHggKQoKI2RlZmluZSBQT1dFUk5P V19NQVhfU1RBVEVTICAgICAgICAgICAgIDE2CgpzdHJ1Y3Qgazhwbm93X3N0YXRlIHsKICAgICAg ICBpbnQgZnJlcTsKICAgICAgICB1aW50OF90IGZpZDsKICAgICAgICB1aW50OF90IHZpZDsKfTsK CnN0cnVjdCBrOHBub3dfY3B1X3N0YXRlIHsKICAgICAgICBzdHJ1Y3Qgazhwbm93X3N0YXRlIHN0 YXRlX3RhYmxlW1BPV0VSTk9XX01BWF9TVEFURVNdOwogICAgICAgIHVuc2lnbmVkIGludCBuX3N0 YXRlczsKICAgICAgICB1bnNpZ25lZCBpbnQgc2d0YzsKICAgICAgICB1bnNpZ25lZCBpbnQgdnN0 OwogICAgICAgIHVuc2lnbmVkIGludCBtdnM7CiAgICAgICAgdW5zaWduZWQgaW50IHBsbDsKICAg ICAgICB1bnNpZ25lZCBpbnQgcnZvOwogICAgICAgIHVuc2lnbmVkIGludCBpcnQ7CiAgICAgICAg aW50IGxvdzsKfTsKCnN0cnVjdCBwc2JfcyB7CiAgICAgICAgY2hhciBzaWduYXR1cmVbMTBdOyAg ICAgLyogQU1ESzdQTk9XISAqLwogICAgICAgIHVpbnQ4X3QgdmVyc2lvbjsKICAgICAgICB1aW50 OF90IGZsYWdzOwogICAgICAgIHVpbnQxNl90IHR0aW1lOyAgICAgICAgIC8qIE1pbiBTZXR0bGlu ZyB0aW1lICovCiAgICAgICAgdWludDhfdCByZXNlcnZlZDsKICAgICAgICB1aW50OF90IG5fcHN0 Owp9OwpzdHJ1Y3QgcHN0X3MgewogICAgICAgIHVpbnQzMl90IGNwdWlkOwogICAgICAgIHVpbnQ4 X3QgcGxsOwogICAgICAgIHVpbnQ4X3QgZmlkOwogICAgICAgIHVpbnQ4X3QgdmlkOwogICAgICAg IHVpbnQ4X3Qgbl9zdGF0ZXM7Cn07CgpzdGF0aWMgc3RydWN0IGs4cG5vd19jcHVfc3RhdGUgKms4 cG5vd19jdXJyZW50X3N0YXRlID0gTlVMTDsKaW50IGNwdXNwZWVkOwoKaW50Cms4cG5vd19zdGF0 ZXMoc3RydWN0IGs4cG5vd19jcHVfc3RhdGUgKmNzdGF0ZSwgdWludDMyX3QgY3B1c2lnLAogICAg dW5zaWduZWQgaW50IGZpZCwgdW5zaWduZWQgaW50IHZpZCk7CmludAprOHBub3dfZGVjb2RlX3Bz dChzdHJ1Y3Qgazhwbm93X2NwdV9zdGF0ZSAqY3N0YXRlLCB1aW50OF90ICpwKTsKLyoKICogR2l2 ZW4gYSBzZXQgb2YgcGFpciBvZiBmaWQvdmlkLCBhbmQgbnVtYmVyIG9mIHBlcmZvcm1hbmNlIHN0 YXRlcywKICogY29tcHV0ZSBzdGF0ZV90YWJsZSB2aWEgYW4gaW5zZXJ0aW9uIHNvcnQuCiAqLwpp bnQKazhwbm93X2RlY29kZV9wc3Qoc3RydWN0IGs4cG5vd19jcHVfc3RhdGUgKmNzdGF0ZSwgdWlu dDhfdCAqcCkKewogICAgICAgIGludCBpLCBqLCBuOwogICAgICAgIHN0cnVjdCBrOHBub3dfc3Rh dGUgc3RhdGU7CiAgICAgICAgZm9yIChuID0gMCwgaSA9IDA7IGkgPCBjc3RhdGUtPm5fc3RhdGVz OyBpKyspIHsKICAgICAgICAgICAgICAgIHN0YXRlLmZpZCA9ICpwKys7CiAgICAgICAgICAgICAg ICBzdGF0ZS52aWQgPSAqcCsrOwogICAgICAgICAgICAgICAgLyoKICAgICAgICAgICAgICAgICAq IFRoZSBtaW5pbXVtIHN1cHBvcnRlZCBmcmVxdWVuY3kgcGVyIHRoZSBkYXRhIHNoZWV0IGlzIDgw ME1IegogICAgICAgICAgICAgICAgICogVGhlIG1heGltdW0gc3VwcG9ydGVkIGZyZXF1ZW5jeSBp cyA1MDAwTUh6LgogICAgICAgICAgICAgICAgICovCiAgICAgICAgICAgICAgICBzdGF0ZS5mcmVx ID0gODAwICsgc3RhdGUuZmlkICogMTAwOwogICAgICAgICAgICAgICAgaiA9IG47CiAgICAgICAg ICAgICAgICB3aGlsZSAoaiA+IDAgJiYgY3N0YXRlLT5zdGF0ZV90YWJsZVtqIC0gMV0uZnJlcSA+ IHN0YXRlLmZyZXEpIHsKICAgICAgICAgICAgICAgICAgICAgICAgbWVtY3B5KCZjc3RhdGUtPnN0 YXRlX3RhYmxlW2pdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgJmNzdGF0ZS0+c3RhdGVf dGFibGVbaiAtIDFdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZW9mKHN0cnVjdCBr OHBub3dfc3RhdGUpKTsKICAgICAgICAgICAgICAgICAgICAgICAgLS1qOwogICAgICAgICAgICAg ICAgfQogICAgICAgICAgICAgICAgbWVtY3B5KCZjc3RhdGUtPnN0YXRlX3RhYmxlW2pdLCAmc3Rh dGUsCgkJCSBzaXplb2Yoc3RydWN0IGs4cG5vd19zdGF0ZSkpOwogICAgICAgICAgICAgICAgbisr OwogICAgICAgIH0KICAgICAgICByZXR1cm4gMTsKfQoKaW50Cms4cG5vd19zdGF0ZXMoc3RydWN0 IGs4cG5vd19jcHVfc3RhdGUgKmNzdGF0ZSwgdWludDMyX3QgY3B1c2lnLAogICAgdW5zaWduZWQg aW50IGZpZCwgdW5zaWduZWQgaW50IHZpZCkKewogICAgICAgIHN0cnVjdCBwc2JfcyAqcHNiOwog ICAgICAgIHN0cnVjdCBwc3RfcyAqcHN0OwogICAgICAgIHVpbnQ4X3QgKnA7CiAgICAgICAgaW50 IGk7CiAgICAgICAgZm9yIChwID0gKHVfaW50OF90ICopQklPU19QQUREUlRPVkFERFIoQklPU19T VEFSVCk7CiAgICAgICAgICAgIHAgPCAodV9pbnQ4X3QgKilCSU9TX1BBRERSVE9WQUREUihCSU9T X1NUQVJUICsgQklPU19MRU4pOyBwICs9CiAgICAgICAgICAgIEJJT1NfU1RFUCkgewogICAgICAg ICAgICAgICAgaWYgKG1lbWNtcChwLCAiQU1ESzdQTk9XISIsIDEwKSA9PSAwKSB7CiAgICAgICAg ICAgICAgICAgICAgICAgIHBzYiA9IChzdHJ1Y3QgcHNiX3MgKilwOwogICAgICAgICAgICAgICAg ICAgICAgICBpZiAocHNiLT52ZXJzaW9uICE9IFBOOF9QU0JfVkVSU0lPTikKICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICByZXR1cm4gMDsKICAgICAgICAgICAgICAgICAgICAgICAgY3N0 YXRlLT52c3QgPSBwc2ItPnR0aW1lOwogICAgICAgICAgICAgICAgICAgICAgICBjc3RhdGUtPnJ2 byA9IFBOOF9QU0JfVE9fUlZPKHBzYi0+cmVzZXJ2ZWQpOwogICAgICAgICAgICAgICAgICAgICAg ICBjc3RhdGUtPmlydCA9IFBOOF9QU0JfVE9fSVJUKHBzYi0+cmVzZXJ2ZWQpOwogICAgICAgICAg ICAgICAgICAgICAgICBjc3RhdGUtPm12cyA9IFBOOF9QU0JfVE9fTVZTKHBzYi0+cmVzZXJ2ZWQp OwogICAgICAgICAgICAgICAgICAgICAgICBjc3RhdGUtPmxvdyA9IFBOOF9QU0JfVE9fQkFUVChw c2ItPnJlc2VydmVkKTsKICAgICAgICAgICAgICAgICAgICAgICAgcCs9IHNpemVvZihzdHJ1Y3Qg cHNiX3MpOwogICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGkgPSAwOyBpIDwgcHNiLT5uX3Bz dDsgKytpKSB7CgkJCQlwc3QgPSAoc3RydWN0IHBzdF9zICopIHA7CiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgY3N0YXRlLT5wbGwgPSBwc3QtPnBsbDsKICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBjc3RhdGUtPm5fc3RhdGVzID0gcHN0LT5uX3N0YXRlczsKICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAvL2lmIChjcHVzaWcgPT0gcHN0LT5jcHVpZCAmJgogICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZihwc3QtPmZpZCA9PSBmaWQgJiYgcHN0LT52 aWQgPT0gdmlkKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1 cm4gKGs4cG5vd19kZWNvZGVfcHN0KGNzdGF0ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBwKz0gc2l6ZW9mIChzdHJ1Y3QgcHN0X3MpKSk7CiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHAg Kz0gc2l6ZW9mKHN0cnVjdCBwc3RfcykgKyAyCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAqIGNzdGF0ZS0+bl9zdGF0ZXM7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAg ICAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgcmV0dXJuIDA7Cn0KCnN0YXRpYyBpbnQK azhfcG93ZXJub3dfc2V0cGVyZih1bnNpZ25lZCBpbnQgZnJlcSkKewogICAgICAgIHVuc2lnbmVk IGludCBpOwogICAgICAgIHVpbnQ2NF90IHN0YXR1czsKICAgICAgICB1aW50MzJfdCB2YWw7CiAg ICAgICAgaW50IGNmaWQsIGN2aWQsIGZpZCA9IDAsIHZpZCA9IDA7CiAgICAgICAgaW50IHJ2bzsK ICAgICAgICBzdHJ1Y3Qgazhwbm93X2NwdV9zdGF0ZSAqY3N0YXRlOwogICAgICAgIC8qCiAgICAg ICAgICogV2UgZG9udCBkbyBhIGs4cG5vd19yZWFkX3BlbmRpbmdfd2FpdCBoZXJlLCBuZWVkIHRv IGVuc3VyZSB0aGF0IHRoZQogICAgICAgICAqIGNoYW5nZSBwZW5kaW5nIGJpdCBpc24ndCBzdHVj aywKICAgICAgICAgKi8KICAgICAgICBzdGF0dXMgPSByZG1zcihNU1JfQU1ESzdfRklEVklEX1NU QVRVUyk7CiAgICAgICAgaWYgKFBOOF9TVEFfUEVORElORyhzdGF0dXMpKQogICAgICAgICAgICAg ICAgcmV0dXJuIDE7CiAgICAgICAgY2ZpZCA9IFBOOF9TVEFfQ0ZJRChzdGF0dXMpOwogICAgICAg IGN2aWQgPSBQTjhfU1RBX0NWSUQoc3RhdHVzKTsKICAgICAgICBjc3RhdGUgPSBrOHBub3dfY3Vy cmVudF9zdGF0ZTsKCS8va3ByaW50ZigiJXM6IGNzdGF0ZS0+bl9zdGF0ZXM9JWRcbiIsIF9fZnVu Y19fLCBjc3RhdGUtPm5fc3RhdGVzKTsKICAgICAgICBmb3IgKGkgPSAwOyBpIDwgY3N0YXRlLT5u X3N0YXRlczsgaSsrKSB7CiAgICAgICAgICAgICAgICBpZiAoY3N0YXRlLT5zdGF0ZV90YWJsZVtp XS5mcmVxID49IGZyZXEpIHsKICAgICAgICAgICAgICAgICAgICAgICAgLy9rcHJpbnRmKCIlczog ZnJlcT0lZFxuIiwgX19mdW5jX18sIGZyZXEpOwogICAgICAgICAgICAgICAgICAgICAgICBmaWQg PSBjc3RhdGUtPnN0YXRlX3RhYmxlW2ldLmZpZDsKICAgICAgICAgICAgICAgICAgICAgICAgdmlk ID0gY3N0YXRlLT5zdGF0ZV90YWJsZVtpXS52aWQ7CiAgICAgICAgICAgICAgICAgICAgICAgIC8v a3ByaW50ZigiJXM6IGZpZD0lZCB2aWQ9JWRcbiIsIF9fZnVuY19fLCBmaWQsIHZpZCk7CiAgICAg ICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgfQogICAgICAgIH0KICAg ICAgICBpZiAoZmlkID09IGNmaWQgJiYgdmlkID09IGN2aWQpIHsKICAgICAgICAgICAgICAgIGNw dXNwZWVkID0gZnJlcTsKICAgICAgICAgICAgICAgIHJldHVybiAwOwoJfQogICAgICAgIC8qCiAg ICAgICAgICogUGhhc2UgMTogUmFpc2UgY29yZSB2b2x0YWdlIHRvIHJlcXVlc3RlZCBWSUQgaWYg ZnJlcXVlbmN5IGlzCiAgICAgICAgICogZ29pbmcgdXAuCiAgICAgICAgICovCiAgICAgICAgd2hp bGUgKGN2aWQgPiB2aWQpIHsKICAgICAgICAgICAgICAgIHZhbCA9IGN2aWQgLSAoMSA8PCBjc3Rh dGUtPm12cyk7CiAgICAgICAgICAgICAgICBXUklURV9GSURWSUQoY2ZpZCwgKHZhbCA+IDApID8g dmFsIDogMCwgMVVMTCk7CiAgICAgICAgICAgICAgICBSRUFEX1BFTkRJTkdfV0FJVChzdGF0dXMp OwogICAgICAgICAgICAgICAgY3ZpZCA9IFBOOF9TVEFfQ1ZJRChzdGF0dXMpOwogICAgICAgICAg ICAgICAgQ09VTlRfT0ZGX1ZTVChjc3RhdGUtPnZzdCk7CiAgICAgICAgfQoKICAgICAgICAvKiAu Li4gdGhlbiByYWlzZSB0byB2b2x0YWdlICsgUlZPIChpZiByZXF1aXJlZCkgKi8KICAgICAgICBm b3IgKHJ2byA9IGNzdGF0ZS0+cnZvOyBydm8gPiAwICYmIGN2aWQgPiAwOyAtLXJ2bykgewogICAg ICAgICAgICAgICAgLyogWFhYIEl0J3Mgbm90IGNsZWFyIGZyb20gc3BlYyBpZiB3ZSBoYXZlIHRv IGRvIHRoYXQKICAgICAgICAgICAgICAgICAqIGluIDAuMjUgc3RlcCBvciBpbiBNVlMuICBUaGVy ZWZvcmUgZG8gaXQgYXMgaXQncyBkb25lCiAgICAgICAgICAgICAgICAgKiB1bmRlciBMaW51eCAq LwogICAgICAgICAgICAgICAgV1JJVEVfRklEVklEKGNmaWQsIGN2aWQgLSAxLCAxVUxMKTsKICAg ICAgICAgICAgICAgIFJFQURfUEVORElOR19XQUlUKHN0YXR1cyk7CiAgICAgICAgICAgICAgICBj dmlkID0gUE44X1NUQV9DVklEKHN0YXR1cyk7CiAgICAgICAgICAgICAgICBDT1VOVF9PRkZfVlNU KGNzdGF0ZS0+dnN0KTsKICAgICAgICB9CgkgLyogUGhhc2UgMjogY2hhbmdlIHRvIHJlcXVlc3Rl ZCBjb3JlIGZyZXF1ZW5jeSAqLwogICAgICAgIGlmIChjZmlkICE9IGZpZCkgewogICAgICAgICAg ICAgICAgdWludDMyX3QgdmNvX2ZpZCwgdmNvX2NmaWQ7CiAgICAgICAgICAgICAgICB2Y29fZmlk ID0gRklEX1RPX1ZDT19GSUQoZmlkKTsKICAgICAgICAgICAgICAgIHZjb19jZmlkID0gRklEX1RP X1ZDT19GSUQoY2ZpZCk7CiAgICAgICAgICAgICAgICB3aGlsZSAoYWJzKHZjb19maWQgLSB2Y29f Y2ZpZCkgPiAyKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChmaWQgPiBjZmlkKSB7CiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGNmaWQgPiA2KQogICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsID0gY2ZpZCArIDI7CiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgdmFsID0gRklEX1RPX1ZDT19GSUQoY2ZpZCkgKyAyOwogICAgICAgICAgICAgICAgICAg ICAgICB9IGVsc2UKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWwgPSBjZmlkIC0g MjsKICAgICAgICAgICAgICAgICAgICAgICAgV1JJVEVfRklEVklEKHZhbCwgY3ZpZCwgKHVpbnQ2 NF90KWNzdGF0ZS0+cGxsICogMTAwMCAvIDUpOwogICAgICAgICAgICAgICAgICAgICAgICBSRUFE X1BFTkRJTkdfV0FJVChzdGF0dXMpOwogICAgICAgICAgICAgICAgICAgICAgICBjZmlkID0gUE44 X1NUQV9DRklEKHN0YXR1cyk7CiAgICAgICAgICAgICAgICAgICAgICAgIENPVU5UX09GRl9JUlQo Y3N0YXRlLT5pcnQpOwogICAgICAgICAgICAgICAgICAgICAgICB2Y29fY2ZpZCA9IEZJRF9UT19W Q09fRklEKGNmaWQpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgV1JJVEVfRklE VklEKGZpZCwgY3ZpZCwgKHVpbnQ2NF90KSBjc3RhdGUtPnBsbCAqIDEwMDAgLyA1KTsKCQlSRUFE X1BFTkRJTkdfV0FJVChzdGF0dXMpOwogICAgICAgICAgICAgICAgY2ZpZCA9IFBOOF9TVEFfQ0ZJ RChzdGF0dXMpOwogICAgICAgICAgICAgICAgQ09VTlRfT0ZGX0lSVChjc3RhdGUtPmlydCk7CiAg ICAgICAgfQoJIC8qIFBoYXNlIDM6IGNoYW5nZSB0byByZXF1ZXN0ZWQgdm9sdGFnZSAqLwogICAg ICAgIGlmIChjdmlkICE9IHZpZCkgewogICAgICAgICAgICAgICAgV1JJVEVfRklEVklEKGNmaWQs IHZpZCwgMVVMTCk7CiAgICAgICAgICAgICAgICBSRUFEX1BFTkRJTkdfV0FJVChzdGF0dXMpOwog ICAgICAgICAgICAgICAgY3ZpZCA9IFBOOF9TVEFfQ1ZJRChzdGF0dXMpOwogICAgICAgICAgICAg ICAgQ09VTlRfT0ZGX1ZTVChjc3RhdGUtPnZzdCk7CiAgICAgICAgfQogICAgICAgIGlmIChjZmlk ID09IGZpZCB8fCBjdmlkID09IHZpZCkKICAgICAgICAgICAgICAgIGNwdXNwZWVkID0gY3N0YXRl LT5zdGF0ZV90YWJsZVtpXS5mcmVxOwogICAgICAgIHJldHVybiAwOwp9CgpzdGF0aWMgaW50CnBv d2Vybm93X3N5c2N0bF9oZWxwZXIoU1lTQ1RMX0hBTkRMRVJfQVJHUykKewogICAgICAgIGludCAg ICAgIGZxLCBlcnIgPSAwOwogICAgICAgIGludCAgICAgIGk7CiAgICAgICAgc3RydWN0IGs4cG5v d19jcHVfc3RhdGUgKmNzdGF0ZTsKICAgICAgICBzdHJ1Y3Qgazhwbm93X3N0YXRlICpzdGF0ZTsK ICAgICAgICBjc3RhdGUgPSBrOHBub3dfY3VycmVudF9zdGF0ZTsKICAgICAgICBpZiAocmVxLT5u ZXdwdHIgIT0gTlVMTCkgewogICAgICAgICAgICAgICAgZXJyID0gU1lTQ1RMX0lOKHJlcSwgJmZx LCBzaXplb2YoZnEpKTsKICAgICAgICAgICAgICAgIGlmIChlcnIpCiAgICAgICAgICAgICAgICAg ICAgICAgIHJldHVybiBlcnI7CiAgICAgICAgICAgICAgICBpZiAoZnEgIT0gY3B1c3BlZWQpIHsK CQkJZm9yIChpID0gY3N0YXRlLT5uX3N0YXRlczsgaSA+IDA7IGktLSkgewoJCQkJc3RhdGUgPSAm Y3N0YXRlLT5zdGF0ZV90YWJsZVtpLTFdOwoJCQkJaWYoZnEgPT0gc3RhdGUtPmZyZXEpIHsKCQkJ CQlrOF9wb3dlcm5vd19zZXRwZXJmKGZxKTsKCQkJCQlicmVhazsKCQkJCX0KCQkJfQoJCX0KICAg ICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgZXJyID0gU1lTQ1RMX09VVChyZXEsICZjcHVz cGVlZCwgc2l6ZW9mKGNwdXNwZWVkKSk7CiAgICAgICAgfQogICAgICAgIHJldHVybiBlcnI7Cn0K CnN0YXRpYyBzdHJ1Y3Qgc3lzY3RsX2N0eF9saXN0ICAgbWFjaGRlcF9wb3dlcm5vd19jdHg7CnN0 YXRpYyBjaGFyIGZyZXFzX2F2YWlsYWJsZVs4MF07CgpzdGF0aWMgaW50CnBvd2Vybm93X2luaXQo dm9pZCkKewogICAgICAgIHVpbnQ2NF90IHN0YXR1czsKCXNpemVfdCBsZW4sIGZyZXFfbGVuOwog ICAgICAgIHVpbnQzMl90IG1heGZpZCwgbWF4dmlkLCBpOyAKICAgICAgICBzdHJ1Y3Qgazhwbm93 X2NwdV9zdGF0ZSAqY3N0YXRlOwogICAgICAgIHN0cnVjdCBrOHBub3dfc3RhdGUgKnN0YXRlOwoJ Y29uc3QgY2hhciAqdGVjaG5hbWU7Cgl1X2ludDMyX3QgcmVnc1s0XTsKCWNwdXNwZWVkID0gMDsK CXN0cnVjdCBzeXNjdGxfb2lkICAgICAgICpvaWQsICpsZWFmOwogICAgICAgIGRvX2NwdWlkKDB4 ODAwMDAwMDAsIHJlZ3MpOwogICAgICAgIGlmIChyZWdzWzBdIDwgMHg4MDAwMDAwNykKICAgICAg ICAgICAgICAgIHJldHVybiAwOwogICAgICAgIGRvX2NwdWlkKDB4ODAwMDAwMDcsIHJlZ3MpOwog ICAgICAgIGlmICghKHJlZ3NbM10gJiBBTURfUE5fRklEX1ZJRCkpCiAgICAgICAgICAgICAgICBy ZXR1cm4gMDsKICAgICAgICAvKiBFeHRlbmRlZCBDUFVJRCBzaWduYXR1cmUgdmFsdWUgKi8KICAg ICAgICBkb19jcHVpZCgweDgwMDAwMDAxLCByZWdzKTsKICAgICAgICBjc3RhdGUgPSBrbWFsbG9j KHNpemVvZihzdHJ1Y3Qgazhwbm93X2NwdV9zdGF0ZSksIE1fREVWQlVGLCBNX1dBSVRPSyk7CiAg ICAgICAgaWYgKCFjc3RhdGUpIHsKCQlrcHJpbnRmKCJwb3dlcm5vdzogbm90IGVub3VnaCBtZW1v cnlcbiIpOwogICAgICAgICAgICAgICAgcmV0dXJuIDE7Cgl9CiAgICAgICAgY3N0YXRlLT5uX3N0 YXRlcyA9IDA7CgogICAgICAgIHN0YXR1cyA9IHJkbXNyKE1TUl9BTURLN19GSURWSURfU1RBVFVT KTsKICAgICAgICBtYXhmaWQgPSBQTjhfU1RBX01GSUQoc3RhdHVzKTsKICAgICAgICBtYXh2aWQg PSBQTjhfU1RBX01WSUQoc3RhdHVzKTsKCiAgICAgICAgaWYgKFBOOF9TVEFfU0ZJRChzdGF0dXMp ICE9IFBOOF9TVEFfTUZJRChzdGF0dXMpKQogICAgICAgICAgICAgICAgdGVjaG5hbWUgPSAiUG93 ZXJOb3chIjsKICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICB0ZWNobmFtZSA9ICJDb29sYG4n UXVpZXQiOwoKCWlmICghazhwbm93X3N0YXRlcyhjc3RhdGUsIDAsIG1heGZpZCwgbWF4dmlkKSkK CQlrOHBub3dfc3RhdGVzKGNzdGF0ZSwgcmVnc1swXSwgbWF4ZmlkLCBtYXh2aWQpOwoKICAgICAg ICBsZW4gPSAwOwogICAgICAgIGlmIChjc3RhdGUtPm5fc3RhdGVzKSB7CgkJZnJlcV9sZW4gPSBj c3RhdGUtPm5fc3RhdGVzICogKHNpemVvZigiOTk5OSAiKS0xKSArIDE7CiAgICAgICAgICAgICAg ICBrcHJpbnRmKCIlcyBzcGVlZHM6IiwKICAgICAgICAgICAgICAgICAgICB0ZWNobmFtZSk7CiAg ICAgICAgICAgICAgICBmb3IgKGkgPSBjc3RhdGUtPm5fc3RhdGVzOyBpID4gMDsgaS0tKSB7CiAg ICAgICAgICAgICAgICAgICAgICAgIHN0YXRlID0gJmNzdGF0ZS0+c3RhdGVfdGFibGVbaS0xXTsK ICAgICAgICAgICAgICAgICAgICAgICAga3ByaW50ZigiICVkIiwgc3RhdGUtPmZyZXEpOwogICAg ICAgICAgICAgICAgICAgICAgICBsZW4gKz0ga3NucHJpbnRmKGZyZXFzX2F2YWlsYWJsZSArIGxl biwgZnJlcV9sZW4gLSBsZW4sICIlZCVzIiwKCQkJICAgIHN0YXRlLT5mcmVxLAoJCQkgICAgaSA+ IDEgPyAiICIgOiAiIik7CgogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAga3ByaW50 ZigiIE1IelxuIik7CiAgICAgICAgICAgICAgICBrOHBub3dfY3VycmVudF9zdGF0ZSA9IGNzdGF0 ZTsKCQlrOF9wb3dlcm5vd19zZXRwZXJmKGNzdGF0ZS0+c3RhdGVfdGFibGVbMF0uZnJlcSk7CiAg ICAgICAgfSBlbHNlIHsKCQlrZnJlZShjc3RhdGUsIE1fREVWQlVGKTsKCQlrcHJpbnRmKCJwb3dl cm5vdzogbm8gcG93ZXIgc3RhdGVzIGZvdW5kXG4iKTsKCQlyZXR1cm4gMjsKCX0KCgkgLyoKICAg ICAgICAgKiBTZXR1cCB0aGUgc3lzY3RsIHN1Yi10cmVlIG1hY2hkZXAucG93ZXJub3cuKgogICAg ICAgICAqLwogICAgICAgIG9pZCA9IFNZU0NUTF9BRERfTk9ERSgmbWFjaGRlcF9wb3dlcm5vd19j dHgsCiAgICAgICAgICAgIFNZU0NUTF9TVEFUSUNfQ0hJTERSRU4oX21hY2hkZXApLCBPSURfQVVU TywgInBvd2Vybm93IiwKICAgICAgICAgICAgQ1RMRkxBR19SRCwgTlVMTCwgIiIpOwogICAgICAg IGlmIChvaWQgPT0gTlVMTCkKICAgICAgICAgICAgICAgIHJldHVybihFT1BOT1RTVVBQKTsKICAg ICAgICBvaWQgPSBTWVNDVExfQUREX05PREUoJm1hY2hkZXBfcG93ZXJub3dfY3R4LCBTWVNDVExf Q0hJTERSRU4ob2lkKSwKICAgICAgICAgICAgT0lEX0FVVE8sICJmcmVxdWVuY3kiLCBDVExGTEFH X1JELCBOVUxMLCAiIik7CiAgICAgICAgaWYgKG9pZCA9PSBOVUxMKQogICAgICAgICAgICAgICAg cmV0dXJuKEVPUE5PVFNVUFApOwogICAgICAgIGxlYWYgPSBTWVNDVExfQUREX1BST0MoJm1hY2hk ZXBfcG93ZXJub3dfY3R4LCBTWVNDVExfQ0hJTERSRU4ob2lkKSwKICAgICAgICAgICAgT0lEX0FV VE8sICJjdXJyZW50IiwgQ1RMVFlQRV9JTlQgfCBDVExGTEFHX1JXLCBOVUxMLCAwLAogICAgICAg ICAgICBwb3dlcm5vd19zeXNjdGxfaGVscGVyLCAiSSIsCiAgICAgICAgICAgICJDdXJyZW50IENQ VSBmcmVxdWVuY3kgZm9yIEFNRCBQb3dlck5vdyEiKTsKICAgICAgICBpZiAobGVhZiA9PSBOVUxM KQogICAgICAgICAgICAgICAgcmV0dXJuKEVPUE5PVFNVUFApOwogICAgICAgIGxlYWYgPSBTWVND VExfQUREX1NUUklORygmbWFjaGRlcF9wb3dlcm5vd19jdHgsIFNZU0NUTF9DSElMRFJFTihvaWQp LAogICAgICAgICAgICBPSURfQVVUTywgImF2YWlsYWJsZSIsIENUTEZMQUdfUkQsIGZyZXFzX2F2 YWlsYWJsZSwKICAgICAgICAgICAgc2l6ZW9mKGZyZXFzX2F2YWlsYWJsZSksCiAgICAgICAgICAg ICJDUFUgZnJlcXVlbmNpZXMgc3VwcG9ydGVkIGJ5IEFNRCBQb3dlck5vdyEiKTsKICAgICAgICBp ZiAobGVhZiA9PSBOVUxMKQogICAgICAgICAgICAgICAgcmV0dXJuKEVPUE5PVFNVUFApOwoJcmV0 dXJuKDApOwp9CgpzdGF0aWMgaW50CnBvd2Vybm93X21vZGV2aChzdHJ1Y3QgbW9kdWxlICptLCBp bnQgd2hhdCwgdm9pZCAqYXJnIF9fdW51c2VkKSAKewoJaW50IGVycm9yOwoKCXN3aXRjaCh3aGF0 KSB7CgljYXNlIE1PRF9MT0FEOgoJCWVycm9yID0gc3lzY3RsX2N0eF9pbml0KCZtYWNoZGVwX3Bv d2Vybm93X2N0eCk7CiAgICAgICAgICAgICAgICBpZiAoZXJyb3IgIT0gMCkKICAgICAgICAgICAg ICAgICAgICAgICAgYnJlYWs7CgkJZXJyb3IgPSBwb3dlcm5vd19pbml0KCk7CgkJYnJlYWs7Cglj YXNlIE1PRF9VTkxPQUQ6CgkJaWYoazhwbm93X2N1cnJlbnRfc3RhdGUpCgkJCWtmcmVlKGs4cG5v d19jdXJyZW50X3N0YXRlLCBNX0RFVkJVRik7CgkJZXJyb3IgPSBzeXNjdGxfY3R4X2ZyZWUoJm1h Y2hkZXBfcG93ZXJub3dfY3R4KTsKCQlicmVhazsKCWRlZmF1bHQ6CgkJZXJyb3IgPSBFSU5WQUw7 CgkJYnJlYWs7Cgl9CglyZXR1cm4oZXJyb3IpOwp9CnN0YXRpYyBtb2R1bGVkYXRhX3QgcG93ZXJu b3dfbW9kID0gewoJInBvd2Vybm93IiwKCXBvd2Vybm93X21vZGV2aCwKCU5VTEwsCn07CgpERUNM QVJFX01PRFVMRShwb3dlcm5vdywgcG93ZXJub3dfbW9kLCBTSV9CT09UMl9LTEQsIFNJX09SREVS X0FOWSk7Cg== --216.240.41.26.80.70713.1241972886.186.1--