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]&gt;<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 &lt;[email protected]&gt;<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>&gt; Hi Shevek,<br>&gt; <br>&gt; I have spent a bit of effort to =
make libspf2 1.2.9 to be compilable on<br>&gt; Windows with Visual Studio 2=
005. However, while testing I figured out<br>&gt; that (libspf2-1.2.9\src\l=
ibspf2\spf_server.c : 350) had the statement<br>&gt; which made SPF_dns_loo=
kup fail with DNSTIMEOUT rather that the return<br>&gt; codes being checked=
 for.<br>&gt; <br>&gt; But when I modified the code to (rr_type =3D ns_t_tx=
t), it started<br>&gt; working okay. I would like to confirm that, is there=
 something missing<br>&gt; from the original code or my change is okay.<br>=
&gt; <br>&gt; Another important thing I like to know is that once I am done=
 with my<br>&gt; porting effort, I would like to submit my code. Can you pl=
ease guide<br>&gt; how and what the procedure is and How I can get my sourc=
e code<br>&gt; 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--