Re: SPF vulnerability
karan pott <[email protected]> Fri, 17 Apr 2009 09:16:44 +0530 (IST)
| Newsgroups | gmane.mail.spam.spf.devel |
|---|---|
| Message-ID | <[email protected]> |
--0-180500900-1239940004=:23047 Content-Type: multipart/alternative; boundary="0-1080084418-1239940004=:23047" --0-1080084418-1239940004=:23047 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable Thanks Shevek, Here is the modified file. the change is at line 350, Please= let me know if you have any comments. Thanks and Regards, Karan. ________________________________ From: Shevek <[email protected]> To: [email protected] Cc: karan pott <[email protected]> Sent: Thursday, 16 April, 2009 4:10:54 PM Subject: Re: [spf-devel] SPF vulnerability On Fri, 2009-04-10 at 12:04 +0530, karan pott wrote: > Hi Shevek, >=20 > I have spent a bit of effort to make libspf2 1.2.9 to be compilable on > Windows with Visual Studio 2005. However, while testing I figured out > that (libspf2-1.2.9\src\libspf2\spf_server.c : 350) had the statement > which made SPF_dns_lookup fail with DNSTIMEOUT rather that the return > codes being checked for. >=20 > But when I modified the code to (rr_type =3D ns_t_txt), it started > working okay. I would like to confirm that, is there something missing > from the original code or my change is okay. >=20 > Another important thing I like to know is that once I am done with my > porting effort, I would like to submit my code. Can you please guide > how and what the procedure is and How I can get my source code > reviewed. Sure, just email me a patch, and if it looks sane I'll throw it in. I suspect it's very likely to look sane, since you obviously know what you're talking about. S. ------------------------------------------- Sender Policy Framework: http://www.openspf.org Modify Your Subscription: http://www.listbox.com/member/ Archives: https://www.listbox.com/member/archive/1007/=3Dnow RSS Feed: https://www.listbox.com/member/archive/rss/1007/ Powered by Listbox: http://www.listbox.com Connect with friends all over the world. Get Yahoo! India Messenger a= t http://in.messenger.yahoo.com/?wm=3Dn/ --0-1080084418-1239940004=:23047 Content-Type: text/html; charset=utf-8 Content-Transfer-Encoding: quoted-printable <html><head><style type=3D"text/css"><!-- DIV {margin:0px;} --></style></he= ad><body><div style=3D"font-family:times new roman,new york,times,serif;fon= t-size:12pt"><div>Thanks Shevek, Here is the modified file. the change is a= t line 350, Please let me know if you have any comments.<br><br>Thanks and = Regards,<br>Karan.<br></div><div style=3D"font-family: times new roman,new = york,times,serif; font-size: 12pt;"><br><div style=3D"font-family: arial,he= lvetica,sans-serif; font-size: 13px;"><font size=3D"2" face=3D"Tahoma"><hr = size=3D"1"><b><span style=3D"font-weight: bold;">From:</span></b> Shevek &l= t;[email protected]><br><b><span style=3D"font-weight: bold;">To:</span></= b> [email protected]<br><b><span style=3D"font-weight: bold;">Cc:</s= pan></b> karan pott <[email protected]><br><b><span style=3D= "font-weight: bold;">Sent:</span></b> Thursday, 16 April, 2009 4:10:54 PM<b= r><b><span style=3D"font-weight: bold;">Subject:</span></b> Re: [spf-devel]= SPF vulnerability<br></font><br>On Fri, 2009-04-10 at 12:04 +0530, karan pott = wrote:<br>> Hi Shevek,<br>> <br>> I have spent a bit of effort to = make libspf2 1.2.9 to be compilable on<br>> Windows with Visual Studio 2= 005. However, while testing I figured out<br>> that (libspf2-1.2.9\src\l= ibspf2\spf_server.c : 350) had the statement<br>> which made SPF_dns_loo= kup fail with DNSTIMEOUT rather that the return<br>> codes being checked= for.<br>> <br>> But when I modified the code to (rr_type =3D ns_t_tx= t), it started<br>> working okay. I would like to confirm that, is there= something missing<br>> from the original code or my change is okay.<br>= > <br>> Another important thing I like to know is that once I am done= with my<br>> porting effort, I would like to submit my code. Can you pl= ease guide<br>> how and what the procedure is and How I can get my sourc= e code<br>> reviewed.<br><br>Sure, just email me a patch, and if it looks sane I'll throw it in. I<br>suspect it's very likely to look sane, s= ince you obviously know what<br>you're talking about.<br><br>S.<br><br><br>= <br><br>-------------------------------------------<br>Sender Policy Framew= ork: <a href=3D"http://www.openspf.org" target=3D"_blank">http://www.opensp= f.org</a><br>Modify Your Subscription: <a href=3D"http://www.listbox.com/me= mber/" target=3D"_blank">http://www.listbox.com/member/</a><br>Archives: <a= href=3D"https://www.listbox.com/member/archive/1007/=3Dnow" target=3D"_bla= nk">https://www.listbox.com/member/archive/1007/=3Dnow</a><br>RSS Feed: <a = href=3D"https://www.listbox.com/member/archive/rss/1007/" target=3D"_blank"= >https://www.listbox.com/member/archive/rss/1007/</a><br>Powered by Listbox= : <a href=3D"http://www.listbox.com" target=3D"_blank">http://www.listbox.c= om</a><br></div></div></div><br> <!--6--><hr size=3D1></hr> Add more friends to your messenger and enj= oy! <a href=3D"http://in.rd.yahoo.com/tagline_messenger_6/*http://messenger= .yahoo.com/invite/"> Invite them now.</a><div style=3D"padding:0 4px 4px 4p= x;background-color:#fff;clear:both" bgcolor=3D"#ffffff"> <hr> <p>Sender Policy Framework: <a href=3D"http://www.openspf.org">http://www.o= penspf.org</a><br>=0D Modify Your Subscription: <a href=3D"http://www.listbox.com/member/">http:/= /www.listbox.com/member/</a></p> <table border=3D"0" cellspacing=3D"0" cellpadding=3D"0" width=3D"100%" styl= e=3D"background-color:#fff" bgcolor=3D"#ffffff"> <tr> <td padding=3D"4px"> <font color=3D"black" size=3D"1" face=3D"helvetica, sans-serif;"> <a style=3D"text-decoration:none;color:#669933;border-bottom: 1px sol= id #444444" href=3D"https://www.listbox.com/member/archive/1007/=3Dnow" title=3D"Go to = archives for spf-devel">Archives</a> <a border=3D"0" style=3D"text-decoration:none;color:#669933" href=3D"https:= //www.listbox.com/member/archive/rss/1007/" title=3D"RSS feed for spf-devel= "><img border=3D0 src=3D"https://www.listbox.com/images/feed-icon-10x10.jpg= "></a> <td valign=3D"top" align=3D"right"><a style=3D"border-bottom:none;" href=3D= "http://www.listbox.com"> <img src=3D"https://www.listbox.com/images/listbox-logo-small.jpg" title=3D"Powered by Listbox" border=3D"0" /></a></td> </font> </td> </tr> </table> </div> </body></html>= --0-1080084418-1239940004=:23047-- --0-180500900-1239940004=:23047 Content-Type: text/plain; name="spf_server.c" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="spf_server.c" LyoKICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4g cmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKICogaXQgdW5kZXIgdGhl IHRlcm1zIG9mIGVpdGhlcjoKICoKICogICBhKSBUaGUgR05VIExlc3NlciBH ZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJl ZQogKiAgICAgIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9u IDIuMSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkKICogICAgICBsYXRlciB2 ZXJzaW9uLAogKgogKiAgIE9SCiAqCiAqICAgYikgVGhlIHR3by1jbGF1c2Ug QlNEIGxpY2Vuc2UuCiAqCiAqIFRoZXNlIGxpY2Vuc2VzIGNhbiBiZSBmb3Vu ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24gaW4gdGhlIGZpbGUgTElDRU5TRVMK ICovCgojaW5jbHVkZSAic3BmX3N5c19jb25maWcuaCIKCgojaWZkZWYgU1RE Q19IRUFERVJTCiMgaW5jbHVkZSA8c3RkaW8uaD4gICAgICAgIC8qIHN0ZGlu IC8gc3Rkb3V0ICovCiMgaW5jbHVkZSA8c3RkbGliLmg+ICAgICAgIC8qIG1h bGxvYyAvIGZyZWUgKi8KIyBpbmNsdWRlIDxjdHlwZS5oPiAgICAgICAgLyog aXN1cHBlciAvIHRvbG93ZXIgKi8KI2VuZGlmCgojaWZkZWYgSEFWRV9JTlRU WVBFU19ICiNpbmNsdWRlIDxpbnR0eXBlcy5oPgojZW5kaWYKCiNpZmRlZiBI QVZFX05FVERCX0gKI2luY2x1ZGUgPG5ldGRiLmg+CiNlbmRpZgoKI2lmZGVm IEhBVkVfVU5JU1REX0gKI2luY2x1ZGUgPHVuaXN0ZC5oPgojZW5kaWYgCgoj aWZkZWYgSEFWRV9TVFJJTkdfSAojIGluY2x1ZGUgPHN0cmluZy5oPiAgICAg ICAvKiBzdHJzdHIgLyBzdHJkdXAgKi8KI2Vsc2UKIyBpZmRlZiBIQVZFX1NU UklOR1NfSAojICBpbmNsdWRlIDxzdHJpbmdzLmg+ICAgICAgIC8qIHN0cnN0 ciAvIHN0cmR1cCAqLwojIGVuZGlmCiNlbmRpZgoKI2lmZGVmIEhBVkVfTkVU REJfSAojIGluY2x1ZGUgPG5ldGRiLmg+CiNlbmRpZgoKI2lmbmRlZiBIT1NU X05BTUVfTUFYCiNkZWZpbmUgSE9TVF9OQU1FX01BWCAyNTUKI2VuZGlmIAoK CiNpbmNsdWRlICJzcGYuaCIKI2luY2x1ZGUgInNwZl9yZXNwb25zZS5oIgoj aW5jbHVkZSAic3BmX3JlY29yZC5oIgojaW5jbHVkZSAic3BmX3NlcnZlci5o IgojaW5jbHVkZSAic3BmX2Rucy5oIgojaW5jbHVkZSAic3BmX2Ruc19yZXNv bHYuaCIKI2luY2x1ZGUgInNwZl9kbnNfY2FjaGUuaCIKI2luY2x1ZGUgInNw Zl9kbnNfem9uZS5oIgojaW5jbHVkZSAic3BmX2ludGVybmFsLmgiCiNpbmNs dWRlICJzcGZfZG5zX2ludGVybmFsLmgiCgoKX19hdHRyaWJ1dGVfXygod2Fy bl91bnVzZWRfcmVzdWx0KSkKc3RhdGljIFNQRl9lcnJjb2RlX3QKU1BGX3Nl cnZlcl9zZXRfcmVjX2RvbV9naGJuKFNQRl9zZXJ2ZXJfdCAqc3ApCnsKCXNw LT5yZWNfZG9tID0gbWFsbG9jKEhPU1RfTkFNRV9NQVgpOwoJaWYgKCEgc3At PnJlY19kb20pCgkJcmV0dXJuIFNQRl9FX05PX01FTU9SWTsKI2lmZGVmIF9X SU4zMgoJZ2V0aG9zdG5hbWVGUUROKHNwLT5yZWNfZG9tLCBIT1NUX05BTUVf TUFYKTsKCXJldHVybiAwOwkvKiBYWFggRklYTUU/ICovCiNlbHNlCglpZiAo Z2V0aG9zdG5hbWUoc3AtPnJlY19kb20sIEhPU1RfTkFNRV9NQVgpIDwgMCkK CQkvKiBYWFggRXJyb3IgdXNpbmcgc3RyZXJyb3IuICovCgkJcmV0dXJuIFNQ Rl9FX0lOVEVSTkFMX0VSUk9SOwojZW5kaWYKCXJldHVybiBTUEZfRV9TVUND RVNTOwp9CgpzdGF0aWMgdm9pZApTUEZfc2VydmVyX25ld19jb21tb25fcHJl KFNQRl9zZXJ2ZXJfdCAqc3AsIGludCBkZWJ1ZykKewoJU1BGX2VycmNvZGVf dAkJIGVycjsKCgltZW1zZXQoc3AsIDAsIHNpemVvZihTUEZfc2VydmVyX3Qp KTsKCglzcC0+bWF4X2Ruc19tZWNoID0gU1BGX01BWF9ETlNfTUVDSDsKCXNw LT5tYXhfZG5zX3B0ciA9IFNQRl9NQVhfRE5TX1BUUjsKCXNwLT5tYXhfZG5z X214ID0gU1BGX01BWF9ETlNfTVg7CglzcC0+ZGVidWcgPSBkZWJ1ZzsKCgll cnIgPSBTUEZfc2VydmVyX3NldF9yZWNfZG9tX2doYm4oc3ApOwoJaWYgKGVy ciAhPSBTUEZfRV9TVUNDRVNTKQoJCVNQRl9lcnJvcigiRmFpbGVkIHRvIHNl dCByZWNfZG9tIHVzaW5nIGdldGhvc3RuYW1lKCkiKTsKfQoKc3RhdGljIHZv aWQKU1BGX3NlcnZlcl9uZXdfY29tbW9uX3Bvc3QoU1BGX3NlcnZlcl90ICpz cCkKewoJU1BGX3Jlc3BvbnNlX3QJCSpzcGZfcmVzcG9uc2U7CglTUEZfZXJy Y29kZV90CQkgZXJyOwoKCXNwZl9yZXNwb25zZSA9IE5VTEw7CgllcnIgPSBT UEZfc2VydmVyX3NldF9leHBsYW5hdGlvbihzcCwgU1BGX0RFRkFVTFRfRVhQ LAoJCQkJCSZzcGZfcmVzcG9uc2UpOwoJaWYgKGVyciAhPSBTUEZfRV9TVUND RVNTKQoJCVNQRl9lcnJvcmYoIkVycm9yIGNvZGUgJWQgY29tcGlsaW5nIGRl ZmF1bHQgZXhwbGFuYXRpb24iLCBlcnIpOwoJaWYgKHNwZl9yZXNwb25zZSkg ewoJCS8qIFhYWCBQcmludCB0aGUgZXJyb3JzPyEgKi8KCQlpZiAoU1BGX3Jl c3BvbnNlX21lc3NhZ2VzKHNwZl9yZXNwb25zZSkgPiAwKQoJCQlTUEZfZXJy b3IoIlJlc3BvbnNlIGVycm9ycyBjb21waWxpbmcgZGVmYXVsdCBleHBsYW5h dGlvbiIpOwoJCVNQRl9yZXNwb25zZV9mcmVlKHNwZl9yZXNwb25zZSk7Cgl9 CgoJc3BmX3Jlc3BvbnNlID0gTlVMTDsKCWVyciA9IFNQRl9zZXJ2ZXJfc2V0 X2xvY2FscG9saWN5KHNwLCAiIiwgMCwgJnNwZl9yZXNwb25zZSk7CglpZiAo ZXJyICE9IFNQRl9FX1NVQ0NFU1MpCgkJU1BGX2Vycm9yZigiRXJyb3IgY29k ZSAlZCBjb21waWxpbmcgZGVmYXVsdCB3aGl0ZWxpc3QiLCBlcnIpOwoJaWYg KHNwZl9yZXNwb25zZSkgewoJCS8qIFhYWCBQcmludCB0aGUgZXJyb3JzPyEg Ki8KCQlpZiAoU1BGX3Jlc3BvbnNlX21lc3NhZ2VzKHNwZl9yZXNwb25zZSkg PiAwKQoJCQlTUEZfZXJyb3IoIlJlc3BvbnNlIGVycm9ycyBjb21waWxpbmcg ZGVmYXVsdCB3aGl0ZWxpc3QiKTsKCQlTUEZfcmVzcG9uc2VfZnJlZShzcGZf cmVzcG9uc2UpOwoJfQp9CgpTUEZfc2VydmVyX3QgKgpTUEZfc2VydmVyX25l dyhTUEZfc2VydmVyX2Ruc3R5cGVfdCBkbnN0eXBlLCBpbnQgZGVidWcpCnsK CVNQRl9kbnNfc2VydmVyX3QJKmRjX3I7CglTUEZfZG5zX3NlcnZlcl90CSpk Y19jOwoJU1BGX2Ruc19zZXJ2ZXJfdAkqZGNfejsKCVNQRl9zZXJ2ZXJfdAkJ KnNwOwoKCXNwID0gKFNQRl9zZXJ2ZXJfdCAqKW1hbGxvYyhzaXplb2YoU1BG X3NlcnZlcl90KSk7CglpZiAoISBzcCkKCQlyZXR1cm4gc3A7CglTUEZfc2Vy dmVyX25ld19jb21tb25fcHJlKHNwLCBkZWJ1Zyk7CglzcC0+ZGVzdHJveV9y ZXNvbHZlciA9IDE7CgoJc3dpdGNoIChkbnN0eXBlKSB7CgkJY2FzZSBTUEZf RE5TX1JFU09MVjoKCQkJZGNfciA9IFNQRl9kbnNfcmVzb2x2X25ldyhOVUxM LCBOVUxMLCBkZWJ1Zyk7CgkJCWlmIChkY19yID09IE5VTEwpCgkJCQlTUEZf ZXJyb3IoIkZhaWxlZCB0byBjcmVhdGUgRE5TIHJlc29sdmVyIik7CgkJCXNw LT5yZXNvbHZlciA9IGRjX3I7CgkJCWJyZWFrOwoKCQljYXNlIFNQRl9ETlNf Q0FDSEU6CgkJCWRjX3IgPSBTUEZfZG5zX3Jlc29sdl9uZXcoTlVMTCwgTlVM TCwgZGVidWcpOwoJCQlpZiAoZGNfciA9PSBOVUxMKQoJCQkJU1BGX2Vycm9y KCJGYWlsZWQgdG8gY3JlYXRlIEROUyByZXNvbHZlciIpOwoJCQlkY19jID0g U1BGX2Ruc19jYWNoZV9uZXcoZGNfciwgTlVMTCwgZGVidWcsIDgpOwoJCQlp ZiAoZGNfYyA9PSBOVUxMKQoJCQkJU1BGX2Vycm9yKCJGYWlsZWQgdG8gY3Jl YXRlIEROUyBjYWNoZSIpOwoJCQlzcC0+cmVzb2x2ZXIgPSBkY19jOwoJCQli cmVhazsKCgkJY2FzZSBTUEZfRE5TX1pPTkU6CgkJCWRjX3ogPSBTUEZfZG5z X3pvbmVfbmV3KE5VTEwsIE5VTEwsIGRlYnVnKTsKCQkJaWYgKGRjX3ogPT0g TlVMTCkKCQkJCVNQRl9lcnJvcigiRmFpbGVkIHRvIGNyZWF0ZSBETlMgem9u ZSIpOwoJCQlzcC0+cmVzb2x2ZXIgPSBkY196OwoJCQlicmVhazsKCgkJZGVm YXVsdDoKCQkJU1BGX2Vycm9yZigiVW5rbm93biBETlMgdHlwZSAlZCIsIGRu c3R5cGUpOwoJfQoKCVNQRl9zZXJ2ZXJfbmV3X2NvbW1vbl9wb3N0KHNwKTsK CglyZXR1cm4gc3A7Cn0KClNQRl9zZXJ2ZXJfdCAqClNQRl9zZXJ2ZXJfbmV3 X2RucyhTUEZfZG5zX3NlcnZlcl90ICpkbnMsIGludCBkZWJ1ZykKewoJU1BG X3NlcnZlcl90CSpzcDsKCglzcCA9IChTUEZfc2VydmVyX3QgKiltYWxsb2Mo c2l6ZW9mKFNQRl9zZXJ2ZXJfdCkpOwoJaWYgKCEgc3ApCgkJcmV0dXJuIHNw OwoJU1BGX3NlcnZlcl9uZXdfY29tbW9uX3ByZShzcCwgZGVidWcpOwoJc3At PmRlc3Ryb3lfcmVzb2x2ZXIgPSAwOwoJc3AtPnJlc29sdmVyID0gZG5zOwoJ U1BGX3NlcnZlcl9uZXdfY29tbW9uX3Bvc3Qoc3ApOwoJcmV0dXJuIHNwOwp9 CgovKioKICogVGhpcyBmdW5jdGlvbiBkZXN0cm95cyB0aGUgRE5TIGxheWVy IGFzIHdlbGwuCiAqIElmIHRoZSAoY3VzdG9tKSBETlMgbGF5ZXIgaGFzIG5v IGRlc3RydWN0b3IsCiAqIHRoZW4gdGhpcyBjYW5ub3QgYW5kIGRvZXMgbm90 IGRlc3Ryb3kgaXQuCiAqLwp2b2lkClNQRl9zZXJ2ZXJfZnJlZShTUEZfc2Vy dmVyX3QgKnNwKQp7CglpZiAoc3AtPnJlc29sdmVyICYmIHNwLT5kZXN0cm95 X3Jlc29sdmVyKQoJCVNQRl9kbnNfZnJlZShzcC0+cmVzb2x2ZXIpOwoJaWYg KHNwLT5sb2NhbF9wb2xpY3kpCgkJU1BGX3JlY29yZF9mcmVlKHNwLT5sb2Nh bF9wb2xpY3kpOwoJaWYgKHNwLT5leHBsYW5hdGlvbikKCQlTUEZfbWFjcm9f ZnJlZShzcC0+ZXhwbGFuYXRpb24pOwoJaWYgKHNwLT5yZWNfZG9tKQoJCWZy ZWUoc3AtPnJlY19kb20pOwoJLyogWFhYIFRPRE86IEZyZWUgb3RoZXIgcGFy dHMgb2YgdGhlIHN0cnVjdHVyZS4gKi8KCWZyZWUoc3ApOwp9CgpTUEZfZXJy Y29kZV90ClNQRl9zZXJ2ZXJfc2V0X3JlY19kb20oU1BGX3NlcnZlcl90ICpz cCwgY29uc3QgY2hhciAqZG9tKQp7CglpZiAoc3AtPnJlY19kb20pCgkJZnJl ZShzcC0+cmVjX2RvbSk7CglpZiAoZG9tID09IE5VTEwpCgkJcmV0dXJuIFNQ Rl9zZXJ2ZXJfc2V0X3JlY19kb21fZ2hibihzcCk7CglzcC0+cmVjX2RvbSA9 IHN0cmR1cChkb20pOwoJaWYgKCEgc3AtPnJlY19kb20pCgkJcmV0dXJuIFNQ Rl9FX05PX01FTU9SWTsKCXJldHVybiBTUEZfRV9TVUNDRVNTOwp9CgpTUEZf ZXJyY29kZV90ClNQRl9zZXJ2ZXJfc2V0X3Nhbml0aXplKFNQRl9zZXJ2ZXJf dCAqc3AsIGludCBzYW5pdGl6ZSkKewoJc3AtPnNhbml0aXplID0gc2FuaXRp emU7CglyZXR1cm4gU1BGX0VfU1VDQ0VTUzsKfQoKU1BGX2VycmNvZGVfdApT UEZfc2VydmVyX3NldF9leHBsYW5hdGlvbihTUEZfc2VydmVyX3QgKnNwLCBj b25zdCBjaGFyICpleHAsCgkJCQlTUEZfcmVzcG9uc2VfdCAqKnNwZl9yZXNw b25zZXApCnsKCVNQRl9tYWNyb190CQkqc3BmX21hY3JvID0gTlVMTDsKCVNQ Rl9lcnJjb2RlX3QJIGVycjsKCglTUEZfQVNTRVJUX05PVE5VTEwoZXhwKTsK CgkvKiBUaGlzIGlzIGEgaGFja2lzaCB3YXkgdG8gZ2V0IHRoZSBlcnJvcnMu ICovCglpZiAoISAqc3BmX3Jlc3BvbnNlcCkgewoJCSpzcGZfcmVzcG9uc2Vw ID0gU1BGX3Jlc3BvbnNlX25ldyhOVUxMKTsKCQlpZiAoISAqc3BmX3Jlc3Bv bnNlcCkKCQkJcmV0dXJuIFNQRl9FX05PX01FTU9SWTsKCX0KCgllcnIgPSBT UEZfcmVjb3JkX2NvbXBpbGVfbWFjcm8oc3AsICpzcGZfcmVzcG9uc2VwLCAm c3BmX21hY3JvLCBleHApOwoJaWYgKGVyciA9PSBTUEZfRV9TVUNDRVNTKSB7 CgkJaWYgKHNwLT5leHBsYW5hdGlvbikKCQkJU1BGX21hY3JvX2ZyZWUoc3At PmV4cGxhbmF0aW9uKTsKCQlzcC0+ZXhwbGFuYXRpb24gPSBzcGZfbWFjcm87 Cgl9CgllbHNlIHsKCQlTUEZfcmVzcG9uc2VfYWRkX2Vycm9yKCpzcGZfcmVz cG9uc2VwLCBlcnIsCgkJCQkiRmFpbGVkIHRvIGNvbXBpbGUgZXhwbGFuYXRp b24gJyVzJyIsIGV4cCk7CgkJaWYgKHNwZl9tYWNybykKCQkJU1BGX21hY3Jv X2ZyZWUoc3BmX21hY3JvKTsKCX0KCglyZXR1cm4gZXJyOwp9CgpTUEZfZXJy Y29kZV90ClNQRl9zZXJ2ZXJfc2V0X2xvY2FscG9saWN5KFNQRl9zZXJ2ZXJf dCAqc3AsIGNvbnN0IGNoYXIgKnBvbGljeSwKCQkJCWludCB1c2VfZGVmYXVs dF93aGl0ZWxpc3QsCgkJCQlTUEZfcmVzcG9uc2VfdCAqKnNwZl9yZXNwb25z ZXApCnsKCVNQRl9yZWNvcmRfdAkqc3BmX3JlY29yZCA9IE5VTEw7CglTUEZf ZXJyY29kZV90CSBlcnI7CgljaGFyCQkJKnJlY29yZDsKCXNpemVfdAkJCSBs ZW47CgoJU1BGX0FTU0VSVF9OT1ROVUxMKHBvbGljeSk7CgoJLyogVGhpcyBp cyBhIGhhY2tpc2ggd2F5IHRvIGdldCB0aGUgZXJyb3JzLiAqLwoJaWYgKCEg KnNwZl9yZXNwb25zZXApIHsKCQkqc3BmX3Jlc3BvbnNlcCA9IFNQRl9yZXNw b25zZV9uZXcoTlVMTCk7CgkJaWYgKCEgKnNwZl9yZXNwb25zZXApCgkJCXJl dHVybiBTUEZfRV9OT19NRU1PUlk7Cgl9CgoJbGVuID0gc2l6ZW9mKFNQRl9W RVJfU1RSKSArIHN0cmxlbihwb2xpY3kpICsgMjA7CglpZiAodXNlX2RlZmF1 bHRfd2hpdGVsaXN0KQoJCWxlbiArPSBzaXplb2YoU1BGX0RFRkFVTFRfV0hJ VEVMSVNUKTsKCXJlY29yZCA9IG1hbGxvYyhsZW4pOwoJaWYgKCEgcmVjb3Jk KQoJCXJldHVybiBTUEZfRV9OT19NRU1PUlk7CglpZiAodXNlX2RlZmF1bHRf d2hpdGVsaXN0KQoJCXNucHJpbnRmKHJlY29yZCwgbGVuLCAiJXMgJXMgJXMi LAoJCQkJCQlTUEZfVkVSX1NUUiwgcG9saWN5LCBTUEZfREVGQVVMVF9XSElU RUxJU1QpOwoJZWxzZQoJCXNucHJpbnRmKHJlY29yZCwgbGVuLCAiJXMgJXMi LCBTUEZfVkVSX1NUUiwgcG9saWN5KTsKCgllcnIgPSBTUEZfcmVjb3JkX2Nv bXBpbGUoc3AsICpzcGZfcmVzcG9uc2VwLCAmc3BmX3JlY29yZCwgcmVjb3Jk KTsKCWlmIChlcnIgPT0gU1BGX0VfU1VDQ0VTUykgewoJCWlmIChzcC0+bG9j YWxfcG9saWN5KQoJCQlTUEZfcmVjb3JkX2ZyZWUoc3AtPmxvY2FsX3BvbGlj eSk7CgkJc3AtPmxvY2FsX3BvbGljeSA9IHNwZl9yZWNvcmQ7Cgl9CgllbHNl IHsKCQlTUEZfcmVzcG9uc2VfYWRkX2Vycm9yKCpzcGZfcmVzcG9uc2VwLCBl cnIsCgkJCQkiRmFpbGVkIHRvIGNvbXBpbGUgbG9jYWwgcG9saWN5ICclcyci LCBwb2xpY3kpOwoJCWlmIChzcGZfcmVjb3JkKQoJCQlTUEZfcmVjb3JkX2Zy ZWUoc3BmX3JlY29yZCk7Cgl9CgoJZnJlZShyZWNvcmQpOwoKCXJldHVybiBl cnI7Cn0KClNQRl9lcnJjb2RlX3QKU1BGX3NlcnZlcl9nZXRfcmVjb3JkKFNQ Rl9zZXJ2ZXJfdCAqc3BmX3NlcnZlciwKCQkJCVNQRl9yZXF1ZXN0X3QgKnNw Zl9yZXF1ZXN0LAoJCQkJU1BGX3Jlc3BvbnNlX3QgKnNwZl9yZXNwb25zZSwK CQkJCVNQRl9yZWNvcmRfdCAqKnNwZl9yZWNvcmRwKQp7CglTUEZfZG5zX3Nl cnZlcl90CQkqcmVzb2x2ZXI7CglTUEZfZG5zX3JyX3QJCQkqcnJfdHh0OwoJ U1BGX2VycmNvZGVfdAkJCSBlcnI7CglTUEZfZG5zX3N0YXRfdAkJCSBoZXJy bm87Cgljb25zdCBjaGFyCQkJCSpkb21haW47Cgluc190eXBlCQkJCQkgcnJf dHlwZTsKCWludAkJCQkJCSBudW1fZm91bmQ7CglpbnQJCQkJCQkgaWR4X2Zv dW5kOwoJaW50CQkJCQkJIGk7CgoKCVNQRl9BU1NFUlRfTk9UTlVMTChzcGZf c2VydmVyKTsKCVNQRl9BU1NFUlRfTk9UTlVMTChzcGZfcmVxdWVzdCk7CglT UEZfQVNTRVJUX05PVE5VTEwoc3BmX3NlcnZlci0+cmVzb2x2ZXIpOwoJU1BG X0FTU0VSVF9OT1ROVUxMKHNwZl9yZWNvcmRwKTsKCglkb21haW4gPSBzcGZf cmVxdWVzdC0+Y3VyX2RvbTsKCVNQRl9BU1NFUlRfTk9UTlVMTChkb21haW4p OwoKCSpzcGZfcmVjb3JkcCA9IE5VTEw7CgoJcmVzb2x2ZXIgPSBzcGZfc2Vy dmVyLT5yZXNvbHZlcjsKCglpZiAocmVzb2x2ZXItPmdldF9zcGYpCgkJcmV0 dXJuIHJlc29sdmVyLT5nZXRfc3BmKHNwZl9zZXJ2ZXIsIHNwZl9yZXF1ZXN0 LAoJCQkJCQlzcGZfcmVzcG9uc2UsIHNwZl9yZWNvcmRwKTsKCgkvKiBJIGFt IFZFUlksIFZFUlkgc29ycnkgYWJvdXQgdGhlIGdvdG9zLiBTaGV2ZWsuICov Ci8vCXJyX3R5cGUgPSBuc190X3NwZjsKCXJyX3R5cGUgPSBuc190X3R4dDsK cmV0cnk6Cglycl90eHQgPSBTUEZfZG5zX2xvb2t1cChyZXNvbHZlciwgZG9t YWluLCBycl90eXBlLCBUUlVFKTsKCglzd2l0Y2ggKHJyX3R4dC0+aGVycm5v KSB7CgkJY2FzZSBIT1NUX05PVF9GT1VORDoKCQkJaWYgKHNwZl9zZXJ2ZXIt PmRlYnVnID4gMCkKCQkJCVNQRl9kZWJ1Z2YoImdldF9yZWNvcmQoJXMpOiBI T1NUX05PVF9GT1VORCIsIGRvbWFpbik7CgkJCVNQRl9kbnNfcnJfZnJlZShy cl90eHQpOwoJCQlpZiAocnJfdHlwZSA9PSBuc190X3NwZikgewoJCQkJcnJf dHlwZSA9IG5zX3RfdHh0OwoJCQkJZ290byByZXRyeTsKCQkJfQoJCQlzcGZf cmVzcG9uc2UtPnJlc3VsdCA9IFNQRl9SRVNVTFRfTk9ORTsKCQkJc3BmX3Jl c3BvbnNlLT5yZWFzb24gPSBTUEZfUkVBU09OX0ZBSUxVUkU7CgkJCXJldHVy biBTUEZfcmVzcG9uc2VfYWRkX2Vycm9yKHNwZl9yZXNwb25zZSwgU1BGX0Vf Tk9UX1NQRiwKCQkJCQkiSG9zdCAnJXMnIG5vdCBmb3VuZC4iLCBkb21haW4p OwoJCQkvLyBicmVhazsKCgkJY2FzZSBOT19EQVRBOgoJCQlpZiAoc3BmX3Nl cnZlci0+ZGVidWcgPiAwKQoJCQkJU1BGX2RlYnVnZigiZ2V0X3JlY29yZCgl cyk6IE5PX0RBVEEiLCBkb21haW4pOwoJCQlTUEZfZG5zX3JyX2ZyZWUocnJf dHh0KTsKCQkJaWYgKHJyX3R5cGUgPT0gbnNfdF9zcGYpIHsKCQkJCXJyX3R5 cGUgPSBuc190X3R4dDsKCQkJCWdvdG8gcmV0cnk7CgkJCX0KCQkJc3BmX3Jl c3BvbnNlLT5yZXN1bHQgPSBTUEZfUkVTVUxUX05PTkU7CgkJCXNwZl9yZXNw b25zZS0+cmVhc29uID0gU1BGX1JFQVNPTl9GQUlMVVJFOwoJCQlyZXR1cm4g U1BGX3Jlc3BvbnNlX2FkZF9lcnJvcihzcGZfcmVzcG9uc2UsIFNQRl9FX05P VF9TUEYsCgkJCQkJIk5vIEROUyBkYXRhIGZvciAnJXMnLiIsIGRvbWFpbik7 CgkJCS8vIGJyZWFrOwoKCQljYXNlIFRSWV9BR0FJTjoKCQkJaWYgKHNwZl9z ZXJ2ZXItPmRlYnVnID4gMCkKCQkJCVNQRl9kZWJ1Z2YoImdldF9yZWNvcmQo JXMpOiBUUllfQUdBSU4iLCBkb21haW4pOwoJCQlTUEZfZG5zX3JyX2ZyZWUo cnJfdHh0KTsKCQkJcmV0dXJuIFNQRl9yZXNwb25zZV9hZGRfZXJyb3Ioc3Bm X3Jlc3BvbnNlLCBTUEZfRV9ETlNfRVJST1IsCgkJCQkJIlRlbXBvcmFyeSBE TlMgZmFpbHVyZSBmb3IgJyVzJy4iLCBkb21haW4pOwoJCQkvLyBicmVhazsK CgkJY2FzZSBOT19SRUNPVkVSWToKCQkJaWYgKHNwZl9zZXJ2ZXItPmRlYnVn ID4gMCkKCQkJCVNQRl9kZWJ1Z2YoImdldF9yZWNvcmQoJXMpOiBOT19SRUNP RVJZIiwgZG9tYWluKTsKCQkJU1BGX2Ruc19ycl9mcmVlKHJyX3R4dCk7CgkJ CXJldHVybiBTUEZfcmVzcG9uc2VfYWRkX2Vycm9yKHNwZl9yZXNwb25zZSwg U1BGX0VfRE5TX0VSUk9SLAoJCQkJCSJVbnJlY292ZXJhYmxlIEROUyBmYWls dXJlIGZvciAnJXMnLiIsIGRvbWFpbik7CgkJCS8vIGJyZWFrOwoKCQljYXNl IE5FVERCX1NVQ0NFU1M6CgkJCWlmIChzcGZfc2VydmVyLT5kZWJ1ZyA+IDAp CgkJCQlTUEZfZGVidWdmKCJnZXRfcmVjb3JkKCVzKTogTkVUREJfU1VDQ0VT UyIsIGRvbWFpbik7CgkJCWJyZWFrOwoKCQlkZWZhdWx0OgoJCQlpZiAoc3Bm X3NlcnZlci0+ZGVidWcgPiAwKQoJCQkJU1BGX2RlYnVnZigiZ2V0X3JlY29y ZCglcyk6IFVOS05PV05fRVJST1IiLCBkb21haW4pOwoJCQloZXJybm8gPSBy cl90eHQtPmhlcnJubzsJLy8gQXZvaWQgdXNlLWFmdGVyLWZyZWUKCQkJU1BG X2Ruc19ycl9mcmVlKHJyX3R4dCk7CgkJCXJldHVybiBTUEZfcmVzcG9uc2Vf YWRkX2Vycm9yKHNwZl9yZXNwb25zZSwgU1BGX0VfRE5TX0VSUk9SLAoJCQkJ CSJVbmtub3duIEROUyBmYWlsdXJlIGZvciAnJXMnOiAlZC4iLAoJCQkJCWRv bWFpbiwgaGVycm5vKTsKCQkJLy8gYnJlYWs7Cgl9CgoJaWYgKHJyX3R4dC0+ bnVtX3JyID09IDApIHsKCQlTUEZfZG5zX3JyX2ZyZWUocnJfdHh0KTsKCQlp ZiAocnJfdHlwZSA9PSBuc190X3NwZikgewoJCQlycl90eXBlID0gbnNfdF90 eHQ7CgkJCWdvdG8gcmV0cnk7CgkJfQoJCXJldHVybiBTUEZfcmVzcG9uc2Vf YWRkX2Vycm9yKHNwZl9yZXNwb25zZSwgU1BGX0VfTk9UX1NQRiwKCQkJCSJO byBUWFQgcmVjb3JkcyByZXR1cm5lZCBmcm9tIEROUyBsb29rdXAgZm9yICcl cyciLAoJCQkJZG9tYWluKTsKCX0KCgkvKiBBY3R1YWxseSwgdGhpcyBjb3Vs ZCBuZXZlciBiZSB1c2VkIHVuaW5pdGlhbGlzZWQgYW55d2F5LiAqLwoJaWR4 X2ZvdW5kID0gMDsKCgkvKiBjaGVjayBmb3IgbXVsdGlwbGUgU1BGIHJlY29y ZHMgKi8KCW51bV9mb3VuZCA9IDA7Cglmb3IgKGkgPSAwOyBpIDwgcnJfdHh0 LT5udW1fcnI7IGkrKykgewoJCS8qCgkJaWYgKHNwZl9zZXJ2ZXItPmRlYnVn ID4gMSkKCQkJU1BGX2RlYnVnZigiQ29tcGFyaW5nICclcycgd2l0aCAnJXMn IiwKCQkJCQlTUEZfVkVSX1NUUiAiICIsIHJyX3R4dC0+cnJbaV0tPnR4dCk7 CgkJKi8KCQlpZiAoc3RybmNhc2VjbXAocnJfdHh0LT5ycltpXS0+dHh0LAoJ CQkJCSAgU1BGX1ZFUl9TVFIsIHNpemVvZihTUEZfVkVSX1NUUikgLSAxKSA9 PSAwKSB7CgkJCWNoYXIJZSA9IHJyX3R4dC0+cnJbaV0tPnR4dFtzaXplb2Yo U1BGX1ZFUl9TVFIpIC0gMV07CgkJCWlmIChlID09ICcgJyB8fCBlID09ICdc MCcpIHsKCQkJCWlmIChzcGZfc2VydmVyLT5kZWJ1ZyA+IDApCgkJCQkJU1BG X2RlYnVnZigiZm91bmQgU1BGIHJlY29yZDogJXMiLCBycl90eHQtPnJyW2ld LT50eHQpOwoJCQkJbnVtX2ZvdW5kKys7CgkJCQlpZHhfZm91bmQgPSBpOwoJ CQl9CgkJfQoJfQoKCWlmIChudW1fZm91bmQgPT0gMCkgewoJCVNQRl9kbnNf cnJfZnJlZShycl90eHQpOwoJCWlmIChycl90eXBlID09IG5zX3Rfc3BmKSB7 CgkJCXJyX3R5cGUgPSBuc190X3R4dDsKCQkJZ290byByZXRyeTsKCQl9CgkJ c3BmX3Jlc3BvbnNlLT5yZXN1bHQgPSBTUEZfUkVTVUxUX05PTkU7CgkJc3Bm X3Jlc3BvbnNlLT5yZWFzb24gPSBTUEZfUkVBU09OX0ZBSUxVUkU7CgkJcmV0 dXJuIFNQRl9yZXNwb25zZV9hZGRfZXJyb3Ioc3BmX3Jlc3BvbnNlLCBTUEZf RV9OT1RfU1BGLAoJCQkJIk5vIFNQRiByZWNvcmRzIGZvciAnJXMnIiwgZG9t YWluKTsKCX0KCWlmIChudW1fZm91bmQgPiAxKSB7CgkJU1BGX2Ruc19ycl9m cmVlKHJyX3R4dCk7CgkJLy8gcmZjNDQwOCByZXF1aXJlcyBwZXJtZXJyb3Ig aGVyZS4KCQkvKiBYWFggVGhpcyBjb3VsZCBiZSByZWZhY3RvcmVkIHdpdGgg U1BGX2lfZG9uZS4gKi8KCQlzcGZfcmVzcG9uc2UtPnJlc3VsdCA9IFNQRl9S RVNVTFRfUEVSTUVSUk9SOwoJCXNwZl9yZXNwb25zZS0+cmVhc29uID0gU1BG X1JFQVNPTl9GQUlMVVJFOwoJCXJldHVybiBTUEZfcmVzcG9uc2VfYWRkX2Vy cm9yKHNwZl9yZXNwb25zZSwgU1BGX0VfTVVMVElQTEVfUkVDT1JEUywKCQkJ CSJNdWx0aXBsZSBTUEYgcmVjb3JkcyBmb3IgJyVzJyIsIGRvbWFpbik7Cgl9 CgoJLyogdHJ5IHRvIGNvbXBpbGUgdGhlIFNQRiByZWNvcmQgKi8KCWVyciA9 IFNQRl9yZWNvcmRfY29tcGlsZShzcGZfc2VydmVyLAoJCQkJCXNwZl9yZXNw b25zZSwgc3BmX3JlY29yZHAsCgkJCQkJcnJfdHh0LT5ycltpZHhfZm91bmRd LT50eHQgKTsKCVNQRl9kbnNfcnJfZnJlZShycl90eHQpOwoKCS8qIEZJWE1F OiBzdXBwb3J0IG11bHRpcGxlIHZlcnNpb25zICovCglpZiAoZXJyICE9IFNQ Rl9FX1NVQ0NFU1MpCgkJcmV0dXJuIFNQRl9yZXNwb25zZV9hZGRfZXJyb3Io c3BmX3Jlc3BvbnNlLCBTUEZfRV9OT1RfU1BGLAoJCQkJIkZhaWxlZCB0byBj b21waWxlIFNQRiByZWNvcmQgZm9yICclcyciLCBkb21haW4pOwoKCXJldHVy biBTUEZfRV9TVUNDRVNTOwp9CgovKioKICogVmFyaW91cyBhY2Nlc3NvcnMu CiAqCiAqIFRoZSB1c2VyIGlzIHBlcm1pdHRlZCB0byBvdmVycmlkZSB0aGUg bWF4aW11bXMuCiAqLwojZGVmaW5lIFNQRl9BQ0NFU1NfSU5UKGYpIFwKCVNQ Rl9lcnJjb2RlX3QgU1BGX3NlcnZlcl9zZXRfICMjIGYoU1BGX3NlcnZlcl90 ICpzLCBpbnQgbikgeyBcCgkJcy0+ZiA9IG47IHJldHVybiBTUEZfRV9TVUND RVNTOyBcCgl9IFwKCWludCBTUEZfc2VydmVyX2dldF8gIyMgZihTUEZfc2Vy dmVyX3QgKnMpIHsgXAoJCXJldHVybiBzLT5mOyBcCgl9CgovKioKICogVGhl IHJldHVybiB2YWx1ZXMgZnJvbSB0aGVzZSBnZXR0ZXIgZnVuY3Rpb25zIGFy ZSB1c2VkIHdpdGhvdXQKICogbW9kaWZpY2F0aW9uLiBJZiB5b3Ugc2V0IGEg dmFsdWUgaGlnaGVyIHRoYW4gdGhlIHNwZWNpZmllZAogKiBtYXhpbXVtLCBp dCB3aWxsIGJlIHVzZWQuIEJld2FyZS4KICovClNQRl9BQ0NFU1NfSU5UKG1h eF9kbnNfbWVjaCk7ClNQRl9BQ0NFU1NfSU5UKG1heF9kbnNfcHRyKTsKU1BG X0FDQ0VTU19JTlQobWF4X2Ruc19teCk7CgoKLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpTZW5kZXIgUG9saWN5IEZyYW1l d29yazogaHR0cDovL3d3dy5vcGVuc3BmLm9yZwpNb2RpZnkgWW91ciBTdWJz Y3JpcHRpb246IGh0dHA6Ly93d3cubGlzdGJveC5jb20vbWVtYmVyLwpBcmNo aXZlczogaHR0cHM6Ly93d3cubGlzdGJveC5jb20vbWVtYmVyL2FyY2hpdmUv MTAwNy89bm93ClJTUyBGZWVkOiBodHRwczovL3d3dy5saXN0Ym94LmNvbS9t ZW1iZXIvYXJjaGl2ZS9yc3MvMTAwNy8KUG93ZXJlZCBieSBMaXN0Ym94OiBo dHRwOi8vd3d3Lmxpc3Rib3guY29tCg== --0-180500900-1239940004=:23047--