Snort mailing list archives

Snort-users digest, Vol 1 #795 - 7 msgs


From: snort-users () lists sourceforge net
Date: Tue, 10 Jul 2001 13:20:09 +0200

Send Snort-users mailing list submissions to
        snort-users () lists sourceforge net

To subscribe or unsubscribe via the World Wide Web, visit
        http://lists.sourceforge.net/lists/listinfo/snort-users
or, via email, send a message with subject or body 'help' to
        snort-users-request () lists sourceforge net

You can reach the person managing the list at
        snort-users-admin () lists sourceforge net

When replying, please edit your Subject line so it is more specific
than "Re: Contents of Snort-users digest..."


Today's Topics:

   1. Re: error message with snort (Erek Adams)
   2. Re: error message with snort (Ramin Alidousti)
   3. Re: Snort FAQ 1.8 (Ramin Alidousti)
   4. Re: Snort FAQ 1.8 (Blake Frantz)
   5. Re: Re: Snort-users digest, Vol 1 #791 - 5 msgs (Dan Hollis)
   6. Re: Snort FAQ 1.8 (Ramin Alidousti)
   7. spp_defrag.c v1.5.1 (Dragos Ruiu)

--__--__--

Message: 1
Date: Tue, 10 Jul 2001 12:34:33 -0700 (PDT)
From: Erek Adams <erek () theadamsfamily net>
To: Darrin Powell <dpowell () lssi net>
cc: snort-users <snort-users () lists sourceforge net>
Subject: Re: [Snort-users] error message with snort

On Tue, 10 Jul 2001, Darrin Powell wrote:


 I tried to run snort and get this error message

ERROR /etc/snort/snort.conf (8) => Rule IP addr ("2xx.xx.xxx.xxx") didn't
x-late, WTF?

:)  Easy fix.

  Any help would be greatly appreciated..

Remove the quotes and all will be well.

-----
Erek Adams
Nifty-Type-Guy
TheAdamsFamily.Net



--__--__--

Message: 2
Date: Tue, 10 Jul 2001 15:45:34 -0400
From: Ramin Alidousti <ramin () cannon eng us uu net>
To: Darrin Powell <dpowell () lssi net>
Cc: snort-users <snort-users () lists sourceforge net>
Subject: Re: [Snort-users] error message with snort

Take a look at 4.2 of the FAQ or get rid of the quotes around
the IP address.

Ramin

On Tue, Jul 10, 2001 at 03:16:25PM -0400, Darrin Powell wrote:


 I tried to run snort and get this error message

ERROR /etc/snort/snort.conf (8) => Rule IP addr ("2xx.xx.xxx.xxx") didn't 
x-late, WTF?


  Any help would be greatly appreciated..


Thanks in advance
Darrin

_______________________________________________
Snort-users mailing list
Snort-users () lists sourceforge net
Go to this URL to change user options or unsubscribe:
http://lists.sourceforge.net/lists/listinfo/snort-users
Snort-users list archive:
http://www.geocrawler.com/redir-sf.php3?list=snort-users


--__--__--

Message: 3
Date: Tue, 10 Jul 2001 15:49:58 -0400
From: Ramin Alidousti <ramin () cannon eng us uu net>
To: Dragos Ruiu <dr () kyx net>
Cc: roesch () sourcefire com, snort-users () lists sourceforge net,
   Denis.Ducamp () hsc fr
Subject: Re: [Snort-users] Snort FAQ 1.8

The answer of 4.8 suggests that the ICMP carries the first
64 _bytes_ of the original datagram. I believe that it should
be "the first 64 data _bits_" :-)

Ramin

On Mon, Jul 09, 2001 at 10:30:15PM -0700, Dragos Ruiu wrote:

Send me your complaints. :-)
Or translations...

cheers,
--dr



--__--__--

Message: 4
Date: Tue, 10 Jul 2001 15:04:07 -0500 (CDT)
From: Blake Frantz <blake () mc net>
To: Ramin Alidousti <ramin () cannon eng us uu net>
cc: Dragos Ruiu <dr () kyx net>, roesch () sourcefire com, 
    snort-users () lists sourceforge net, Denis.Ducamp () hsc fr
Subject: Re: [Snort-users] Snort FAQ 1.8


The ICMP packet returns the original Internet header *AND* the first 64
bits data bits.

-Blake


================================================================= 
The Government, like diapers, should be replaced regularly, and
often for the same reasons. 

On Tue, 10 Jul 2001, Ramin Alidousti wrote:

The answer of 4.8 suggests that the ICMP carries the first
64 _bytes_ of the original datagram. I believe that it should
be "the first 64 data _bits_" :-)

Ramin

On Mon, Jul 09, 2001 at 10:30:15PM -0700, Dragos Ruiu wrote:

Send me your complaints. :-)
Or translations...

cheers,
--dr


_______________________________________________
Snort-users mailing list
Snort-users () lists sourceforge net
Go to this URL to change user options or unsubscribe:
http://lists.sourceforge.net/lists/listinfo/snort-users
Snort-users list archive:
http://www.geocrawler.com/redir-sf.php3?list=snort-users




--__--__--

Message: 5
Date: Tue, 10 Jul 2001 13:09:20 -0700 (PDT)
From: Dan Hollis <goemon () anime net>
To: <snort-users () lists sourceforge net>
Subject: Re: [Snort-users] Re: Snort-users digest, Vol 1 #791 - 5 msgs

On Tue, 10 Jul 2001, ORA wrote:
ke stop wasting my time. your information is garbage you POOFPOOFPOOFPOOFare
a selfrighteous idiot and your messages are a joke!!!!FAKE ASS COMPUTER
PROGRAMER

Yet another script kiddie who got caught by snort.
Gotta love it.

-Dan



--__--__--

Message: 6
Date: Tue, 10 Jul 2001 16:11:39 -0400
From: Ramin Alidousti <ramin () cannon eng us uu net>
To: Blake Frantz <blake () mc net>
Cc: Ramin Alidousti <ramin () cannon eng us uu net>, Dragos Ruiu <dr () kyx net>,
   roesch () sourcefire com, snort-users () lists sourceforge net,
   Denis.Ducamp () hsc fr
Subject: Re: [Snort-users] Snort FAQ 1.8

Yes, Blake, my point was the typo byte/bit :-)
The original IP header (20 bytes [without additional options, of course])
and the first 64 data bits (8 bytes) is 28 bytes and not 64 bytes :-)

Ramin


On Tue, Jul 10, 2001 at 03:04:07PM -0500, Blake Frantz wrote:


The ICMP packet returns the original Internet header *AND* the first 64
bits data bits.

-Blake


================================================================= 
The Government, like diapers, should be replaced regularly, and
often for the same reasons. 

On Tue, 10 Jul 2001, Ramin Alidousti wrote:

The answer of 4.8 suggests that the ICMP carries the first
64 _bytes_ of the original datagram. I believe that it should
be "the first 64 data _bits_" :-)

Ramin

On Mon, Jul 09, 2001 at 10:30:15PM -0700, Dragos Ruiu wrote:

Send me your complaints. :-)
Or translations...

cheers,
--dr


_______________________________________________
Snort-users mailing list
Snort-users () lists sourceforge net
Go to this URL to change user options or unsubscribe:
http://lists.sourceforge.net/lists/listinfo/snort-users
Snort-users list archive:
http://www.geocrawler.com/redir-sf.php3?list=snort-users



--__--__--

Message: 7
From: Dragos Ruiu <dr () kyx net>
Organization: kyx.net
To: snort-users () lists sourceforge net
Date: Tue, 10 Jul 2001 12:43:44 -0700
Subject: [Snort-users] spp_defrag.c v1.5.1


--Boundary-=_OjIhCLMluHEhavsxyvYVCTMdWHUF
Content-Type: text/plain
Content-Transfer-Encoding: 8bit

Major problem resolved... fragment timeouts had some timewarps. 
Also all related fragments also flushed during trash sweep now.

Unless someone can blow this one up too I'm off to work on
spp_defrag.c version 2.0 with some nifty new features as well as
even more efficiency and another project of mine.... the Onyx 
polymorphic mutating shellcode defender.  The other IDS  
vendors are going to have fun with that one... snicker... :-) 
(reference: ADMmutate-0.8.1, re: defcon Saturday, 
oh wait, oops, that's in the future still.... those damn  
time-warps!  :-)

cheers,
--dr

(instructions... replace spp_defrag.c, rebuild, and enable
preprocessor defrag in snort.conf)

--
kyx.net - we're from the future
--Boundary-=_OjIhCLMluHEhavsxyvYVCTMdWHUF
Content-Type: text/english;
  name="spp_defrag.c"
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename="spp_defrag.c"

LyoKKiogQ29weXJpZ2h0IChDKSAxOTk4LDE5OTksMjAwMCwyMDAxIE1hcnRpbiBSb2VzY2ggPHJv
ZXNjaEBjbGFyay5uZXQ+CioqIENvcHlyaWdodCAoQykgMjAwMCwyMDAxIERyYWdvcyBSdWl1IDxk
ckBreXgubmV0PgoqKgoqKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiBy
ZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQoqKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhl
IEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQoqKiB0aGUgRnJlZSBT
b2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgoq
KiAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgoqKgoqKiBUaGlzIHByb2dyYW0g
aXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKiogYnV0
IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkg
b2YKKiogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NF
LiAgU2VlIHRoZQoqKiBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxz
LgoqKgoqKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJh
bCBQdWJsaWMgTGljZW5zZQoqKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0
ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQoqKiBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxh
Y2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLgoqLwovKgogKiBzcHBf
ZGVmcmFnIHYxLjUuMSAtIDEwIEp1bHkgMjAwMQogKiAKICogUHVycG9zZTogSVAgZGVmcmFnbWVu
dGF0aW9uIHByZXByb2Nlc3NvcgogKiBBdXRob3I6ICBEcmFnb3MgUnVpdSAoZHJAZHVyc2VjLmNv
bS9kckB2LXdhdmUuY29tKQogKgogKiBub3RlczoKICogICAgICAgICAgICBUaGlzIGRlZnJhZ2dl
ciBpbXBsZW1lbnRhdGlvbiBkaWZmZXJzIGZyb20gdGhlIHVzdWFsCiAqICAgICAgICAgICAgaGFz
aCB0YWJsZSBhbmQgbGlua2VkIGxpc3QgdGVjaG5pcXVlIGluIHRoYXQgaXQgdXNlcwogKiAgICAg
ICAgICAgIHNlbGYgY2FjaGluZyBzcGxheSB0cmVlcy4gTXkgaHlwb3RoZXNpcyBpcyB0aGF0IHRo
aXMKICogICAgICAgICAgICBwcm92aWRlcyBzdWJzdGFudGlhbCBwZXJmb3JtYW5jZSBpbXByb3Zl
bWVudHMuICBJCiAqICAgICAgICAgICAgaG9wZSB0aGlzIG1vZHVsZSB3aWxsIGJlIGFibGUgdG8g
ZGVtb25zdHJhdGUgb3IgZGVidW5rCiAqICAgICAgICAgICAgdGhpcyBoeXBvdGhlc2lzLiAKICog
CiAqIFNwbGF5IFRyZWU6CiAqIGBBIHNlbGYtb3JnYW5pemluZyBkYXRhIHN0cnVjdHVyZSB3aGlj
aCB1c2VzIHJvdGF0aW9ucyB0byBtb3ZlIGFuCiAqICBhY2Nlc3NlZCBrZXkgdG8gdGhlIHJvb3Qu
IFRoaXMgbGVhdmVzIHJlY2VudGx5IGFjY2Vzc2VkIG5vZGVzIG5lYXIKICogIHRoZSB0b3Agb2Yg
dGhlIHRyZWUsIG1ha2luZyB0aGVtIHZlcnkgcXVpY2tseSBzZWFyY2hhYmxlIChTa2llbmEgMTk5
NywgcC4gMTc3KS4gCiAqIAogKiBBbGwgc3BsYXkgdHJlZSBvcGVyYXRpb25zIHJ1biBpbiBPKGxv
ZyBuKSB0aW1lIF9vbl9hdmVyYWdlXywgd2hlcmUgbiBpcyB0aGUKICogbnVtYmVyIG9mIGl0ZW1z
IGluIHRoZSB0cmVlLCBhc3N1bWluZyB5b3Ugc3RhcnQgd2l0aCBhbiBlbXB0eSB0cmVlLiAgQW55
IHNpbmdsZQogKiBvcGVyYXRpb24gY2FuIHRha2UgVGhldGEobikgdGltZSBpbiB0aGUgd29yc3Qt
Y2FzZSwgYnV0IG9wZXJhdGlvbnMgc2xvd2VyIHRoYW4KICogTyhsb2cgbikgdGltZSBoYXBwZW4g
cmFyZWx5IGVub3VnaCB0aGF0IHRoZXkgZG9uJ3QgYWZmZWN0IHRoZSBhdmVyYWdlLgogKiAKICog
QWx0aG91Z2ggMi0zLTQgdHJlZXMgbWFrZSBhIHN0cm9uZ2VyIGd1YXJhbnRlZSAoX2V2ZXJ5XyBv
cGVyYXRpb24gb24gYSAyLTMtNAogKiB0cmVlIHRha2VzIE8obG9nIG4pIHRpbWUpLCBzcGxheSB0
cmVlcyBoYXZlIHNldmVyYWwgYWR2YW50YWdlcy4gIFNwbGF5IHRyZWVzCiAqIGFyZSBzaW1wbGVy
IGFuZCBlYXNpZXIgdG8gcHJvZ3JhbSwgYW5kIHRoZXkgY2FuIHRha2UgYWR2YW50YWdlIG9mIGNp
cmN1bXN0YW5jZXMKICogaW4gd2hpY2ggbG90cyBvZiBmaW5kIG9wZXJhdGlvbnMgb2NjdXIgb24g
YSBzbWFsbCBudW1iZXIgb2YgaXRlbXMuICBCZWNhdXNlIG9mCiAqIHRoZWlyIHNpbXBsaWNpdHks
IHNwbGF5IHRyZWUgaW5zZXJ0aW9ucyBhbmQgZGVsZXRpb25zIGFyZSB0eXBpY2FsbHkgZmFzdGVy
IGluCiAqIHByYWN0aWNlIChzb21ldGltZXMgYnkgYSBjb25zdGFudCBmYWN0b3IsIHNvbWV0aW1l
cyBhc3ltcHRvdGljYWxseSkuICBGaW5kCiAqIG9wZXJhdGlvbnMgY2FuIGJlIGZhc3RlciBvciBz
bG93ZXIsIGRlcGVuZGluZyBvbiBjaXJjdW1zdGFuY2VzLiAgU3BsYXkgdHJlZXMKICogcmVhbGx5
IGV4Y2VsIGluIGFwcGxpY2F0aW9ucyB3aGVyZSBhIGZyYWN0aW9uIG9mIHRoZSBpdGVtcyBhcmUg
dGhlIHRhcmdldHMgb2YKICogbW9zdCBvZiB0aGUgZmluZCBvcGVyYXRpb25zLCBiZWNhdXNlIHRo
ZXkncmUgZGVzaWduZWQgdG8gZ2l2ZSBlc3BlY2lhbGx5IGZhc3QKICogYWNjZXNzIHRvIGl0ZW1z
IHRoYXQgaGF2ZSBiZWVuIGFjY2Vzc2VkIHJlY2VudGx5LgogKgogKiBhIGdvb2QgcmVmZXJlbmNl
IG9uIHNwbGF5IHRyZWVzIGlzOgogKiBodHRwOi8vd3d3LmNzLnVtYmMuZWR1L2NvdXJzZXMvdW5k
ZXJncmFkdWF0ZS8zNDEvZmFsbDk4L2ZyZXkvQ2xhc3NOb3Rlcy9DbGFzczE3L3NwbGF5Lmh0bWwK
ICogCiAqIFJlZmVyZW5jZXMgCiAqIFNraWVuYSwgUy4gUy4gVGhlIEFsZ29yaXRobSBEZXNpZ24g
TWFudWFsLiBOZXcgWW9yazogU3ByaW5nZXItVmVybGFnLCBwcC4gMTc3IGFuZCAxNzksIDE5OTcu
IAogKiBTbGVhdG9yLCBELiBhbmQgVGFyamFuLCBSLiAiU2VsZi1BZGp1c3RpbmcgQmluYXJ5IFNl
YXJjaCBUcmVlcy4iIEouIEFDTSAzMiwgNjUyLTY4NiwgMTk4NS4gCiAqIFRhcmphbiwgUi4gRGF0
YSBTdHJ1Y3R1cmVzIGFuZCBOZXR3b3JrIEFsZ29yaXRobXMuIFBoaWxhZGVscGhpYSwgUEE6IFNJ
QU0gUHJlc3MsIDE5ODMuIAogKiBXb29kLCBELiBEYXRhIFN0cnVjdHVyZXMsIEFsZ29yaXRobXMs
IGFuZCBQZXJmb3JtYW5jZS4gUmVhZGluZywgTUE6IEFkZGlzb24tV2VzbGV5LCAxOTkzLiAKICog
CiAqLwoKLyogQ2hhbmdlbG9nLi4uLgoqICAxNi8wNi8wMSB2MS4xIC0tZHIKKiAgICAgICAgICBG
aXhlZCByZWFzc2VtYmxlZGdyYW0gaXAgbGVuZ3RoIHRvIGluY2x1ZGUgSVAgaGVhZGVyCioJICAg
KFRoYW5rcyBBYXJvbiBSaWNoYXJkIFdhbHRlcnMgPGF3YWx0ZXJzQG5kLmVkdT4gZm9yIHRyYWNr
aW5nIHRoaXMgZG93bikKKgkgICBSZWRpZCB0aW1lb3V0IGZsdXNoaW5nIGFuZCBnYXJiYWdlIHN3
ZWVwaW5nLgoqCSAgIE5ldyBhbGdvcml0aG0gdXNlcyBwcm9ncnNzaXZlbHkgbW9yZSBhZ2dyZXNz
aXZlIHRpbWVvdXRzCiogICAgICAgICAgYXMgbWVtIHV0aWxpemF0aW9uIGFwcHJvYWNoZXMgfjMy
TWIgaGFyZCBsaW1pdC4KKgkgICBBbHNvIGZsdXNoZXMgcmVsYXRlZCBmcmFnbWVudHMgdG9nZXRo
ZXIuCiogIDE3LzA2LzAxIHYxLjIgLS1kcgoqCSAgIFBzZXVkb3JhbmRvbSBzcGxheSB0cmVlIGJh
bGFuY2luZyBhZGRlZC4KKiAgMjgvMDYvMDEgdjEuMyAtLWRyCioJICAgTWVtb3J5IGhhcmQgbGlt
aXQgYWRkZWQKKiAgMjgvMDYvMDEgdjEuNCAtLWRyCioJICAgQ29ybmVyIGNhc2UgbWVtb3J5IGxl
YWsgZml4ZWQuCiogIDI5LzA2LzAxIHYxLjRjIC0tZHIKKgkgICBtb3JlIGFnZ3Jlc3NpdmUgb3V0
IG9mIG1lbW9yeSBjbGVhbnVwCiogIDA5LzA2LzAxIHYxLjUgLS1kcgoqCSAgIG1vcmUgbWVtb3J5
IGxlYWtzIGZpeGVkCiogIDEwLzA2LzAxIHYxLjUuMSAtLWRyCioJICAgdGltZXdhcnBzIGZpeGVk
LCBhbGwgcmVsYXRlZCBmcmFnbWVudHMgYWxzbyBmbHVzaGVkIGR1cmluZyBnYXJiYWdlIGNvbGxl
Y3Rpb24KKi8KCiNpbmNsdWRlIDxwY2FwLmg+CiNpbmNsdWRlICJkZWNvZGUuaCIKCi8qIFdhcm5p
bmcgdGhlc2UgYXJlIG9ubHkgdmFsaWQgZm9yIElQdjQKICAgYWxzbyBub3RlIHRoYXQgdGhlc2Ug
YXJlIHN0aWxsIAogICBpbiByYXcgbmV0d29yayBvcmRlciAoc2VlIGh0b25zKSAgCiAgIGFuZCB0
aGVzZSBtYXkgZmFpbCBvbiA2NCBiaXQgbWFjaGluZXMgCiovCiNkZWZpbmUgSUQoeCkgICAgICAg
KigodV9pbnQxNl90ICopKCh1X2ludDhfdCAqKXgtPmlwaCs0KSkKI2RlZmluZSBQUk9UTyh4KSAg
ICAqKCh1X2ludDhfdCAqKXgtPmlwaCs5KQojZGVmaW5lIFNBRERSKHgpICAgICggeC0+aXBoLT5p
cF9zcmMuc19hZGRyICkKI2RlZmluZSBEQUREUih4KSAgICAoIHgtPmlwaC0+aXBfZHN0LnNfYWRk
ciApCiNkZWZpbmUgREFUQSh4KSAgICAgKCh1X2ludDhfdCAqKXgtPmlwaCsyMCkKI2RlZmluZSBG
T0ZGKHgpICAgICAodV9pbnQzMl90KSgoeC0+ZnJhZ19vZmZzZXQpPDwzKQojZGVmaW5lIERGKHgp
ICAgICAgICh4LT5kZikKI2RlZmluZSBNRih4KSAgICAgICAoeC0+bWYpCgoKLyogZnJhZ21lbnQg
SUQgc3RydWN0dXJlICAqLwp0eXBlZGVmIFBhY2tldCAqZnJhZzsKCnR5cGVkZWYgc3RydWN0IHRy
ZWVfbm9kZSBUcmVlOwpzdHJ1Y3QgdHJlZV9ub2RlCnsKICAgIFRyZWUgKiBsZWZ0LCAqIHJpZ2h0
OwogICAgZnJhZyBrZXk7Cn07CgpUcmVlICpmcm9vdDsKCgovKiBHYXJiYWdlIGNvbGxlY3Rpb24g
c3RhY2sgKGxpbmtlZCBsaXN0KSAqLwoKdHlwZWRlZiBzdHJ1Y3QgbGlzdF9ub2RlIExpc3Q7CnN0
cnVjdCBsaXN0X25vZGUKewoJTGlzdCAqIG5leHQ7CglmcmFnIGtleTsKfTsKCkxpc3QgKmdhcmJh
Z2VsaXN0OwpjaGFyIHRyYXNoZWplY3RzcGlubG9jazsKCQoKLyogIFRoZXNlIG5leHQgZGVjbGFy
YXRpb25zIGFyZSBmb3IgdGhlIGZyYWdtZW50IHRpbWVvdXQgYW5kIAogICAgYW5kIGNsZWFudXAv
c3dlZXBpbmcgcHJvY2Vzcy4uLiB0aW1lIG1hdGggcm91dGluZXMgYXJlIGZyb20KICAgIGFuIG9i
c2N1cmUgcGllY2Ugb2Ygb2xkIGNvZGUgZm9yIGEgZGVmdW5jdCB2aWRlbyBjYW1lcmEgcHJvZHVj
dAoqLwoKI2RlZmluZSBGUkFHVElNRU9VVFNFQyAgICAgIDEwICAgICAgLyogMTAgc2Vjb25kcyBs
ZXQncyBwbGF5IHNhZmUgZm9yIG5vdyAqLwojZGVmaW5lIEZSQUdUSU1FT1VUVVNFQyAgICAgIDAg
ICAgICAvKiAwIG1pY3JvIHNlY29uZHMgICAgICAgICAgICAgICAgICAqLwojZGVmaW5lIE1FTUhB
UkRMSU0gICAgIAkgIDMyMDAwMDAwICAvKiBtZW1vcnkgaGFyZGxpbWl0IHRocmVzaG9sZCAqLwoK
aW50IGZyYWdtZW11c2U7Ci8qIHRoZSBwYWNrZXQgdGltZW91dCAvIGdhcmJhZ2UgY29sbGVjdGlv
biBzdHVmZiAgKi8KCmludCBzcGFjZWFsZXJ0OyAgLyogdXNlciBhbHJlYWR5IGFsZXJ0ZWQgYWJv
dXQgY29uZGl0aW9uICovCgp0eXBlZGVmIHN0cnVjdCBfdGltZXN0cnVjdAp7CiAgICB1X2ludDMy
X3QgdHZfc2VjOwogICAgdV9pbnQzMl90IHR2X3VzZWM7Cn0gdGltZV9zdHJ1Y3Q7Cgp0aW1lX3N0
cnVjdCBmcmFndGltZW91dDsKdGltZV9zdHJ1Y3QgbGFzdF9mcmFnX3RpbWU7CnRpbWVfc3RydWN0
IHRpbWVjaGVjazsKCgoKLyoqKioqKlRpbWVzdGFtcCBSb3V0aW5lcyoqKioqKi8KCiNkZWZpbmUg
VElNRV9MVCh4LHkpICh4IHR2X3NlYzx5IHR2X3NlY3x8KHggdHZfc2VjPT15IHR2X3NlYyYmeCB0
dl91c2VjPHkgdHZfdXNlYykpCgppbmxpbmUgdm9pZCBhZGR0aW1lKHRpbWVfc3RydWN0ICpvcDEs
IHRpbWVfc3RydWN0ICpvcDIsIHRpbWVfc3RydWN0ICpyZXN1bHQpCnsKICAgIHJlc3VsdC0+dHZf
dXNlYyA9IG9wMS0+dHZfdXNlYytvcDItPnR2X3VzZWM7CiAgICBpZihyZXN1bHQtPnR2X3VzZWMg
PiA5OTk5OTkpCiAgICB7CiAgICAgICAgcmVzdWx0LT50dl91c2VjIC09IDEwMDAwMDA7CiAgICAg
ICAgb3AxLT50dl9zZWMrKzsKICAgIH0KICAgIHJlc3VsdC0+dHZfc2VjID0gb3AxLT50dl9zZWMr
b3AyLT50dl9zZWM7Cn0KCgppbmxpbmUgaW50IHN1YnRpbWUodGltZV9zdHJ1Y3QgKiBvcDEsIHRp
bWVfc3RydWN0ICogb3AyLCB0aW1lX3N0cnVjdCAqIHJlc3VsdCkKewogICAgaW50IGJvcnJvdz0w
OwogICAgaW50IHNpZ249MDsKICAgIHRpbWVfc3RydWN0ICogdGVtcF90aW1lOwoKICAgIGlmIChU
SU1FX0xUKG9wMS0+LCBvcDItPikpCiAgICB7CiAgICAgICAgc2lnbiA9IDE7CiAgICAgICAgdGVt
cF90aW1lID0gb3AxOwogICAgICAgIG9wMSA9IG9wMjsKICAgICAgICBvcDIgPSB0ZW1wX3RpbWU7
CiAgICAgfQogICAgIGlmIChvcDEtPnR2X3VzZWMgPj0gb3AyLT50dl91c2VjKQogICAgIHsKICAg
ICAgICByZXN1bHQtPnR2X3VzZWMgPSBvcDEtPnR2X3VzZWMtb3AyLT50dl91c2VjOwogICAgIH0K
ICAgICBlbHNlIHsKICAgICAgICByZXN1bHQtPnR2X3VzZWMgPSAob3AxLT50dl91c2VjKzEwMDAw
MDApLW9wMi0+dHZfdXNlYzsKICAgICAgICBib3Jyb3cgPSAxOwogICAgIH0KICAgICByZXN1bHQt
PnR2X3NlYyA9IChvcDEtPnR2X3NlYy1vcDItPnR2X3NlYyktYm9ycm93OwoKICAgICByZXR1cm4g
c2lnbjsKfQoKCi8qKioqKioqKipNZW1vcnkgbWFuZ2VtZW50KioqKioqKioqKi8Kdm9pZCAqRGVm
cmFnQWxsb2ModW5zaWduZWQgbG9uZyBzaXplKQp7CiAgICB2b2lkICp0bXA7CgogICAgZnJhZ21l
bXVzZSArPSBzaXplOwoKICAgIHRtcCA9ICh2b2lkICopIGNhbGxvYyhzaXplLCBzaXplb2YoY2hh
cikpOwoKICAgIGlmKHRtcCA9PSBOVUxMKQogICAgewogICAgICAgIEZhdGFsRXJyb3IoInNwcF9k
ZWZyYWc6IFVuYWJsZSB0byBhbGxvY2F0ZSBtZW1vcnkhICIKICAgICAgICAgICAgICAgICAgICIo
JWx1IGJ5dGVzIGluIHVzZSlcbiIsIGZyYWdtZW11c2UpOwogICAgfQoKICAgIHJldHVybiB0bXA7
Cn0KCgoKCi8qKioqKipTcGxheSBUcmVlIFN0dWZmKioqKioqLwoKLyogRnVuY3Rpb246IGZyYWdj
b21wYXJlKGksaikgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KLyogVGhpcyBpcyB0aGUg
c3BsYXkgdHJlZSBjb21wYXJpc29uLiAgICAgICAgICAgKi8KLyogUmV0dXJucyAxIGlmIGk+ajsg
MCBpZiBpPWo7IC0xIGlmIGk8ajsgICAgICAgKi8KCmludCBmcmFnY29tcGFyZShpLGopCmZyYWcg
aSxqOwp7CiAgICBpZighaikKICAgIHsKICAgICAgICBpZighaSkKICAgICAgICAgICAgcmV0dXJu
KDApOwogICAgICAgIGVsc2UKICAgICAgICAgICAgcmV0dXJuKDEpOwogICAgfQogICAgZWxzZQog
ICAgewogICAgICAgIGlmKCF0cmFzaGVqZWN0c3BpbmxvY2sgJiYgVElNRV9MVChqLT5wa3RoLT50
cy4gLCB0aW1lY2hlY2suKSkKCXsgIC8qIGJ6enQgeW91IGxvc2UuLi4gdG9vIG11Y2ggdGltZS4u
Li4gdGhlIGFuc3dlciBpcy4uLi4gKi8KCQkvKiB0b3NzIHRoYXQgcHVwcHkgbGF0ZXIgYnkgYWRk
aW5nIGl0IHRvIGdhcmJhZ2VsaXN0ICovCgkJTGlzdCAqbmV3OwoJCW5ldyA9IChMaXN0ICopIERl
ZnJhZ0FsbG9jKHNpemVvZihMaXN0KSk7CgkJbmV3LT5uZXh0ID0gZ2FyYmFnZWxpc3Q7CgkJbmV3
LT5rZXkgPSBqOwoJCWdhcmJhZ2VsaXN0ID0gbmV3OwoKCX0gCiAgICAgICAgaWYoIWkpCiAgICAg
ICAgICAgIHJldHVybigtMSk7CiAgICB9CiAgICBpZihqLT5pcGggPT0gTlVMTCkKICAgIHsKICAg
ICAgICBpZihpLT5pcGggPT0gTlVMTCkKICAgICAgICB7CiAgICAgICAgICAgIHJldHVybiAwOwog
ICAgICAgIH0KICAgICAgICBlbHNlCiAgICAgICAgewogICAgICAgICAgICByZXR1cm4gMTsKICAg
ICAgICB9CiAgICB9CiAgICBlbHNlCiAgICB7CiAgICAgICAgaWYoaS0+aXBoID09IE5VTEwpCiAg
ICAgICAgewogICAgICAgICAgICByZXR1cm4gLTE7CiAgICAgICAgfQogICAgfQoKICAgIGlmKFNB
RERSKGkpID4gU0FERFIoaikpCiAgICB7CiAgICAgICAgcmV0dXJuKDEpOwogICAgfQogICAgZWxz
ZSBpZihTQUREUihpKSA8IFNBRERSKGopKQogICAgewogICAgICAgIHJldHVybigtMSk7CiAgICB9
CiAgICBlbHNlIGlmKERBRERSKGkpID4gREFERFIoaikpCiAgICB7CiAgICAgICAgcmV0dXJuKDEp
OwogICAgfQogICAgZWxzZSBpZihEQUREUihpKSA8IERBRERSKGopKQogICAgewogICAgICAgIHJl
dHVybigtMSk7CiAgICB9CiAgICBlbHNlIGlmKFBST1RPKGkpID4gUFJPVE8oaikpCiAgICB7CiAg
ICAgICAgcmV0dXJuKDEpOwogICAgfQogICAgZWxzZSBpZihQUk9UTyhpKSA8IFBST1RPKGopKQog
ICAgewogICAgICAgIHJldHVybigtMSk7CiAgICB9CiAgICBlbHNlIGlmKElEKGkpID4gSUQoaikp
CiAgICB7CiAgICAgICAgcmV0dXJuKDEpOwogICAgfQogICAgZWxzZSBpZihJRChpKSA8IElEKGop
KQogICAgewogICAgICAgIHJldHVybigtMSk7CiAgICB9CiAgICBlbHNlIGlmKChpLT5mcmFnX29m
ZnNldCk8PDMgPiAoai0+ZnJhZ19vZmZzZXQpPDwzKQogICAgewogICAgICAgIHJldHVybigxKTsK
ICAgIH0KICAgIGVsc2UgaWYoKGktPmZyYWdfb2Zmc2V0KTw8MyA8IChqLT5mcmFnX29mZnNldCk8
PDMpCiAgICB7CiAgICAgICAgcmV0dXJuKC0xKTsKICAgIH0KICAgIGVsc2UgaWYoaS0+ZHNpemUg
PiBqLT5kc2l6ZSkKICAgIHsKICAgICAgICByZXR1cm4oMSk7CiAgICB9CiAgICBlbHNlIGlmKGkt
PmRzaXplIDwgai0+ZHNpemUpCiAgICB7CiAgICAgICAgcmV0dXJuKC0xKTsKICAgIH0KICAgIHJl
dHVybigwKTsKfQoKCi8qIEZ1bmN0aW9uOiBmcmFnc3BsYXkoaSwgdCkgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAqLwovKiBTcGxheSB1c2luZyB0aGUga2V5IGkgKHdoaWNoIG1heSBvciBt
YXkgbm90IGJlIGluIHRoZSB0cmVlLikgKi8KLyogVGhlIHN0YXJ0aW5nIHJvb3QgaXMgdCwgc2l6
ZSBmaWVsZHMgYXJlIG1haW50YWluZWQgICAgICAgICAgICAqLwoKVHJlZSAqZnJhZ3NwbGF5KGZy
YWcgaSwgVHJlZSAqdCkgCnsKICAgIFRyZWUgTiwgKmwsICpyLCAqeTsKICAgIGludCBjb21wOwog
ICAgaWYoIXQpIHJldHVybiB0OwogICAgTi5sZWZ0ID0gTi5yaWdodCA9IE5VTEw7CiAgICBsID0g
ciA9ICZOOwoKICAgIGZvcig7OykKICAgIHsKICAgICAgICBjb21wID0gZnJhZ2NvbXBhcmUoaSwg
dC0+a2V5KTsKICAgICAgICBpZihjb21wIDwgMCkKICAgICAgICB7CiAgICAgICAgICAgIGlmKCF0
LT5sZWZ0KSBicmVhazsKICAgICAgICAgICAgaWYoZnJhZ2NvbXBhcmUoaSwgdC0+bGVmdC0+a2V5
KSA8IDApCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIHkgPSB0LT5sZWZ0OyAgICAgICAg
ICAgICAgICAgICAgICAgICAgIC8qIHJvdGF0ZSByaWdodCAqLwogICAgICAgICAgICAgICAgdC0+
bGVmdCA9IHktPnJpZ2h0OwogICAgICAgICAgICAgICAgeS0+cmlnaHQgPSB0OwogICAgICAgICAg
ICAgICAgdCA9IHk7CiAgICAgICAgICAgICAgICBpZighdC0+bGVmdCkgYnJlYWs7CiAgICAgICAg
ICAgIH0KICAgICAgICAgICAgci0+bGVmdCA9IHQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIC8qIGxpbmsgcmlnaHQgKi8KICAgICAgICAgICAgciA9IHQ7CiAgICAgICAgICAgIHQgPSB0
LT5sZWZ0OwogICAgICAgIH0KICAgICAgICBlbHNlIGlmKGNvbXAgPiAwKQogICAgICAgIHsKICAg
ICAgICAgICAgaWYoIXQtPnJpZ2h0KSBicmVhazsKICAgICAgICAgICAgaWYoZnJhZ2NvbXBhcmUo
aSwgdC0+cmlnaHQtPmtleSkgPiAwKQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICB5ID0g
dC0+cmlnaHQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiByb3RhdGUgbGVmdCAqLwogICAg
ICAgICAgICAgICAgdC0+cmlnaHQgPSB5LT5sZWZ0OwogICAgICAgICAgICAgICAgeS0+bGVmdCA9
IHQ7CiAgICAgICAgICAgICAgICB0ID0geTsKICAgICAgICAgICAgICAgIGlmKCF0LT5yaWdodCkg
YnJlYWs7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgbC0+cmlnaHQgPSB0OyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIC8qIGxpbmsgbGVmdCAqLwogICAgICAgICAgICBsID0gdDsKICAg
ICAgICAgICAgdCA9IHQtPnJpZ2h0OwogICAgICAgIH0KICAgICAgICBlbHNlCiAgICAgICAgewog
ICAgICAgICAgICBicmVhazsKICAgICAgICB9CiAgICB9CiAgICBsLT5yaWdodCA9IHItPmxlZnQg
PSBOVUxMOwoKICAgIGwtPnJpZ2h0ID0gdC0+bGVmdDsgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIC8qIGFzc2VtYmxlICovCiAgICByLT5sZWZ0ID0gdC0+cmlnaHQ7CiAgICB0LT5sZWZ0
ID0gTi5yaWdodDsKICAgIHQtPnJpZ2h0ID0gTi5sZWZ0OwoKICAgIHJldHVybiB0Owp9CgovKiBG
dW5jdGlvbjogVHJlZSAqIGZyYWdpbnNlcnQoZnJhZyBpLCBUcmVlICogdCkgICAgICAgICAgICAg
Ki8KLyogSW5zZXJ0IGZyYWcgaSBpbnRvIHRoZSB0cmVlIHQsIGlmIGl0IGlzIG5vdCBhbHJlYWR5
IHRoZXJlLiAgICAgICAqLwovKiBSZXR1cm4gYSBwb2ludGVyIHRvIHRoZSByZXN1bHRpbmcgdHJl
ZS4gICAgICAgICAgICAgICAgICAgICAgICAgKi8KClRyZWUgKmZyYWdpbnNlcnQoZnJhZyBpLCBU
cmVlICogdCkKewogICAgVHJlZSAqIG5ld190cmVlX25vZGU7CiAgICBpZih0KQogICAgewogICAg
ICAgIHQgPSBmcmFnc3BsYXkoaSx0KTsKICAgICAgICBpZihmcmFnY29tcGFyZShpLCB0LT5rZXkp
PT0wKQogICAgICAgIHsKICAgICAgICAgICAgcmV0dXJuIHQ7ICAvKiBpdCdzIGFscmVhZHkgdGhl
cmUgKi8KICAgICAgICB9CiAgICB9CgogICAgbmV3X3RyZWVfbm9kZSA9IChUcmVlICopIERlZnJh
Z0FsbG9jIChzaXplb2YgKFRyZWUpKTsKCiAgICBpZighbmV3X3RyZWVfbm9kZSB8fCBmcmFnbWVt
dXNlID4gTUVNSEFSRExJTSkKICAgIHsKICAgICAgICBFcnJvck1lc3NhZ2UoIlJhbiBvdXQgb2Yg
c3BhY2VcbiIpOwogICAgICAgIHNwYWNlYWxlcnQrKzsKCWlmKG5ld190cmVlX25vZGUpCgl7CgkJ
ZnJhZ21lbXVzZSAtPSBzaXplb2YoVHJlZSk7CgkJZnJlZShuZXdfdHJlZV9ub2RlKTsKCX0KICAg
ICAgICByZXR1cm4odCk7CiAgICB9CgogICAgLyogYWxlcnQgaHlzdGVyaXNpcyg/KSAqLwogICAg
aWYgKHNwYWNlYWxlcnQpCiAgICAgICAgc3BhY2VhbGVydCAtPSAoKHVuc2lnbmVkIGludClzcGFj
ZWFsZXJ0KSA+PiAxOwogICAgaWYgKHNwYWNlYWxlcnQgPCAwKQogICAgICAgIHNwYWNlYWxlcnQg
PSAwOwogICAgaWYoIXQpCiAgICB7CiAgICAgICAgbmV3X3RyZWVfbm9kZS0+bGVmdCA9IG5ld190
cmVlX25vZGUtPnJpZ2h0ID0gTlVMTDsKICAgIH0KICAgIGVsc2UKICAgICAgICBpZihmcmFnY29t
cGFyZShpLCB0LT5rZXkpIDwgMCkKICAgICAgICB7CiAgICAgICAgICAgIG5ld190cmVlX25vZGUt
PmxlZnQgPSB0LT5sZWZ0OwogICAgICAgICAgICBuZXdfdHJlZV9ub2RlLT5yaWdodCA9IHQ7CiAg
ICAgICAgICAgIHQtPmxlZnQgPSBOVUxMOwogICAgICAgIH0KICAgICAgICBlbHNlCiAgICAgICAg
ewogICAgICAgICAgICBuZXdfdHJlZV9ub2RlLT5yaWdodCA9IHQtPnJpZ2h0OwogICAgICAgICAg
ICBuZXdfdHJlZV9ub2RlLT5sZWZ0ID0gdDsKICAgICAgICAgICAgdC0+cmlnaHQgPSBOVUxMOwog
ICAgICAgIH0KICAgIG5ld190cmVlX25vZGUtPmtleSA9IGk7CiAgICByZXR1cm4gbmV3X3RyZWVf
bm9kZTsKfQoKLyogRnVuY3Rpb246IFRyZWUgKiBmcmFnZGVsZXRlKGZyYWcgaSwgVHJlZSAqdCkg
ICAgICAgKi8KLyogRGVsZXRlcyBpIGZyb20gdGhlIHRyZWUgaWYgaXQncyB0aGVyZS4gICAgICAg
ICAgICAgICAqLwovKiBSZXR1cm4gYSBwb2ludGVyIHRvIHRoZSByZXN1bHRpbmcgdHJlZS4gICAg
ICAgICAgICAgICovCgpUcmVlICpmcmFnZGVsZXRlKGZyYWcgaSwgVHJlZSAqdCkKewogICAgVHJl
ZSAqIHg7CgogICAgaWYoIXQpIHJldHVybiBOVUxMOwogICAgdCA9IGZyYWdzcGxheShpLHQpOwog
ICAgaWYoZnJhZ2NvbXBhcmUoaSwgdC0+a2V5KSA9PSAwKQogICAgeyAgICAgICAgICAgICAgIC8q
IGZvdW5kIGl0ICovCiAgICAgICAgaWYoIXQtPmxlZnQpCiAgICAgICAgewogICAgICAgICAgICB4
ID0gdC0+cmlnaHQ7CiAgICAgICAgfQogICAgICAgIGVsc2UKICAgICAgICB7CiAgICAgICAgICAg
IHggPSBmcmFnc3BsYXkoaSwgdC0+bGVmdCk7CiAgICAgICAgICAgIHgtPnJpZ2h0ID0gdC0+cmln
aHQ7CiAgICAgICAgfQoKICAgICAgICBpZih0LT5rZXkgIT0gTlVMTCkKICAgICAgICB7CiAgICAg
ICAgICAgIGZyYWdtZW11c2UgLT0gc2l6ZW9mKFBhY2tldCk7CiAgICAgICAgICAgIGZyZWUodC0+
a2V5KTsKICAgICAgICB9CgogICAgICAgCWZyYWdtZW11c2UgLT0gc2l6ZW9mKFRyZWUpOwoJZnJl
ZSh0KTsKCiAgICAgICAgcmV0dXJuIHg7CiAgICB9CiAgICBlbHNlCiAgICB7CiAgICAgICAgcmV0
dXJuIHQ7ICAgICAgICAgICAgICAgICAgICAgICAgIC8qIEl0IHdhc24ndCB0aGVyZSAqLwogICAg
fQp9Ci8qKioqKipTbm9ydCBTdHVmZioqKioqKi8KCi8qCiAqIEZ1bmN0aW9uOiBTZXR1cERlZnJh
ZygpCiAqIFB1cnBvc2U6CiAqIFJlZ2lzdGVycyB0aGUgcHJlcHJvY2Vzc29yIGtleXdvcmQgYW5k
IGluaXRpYWxpemF0aW9uIGZ1bmN0aW9uCiAqIGludG8gdGhlIHByZXByb2Nlc3NvciBsaXN0LiAg
VGhpcyBpcyB0aGUgZnVuY3Rpb24gdGhhdCBnZXRzIGNhbGxlZCBmcm9tCiAqIEluaXRQcmVwcm9j
ZXNzb3JzKCkgaW4gcGx1Z2Jhc2UuYy4KICogQXJndW1lbnRzOiBOb25lLgogKiBSZXR1cm5zOiB2
b2lkIGZ1bmN0aW9uCiAqLwp2b2lkIFNldHVwRGVmcmFnKCkKewogICAgUmVnaXN0ZXJQcmVwcm9j
ZXNzb3IoImRlZnJhZyIsIERlZnJhZ0luaXQpOwp9CgovKgogKiBGdW5jdGlvbjogRGVmcmFnSW5p
dCh1X2NoYXIgKikKICogUHVycG9zZToKICogQ2FsbHMgdGhlIGFyZ3VtZW50IHBhcnNpbmcgZnVu
Y3Rpb24sIHBlcmZvcm1zIGZpbmFsIHNldHVwIG9uIGRhdGEKICogc3RydWN0cywgbGlua3MgdGhl
IHByZXByb2MgZnVuY3Rpb24gaW50byB0aGUgZnVuY3Rpb24gbGlzdC4KICogQXJndW1lbnRzOiBh
cmdzID0+IHB0ciB0byBhcmd1bWVudCBzdHJpbmcKICogUmV0dXJuczogdm9pZCBmdW5jdGlvbgog
Ki8Kdm9pZCBEZWZyYWdJbml0KHVfY2hhciAqYXJncykKewogICAgQWRkRnVuY1RvUHJlcHJvY0xp
c3QoUHJlcHJvY0RlZnJhZyk7CgogICAgZnJvb3QgPSBOVUxMOyAgLyogaW5pdGlhbGl6ZSBlbXB0
eSBmcmFnbWVudCB0cmVlICovCiAgICBnYXJiYWdlbGlzdCA9IE5VTEw7ICAvKiBpbml0aWFsaXpl
IGVtcHR5IHRyYXNoIGxpc3QgKi8KICAgIHRyYXNoZWplY3RzcGlubG9jayA9IEZBTFNFOwogICAg
ZnJhZ21lbXVzZSA9IDA7ICAgICAgLyogTm8gbWVtb3J5IHlldCAqLwogICAgc3BhY2VhbGVydCA9
IDA7ICAgICAvKiBObyBzcGFjZSBhbGVydHMgeWV0ICovCiAgICBmcmFndGltZW91dC50dl9zZWMg
PSBGUkFHVElNRU9VVFNFQzsKICAgIGZyYWd0aW1lb3V0LnR2X3VzZWMgPSBGUkFHVElNRU9VVFVT
RUM7Cn0KCgogCi8qKioqKioqKioqKioqVHJlZSBCYWxhbmNlIFBlcmZvcm1hbmNlIEVuaGFuY2Vt
ZW50KioqKioqKioqKioqKiovCiAKaW50IGJhbGFuY2Vjb21wYXJlKHBvaW50LGopCnVuc2lnbmVk
IGludCBwb2ludDsKZnJhZyBqOwp7CiAgICBpZighaikKICAgIHsKICAgICAgICByZXR1cm4oMCk7
CiAgICB9CiAgICBlbHNlCiAgICB7CiAgICAgICAgaWYoai0+aXBoID09IE5VTEwpCiAgICAgICAg
ewogICAgICAgICAgICByZXR1cm4gMDsKICAgICAgICB9CiAgICB9CiAgICBpZihwb2ludCA+IFNB
RERSKGopKQogICAgewogICAgICAgIHJldHVybigxKTsKICAgIH0KICAgIGVsc2UgaWYocG9pbnQg
PCBTQUREUihqKSkKICAgIHsKICAgICAgICByZXR1cm4oLTEpOwogICAgfQogICAgcmV0dXJuKDAp
Owp9CiAKIAovKiBzaGlmdCBiYXNlZCBiaXQgcmV2cnNlciAtLWRyICovCiAKdW5zaWduZWQgaW50
IGJpdHJldih4KQp1bnNpZ25lZCBpbnQgeDsKewp1bnNpZ25lZCBpbnQgaSwgciA9IDA7CiAgICAg
ICAgZm9yKCBpID0gMCA7IGkgPD0gc2l6ZW9mKHVuc2lnbmVkIGludCkqOCA7IGkrKykKICAgICAg
ICAgICAgICAgIGlmICggeCAmICh1bnNpZ25lZCBpbnQpMTw8aSApCiAgICAgICAgICAgICAgICAg
ICAgICAgIHIgfD0gKHVuc2lnbmVkIGludCkxPDwoKHNpemVvZih1bnNpZ25lZCBpbnQpKjgpLWkt
MSk7CiAgICAgICAgcmV0dXJuIHI7Cn0KIAogCi8qIEZ1bmN0aW9uOiBmcmFnYmFsYW5jZShpLCB0
KSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCi8qIFNwbGF5IHVzaW5nIHRoZSBrZXkg
aSAod2hpY2ggbWF5IG9yIG1heSBub3QgYmUgaW4gdGhlIHRyZWUuKSAqLwovKiBUaGUgc3RhcnRp
bmcgcm9vdCBpcyB0LCBzaXplIGZpZWxkcyBhcmUgbWFpbnRhaW5lZCAgICAgICAgICAgICovCiAK
VHJlZSAqZnJhZ2JhbGFuY2UodW5zaWduZWQgaW50IGJhbGFuY2Vwb2ludCwgVHJlZSAqdCkKewog
ICAgVHJlZSBOLCAqbCwgKnIsICp5OwogICAgaW50IGNvbXA7CiAgICBpZighdCkgcmV0dXJuIHQ7
CiAgICBOLmxlZnQgPSBOLnJpZ2h0ID0gTlVMTDsKICAgIGwgPSByID0gJk47CiAgICBmb3IoOzsp
CiAgICB7CiAgICAgICAgY29tcCA9IGJhbGFuY2Vjb21wYXJlKGJhbGFuY2Vwb2ludCwgdC0+a2V5
KTsKICAgICAgICBpZihjb21wIDwgMCkKICAgICAgICB7CiAgICAgICAgICAgIGlmKCF0LT5sZWZ0
KSBicmVhazsKICAgICAgICAgICAgaWYoYmFsYW5jZWNvbXBhcmUoYmFsYW5jZXBvaW50LCB0LT5s
ZWZ0LT5rZXkpIDwgMCkKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgeSA9IHQtPmxlZnQ7
ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogcm90YXRlIHJpZ2h0ICovCiAgICAgICAgICAg
ICAgICB0LT5sZWZ0ID0geS0+cmlnaHQ7CiAgICAgICAgICAgICAgICB5LT5yaWdodCA9IHQ7CiAg
ICAgICAgICAgICAgICB0ID0geTsKICAgICAgICAgICAgICAgIGlmKCF0LT5sZWZ0KSBicmVhazsK
ICAgICAgICAgICAgfQogICAgICAgICAgICByLT5sZWZ0ID0gdDsgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgLyogbGluayByaWdodCAqLwogICAgICAgICAgICByID0gdDsKICAgICAgICAg
ICAgdCA9IHQtPmxlZnQ7CiAgICAgICAgfQogICAgICAgIGVsc2UgaWYoY29tcCA+IDApCiAgICAg
ICAgewogICAgICAgICAgICBpZighdC0+cmlnaHQpIGJyZWFrOwogICAgICAgICAgICBpZihiYWxh
bmNlY29tcGFyZShiYWxhbmNlcG9pbnQsIHQtPnJpZ2h0LT5rZXkpID4gMCkKICAgICAgICAgICAg
ewogICAgICAgICAgICAgICAgeSA9IHQtPnJpZ2h0OyAgICAgICAgICAgICAgICAgICAgICAgICAg
Lyogcm90YXRlIGxlZnQgKi8KICAgICAgICAgICAgICAgIHQtPnJpZ2h0ID0geS0+bGVmdDsKICAg
ICAgICAgICAgICAgIHktPmxlZnQgPSB0OwogICAgICAgICAgICAgICAgdCA9IHk7CiAgICAgICAg
ICAgICAgICBpZighdC0+cmlnaHQpIGJyZWFrOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGwt
PnJpZ2h0ID0gdDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBsaW5rIGxlZnQgKi8K
ICAgICAgICAgICAgbCA9IHQ7CiAgICAgICAgICAgIHQgPSB0LT5yaWdodDsKICAgICAgICB9CiAg
ICAgICAgZWxzZQogICAgICAgIHsKICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgfQogICAgfQog
ICAgbC0+cmlnaHQgPSByLT5sZWZ0ID0gTlVMTDsKIAogCiAgICBsLT5yaWdodCA9IHQtPmxlZnQ7
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBhc3NlbWJsZSAqLwogICAgci0+bGVm
dCA9IHQtPnJpZ2h0OwogICAgdC0+bGVmdCA9IE4ucmlnaHQ7CiAgICB0LT5yaWdodCA9IE4ubGVm
dDsKIAogICAgcmV0dXJuIHQ7Cn0KCi8qKioqKipGcmFnbWVudGF0aW9uIFN0dWZmKioqKioqLwoK
LyogRnVuY3Rpb246IGZyYWdhZGRybWF0Y2goaSxqKSAgICAgICAgICAgICAgICAgICAgICAgICAq
LwovKiByZXR1cm5zIHRydWUgaWYgdGhlIGZyYWdtZW50cyBiZWxvbmcgdG8gdGhlIHNhbWUgcmVh
c3NlbWJseSAgICAgICovCmludCBmcmFnYWRkcm1hdGNoKGksaikKZnJhZyBpLGo7Ci8qIFRoaXMg
aXMgdGhlIGNvbXBhcmlzb24uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLwov
KiBSZXR1cm5zIDEgaWYgaSBqIGhhdmUgbWF0Y2hpbmcgYWRkcmVzc2VzIGVsc2UgMCAgICAgICAg
ICAgKi8KewoKICAgIGlmKCggU0FERFIoaSkgPT0gU0FERFIoaikgKQogICAgICAgJiYgKCBEQURE
UihpKSA9PSBEQUREUihqKSApCiAgICAgICAmJiAoIElEKGkpID09IElEKGopICkKICAgICAgICYm
ICggUFJPVE8oaSkgPT0gUFJPVE8oaikgKSkKICAgIHsKICAgICAgICByZXR1cm4oMSk7CiAgICB9
CgogICAgcmV0dXJuKDApOwp9CgovKgogKiBGdW5jdGlvbjogUGFja2V0ICpSZWFzc2VtYmxlSVAo
ZnJhZyAqZnJvb3QpCiAqIFB1cnBvc2U6IEdlbmVyYXRlIGEgUGFja2V0ICogYW5kIHBhc3MgaXQg
dG8gUHJvY2Vzc1BhY2tldCwgdGhlbiAKICogZGVhbGxvY2F0ZSBwYWNrZXQKICogQXJndW1lbnRz
OiBmcm9vdCAtIHJvb3Qgb2YgdGhlIHRyZWUgY29udGFpbmluZyB0aGUgbGFzdCBwYWNrZXQgb2Yg
dGhlIGZyYW1lCiAqIFJldHVybnM6IHRyZWUgd2l0aCByZWFzc2VtYmxlZCBmcmFnbWVudHMgZGVs
ZXRlZAogKi8KVHJlZSAqUmVhc3NlbWJsZUlQKFRyZWUgKmZyb290KQp7CiAgICBQYWNrZXQgKnA7
CiAgICBpbnQgd3JpdGVjb3VudCA9IDA7CiAgICBjaGFyICpucDsKICAgIHVfY2hhciAqdG1wOwog
ICAgdV9pbnQgcHNpemU7CiAgICB1bnNpZ25lZCBpbnQgb3ZlcmhlYWQsIG1vcmVvdmVyaGVhZDsK
ICAgIElQSGRyIHNsb3dhcmlzZml4OwogICAgRXZlbnQgZXZlbnQ7CgogICAgaWYoZnJvb3QgPT0g
TlVMTCkKICAgIHsKICAgICAgICBFcnJvck1lc3NhZ2UoIkdvdCBOVUxMICpmcm9vdCBpbiBSZWFz
c2VtYmxlSVAoKSwgcGxlYXNlIHRlbGwgRHJhZ29zXG4iKTsKICAgICAgICByZXR1cm4gTlVMTDsK
ICAgIH0KCiAgICBwc2l6ZSA9IChmcm9vdC0+a2V5KS0+ZHNpemUgKyAoKGZyb290LT5rZXktPmZy
YWdfb2Zmc2V0KTw8Myk7IC8qIGxhc3QgZnJhZyBpcyBhdCB0b3Agb2YgdHJlZSAqLwoKCiAgICAv
KiB3ZSd2ZSBnb3QgdG8gaGF2ZSBhIHBhY2tldCBhdCBsZWFzdCBhcyBsYXJnZSBhcyBhbiBJQ01Q
IGhlYWRlciAqLwogICAgaWYocHNpemUgPCA0KQogICAgewogICAgICAgIEVycm9yTWVzc2FnZSgi
WyFdIEVSUk9SOiBEZWZyYWcgcGx1Z2luIGlzIGZ1Y2tlZCB1cCwgIgogICAgICAgICAgICAgICAg
ICAgICAiY2FsY3VsYXRlZCBwYWNrZXQgc2l6ZSB0b28gc21hbGxcbiIpOwogICAgfQoKICAgIC8q
IGhvcGVmdWxseSBtb3Jlb3ZlcmhlYWQgaGVyZSBmaW5kcyBvdXQgYWJvdXQgYWxsIHRoZSB3aWVy
ZCBNQUMgCiAgICAgKiBzaXplcyBsaWtlIEZEREkgYW5kIEFUTSAKICAgICAqLwogICAgbW9yZW92
ZXJoZWFkID0gKGNoYXIqKWZyb290LT5rZXktPmlwaCAtIChjaGFyKilmcm9vdC0+a2V5LT5wa3Q7
CiAgICBvdmVyaGVhZCA9IChjaGFyKilmcm9vdC0+a2V5LT5wa3QgLSAoY2hhciopZnJvb3QtPmtl
eS0+cGt0aDsKICAgIAogICAgLyogTGludXggZml4IGNvZGUgKi8KICAgIGlmKG92ZXJoZWFkIDwg
c2l6ZW9mKHN0cnVjdCBwY2FwX3BrdGhkcikgfHwgCiAgICAgICBvdmVyaGVhZCA+IHNpemVvZigg
c3RydWN0IHBjYXBfcGt0aGRyKSArIDIpCiAgICB7CiAgICAgICAgb3ZlcmhlYWQgPSBzaXplb2Yo
c3RydWN0IHBjYXBfcGt0aGRyKSArIDI7CiAgICB9CgoKICAgIHAgPSAoUGFja2V0ICopRGVmcmFn
QWxsb2Moc2l6ZW9mKFBhY2tldCkpOwoKCiAgICBpZighcCkKICAgIHsKICAgICAgICBFcnJvck1l
c3NhZ2UoIlshXSBFUlJPUjogVW5hYmxlIHRvIGFsbG9jYXRlIG1lbW9yeSBmb3IgIgogICAgICAg
ICAgICAgICAgICAgICAiZnJhZ21lbnQgcmVidWlsZCFcbiIpOwogICAgICAgIHJldHVybiBOVUxM
OwogICAgfQoKICAgIG1lbWNweShwLCBmcm9vdC0+a2V5LCBzaXplb2YoUGFja2V0KSk7CgogICAg
cC0+cGt0aCA9IChzdHJ1Y3QgcGNhcF9wa3RoZHIgKikKICAgICAgICAgICAgICAgIERlZnJhZ0Fs
bG9jKHBzaXplICsgb3ZlcmhlYWQgKyBtb3Jlb3ZlcmhlYWQgKyBzaXplb2YoSVBIZHIpICsgMzIp
OwoKICAgIGlmKCFwLT5wa3RoKQogICAgewogICAgICAgIEVycm9yTWVzc2FnZSgiWyFdIEVSUk9S
OiBVbmFibGUgdG8gYWxsb2NhdGUgbWVtb3J5IGZvciBmcmFnbWVudCAiCiAgICAgICAgICAgICAg
ICAgICAgICJyZWJ1aWxkIVxuIik7CiAgICAgICAgZnJhZ21lbXVzZSAtPSBzaXplb2YoUGFja2V0
KTsKICAgICAgICBmcmVlKHApOwogICAgICAgIHJldHVybiBOVUxMOwogICAgfQoKICAgIHAtPmlw
aCA9IChJUEhkciAqKSgodV9jaGFyKilwLT5wa3RoICsgb3ZlcmhlYWQgKyBtb3Jlb3ZlcmhlYWQp
OwogICAgcC0+cGt0ID0gKHVfY2hhciopcC0+aXBoIC0gbW9yZW92ZXJoZWFkOwoKICAgIC8qCiAg
ICAgKiBOb3cgY29weSB0aGUgaGVhZGVyIGFuZCBmcmFnbWVudHMgaW50byB0aGUgbmV3bHktYWxs
b2NhdGVkIGJ1ZmZlciwKICAgICAqIHJlY29uc3RydWN0aW5nIHRoZSBwYWNrZXQgY2h1bmsgYnkg
Y2h1bmsuIEN1cnJlbnQgYWxnb3JpdGhtIGlzIGZpcnN0IAogICAgICogd3JpdGUgdG8gYW4gYXJl
YSB3aW5zLCBwbGF5IHdpdGggc3BsYXkgb3JkZXIgdG8gY2hhbmdlLgogICAgICogd2Ugc3RhcnQg
ZnJvbSB0aGUgbGFzdCBmcmFnbWVudCBhbmQgd29yayBiYWNrLi4uLgogICAgICovCgogICAgLyog
ZmlsbCBpbiBwYWNrZXQgaGVhZGVyIGJwZiBoZWFkZXIgZmlyc3QqLwogICAgbWVtY3B5KHAtPnBr
dGgsIGZyb290LT5rZXktPnBrdGgsIG92ZXJoZWFkKTsgCgogICAgLyogdGhlbiB0aGUgbWFjIGp1
bmssIHNwbGl0IGludG8gdHdvIGNvcGllcyBmb3IgTGludXggCiAgICAgKiBub24tY29udGlndW91
cyBoZWFkZXJzIAogICAgICovCiAgICBtZW1jcHkoKGNoYXIqKXAtPnBrdGggKyBvdmVyaGVhZCwg
ZnJvb3QtPmtleS0+cGt0LCBtb3Jlb3ZlcmhlYWQpOyAKCiAgICAvKgogICAgICogdGhlbiB0aGUg
SVAgaGVhZGVyIGp1c3QgdG8gYmUgcGFyYW5vaWQgZm9yIGRlYnVnZ2luZyBiZWNhdXNlIGluIHRo
ZQogICAgICogcmVhbCB3b3JsZCB3ZSB3b3VsZCBkbyB0aGVzZSBpbiBvbmUgY29weQogICAgICov
CiAgICB0bXAgPSAodV9jaGFyICopIGZyb290LT5rZXktPmlwaDsKICAgIG1lbWNweShwLT5pcGgs
IHRtcCwgc2l6ZW9mKElQSGRyKSk7IAoKICAgIHAtPnBrdGgtPmNhcGxlbiA9IHBzaXplICsgb3Zl
cmhlYWQgKyBtb3Jlb3ZlcmhlYWQgKyBzaXplb2YoSVBIZHIpOwogICAgcC0+cGt0aC0+bGVuID0g
cC0+cGt0aC0+Y2FwbGVuOwoKICAgIC8qCiAgICAgKiBDbGVhciB0aGUgbW9yZSBmcmFnbWVudHMg
Yml0LCBhbmQgc2V0IHRoZSBsZW5ndGggaW4gdGhlIGlwIGhlYWRlcgogICAgICogKGluIG5ldHdv
cmsgYnl0ZSBvcmRlcikuCiAgICAgKi8KICAgIHAtPmlwaC0+aXBfbGVuID0gaHRvbnMocHNpemUr
c2l6ZW9mKElQSGRyKSk7CiAgICBwLT5pcGgtPmlwX29mZiA9IDA7CiAgICBwLT5mcmFnX2ZsYWcg
PSAwOwoKCiAgICB3aGlsZShmcm9vdCAmJiBmcmFnYWRkcm1hdGNoKHAsZnJvb3QtPmtleSkpCiAg
ICB7CiAgICAgICAgaWYoKChmcm9vdC0+a2V5LT5mcmFnX29mZnNldCk8PDMpICsgZnJvb3QtPmtl
eS0+ZHNpemUgPD0gcHNpemUpCiAgICAgICAgewogICAgICAgICAgICBtZW1jcHkoKHVfaW50OF90
ICopREFUQShwKSsoKGZyb290LT5rZXktPmZyYWdfb2Zmc2V0KTw8MyksIAogICAgICAgICAgICAg
ICAgICAgIERBVEEoZnJvb3QtPmtleSksIGZyb290LT5rZXktPmRzaXplKTsKCiAgICAgICAgICAg
IHdyaXRlY291bnQgKz0gZnJvb3QtPmtleS0+ZHNpemU7CiAgICAgICAgfQogICAgICAgIGVsc2UK
ICAgICAgICB7CiAgICAgICAgICAgIFNldEV2ZW50KCZldmVudCwgR0VORVJBVE9SX1NQUF9ERUZS
QUcsIAogICAgICAgICAgICAgICAgICAgIERFRlJBR19GUkFHX09WRVJGTE9XLCAxLCAwLCAwLCAw
KTsKICAgICAgICAgICAgQ2FsbEFsZXJ0RnVuY3MocCwgIkZyYWdtZW50YXRpb24gT3ZlcmZsb3cg
QXR0YWNrIiwgTlVMTCwgJmV2ZW50KTsKICAgICAgICB9CgogICAgICAgIC8qIGNsZWFyIHRoZSBm
cmFnbWVudCBzdG9yZSBvZiB0aGUgZnJhZyB0aGF0IHdhcyBqdXN0IHB1dCBpbnRvIHRoZQogICAg
ICAgICAqIHJlYXNzZW1ibHkKICAgICAgICAgKi8KICAgICAgICBpZihmcm9vdCkKICAgICAgICB7
CiAgICAgICAgICAgIG5wID0gKGNoYXIgKilmcm9vdC0+a2V5LT5wa3RoOyAgLyogYWRkcmVzcyBm
b3IgZnJlZSBsYXRlciAqLwoKCiAgICAgICAgICAgIGZyb290ID0gZnJhZ2RlbGV0ZShmcm9vdC0+
a2V5LCBmcm9vdCk7CgogICAgICAgICAgICBpZihucCkKICAgICAgICAgICAgewogICAgICAgICAg
ICAgICAgLyogdGhpcyBmcmFnbWVudCB3YXMgYW4gZWxlbWVudCBvZiBhIHJlYnVpbHQgcGFja2V0
ICovCiAgICAgICAgICAgICAgICBwYy5yZWJ1aWxkX2VsZW1lbnQrKzsKICAgICAgICAgICAgICAg
IGZyYWdtZW11c2UgLT0gKCgoc3RydWN0IHBjYXBfcGt0aGRyICopbnApLT5jYXBsZW4gKyAKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgb3ZlcmhlYWQgKyAyMCk7CiAgICAgICAgICAgICAg
ICBmcmVlKG5wKTsKICAgICAgICAgICAgfQogICAgICAgIH0KCWZyb290ID0gZnJhZ3NwbGF5KHAs
ZnJvb3QpOwogICAgfQoKICAgIG1lbWNweSgmc2xvd2FyaXNmaXgsIHAtPmlwaCwgc2l6ZW9mKElQ
SGRyKSk7CiAgICBwLT5pcGggPSAmc2xvd2FyaXNmaXg7IAoKICAgIC8qIGFuZCBub3cgc29tZSBq
b2x0MnByb29maW5nICovCiAgICAvKiBwc2l6ZSBjaGVjayBpbmNyZWFzZWQgZnJvbSA4MTkyIHRv
IDY1NTM1LW10dXNpemUsIHRoZXNlIHBhY2tldHMgY2FuIGdldAogICAgICogYmlnIGxlZ2l0aW1h
dGVseSAtIE1GUiAqLwogICAgLyogbW92ZWQgYmFjayBkb3duIHRvIDgxOTIgdG8gYWNjb3VudCBm
b3Igc3dpc3NjaGVlc2VncmFtIGF0dGFjayAtLWRyICovCiAgICBpZihwc2l6ZSA+IDgxOTIpICAv
KiBvbmx5IGtpY2sgaW4gZm9yIG1vbnN0ZXJncmFtcyAqLwogICAgewogICAgICAgIC8qcGFja2V0
cyBoYXZlIHRvIGJlIGhhbGYgZnVsbCBmb3IgdXMgdG8gbG9vayBhdCB0aGVtICovCiAgICAgICAg
aWYod3JpdGVjb3VudCA+IChwc2l6ZT4+MSkpIAogICAgICAgIHsKICAgICAgICAgICAgaWYocCkK
ICAgICAgICAgICAgewogICAgICAgICAgICAgICAgLyoga2VlcCBzdGF0cyBmb3IgdGhlIHBhY2tl
dCBjb3VudGVyIHN0cnVjdCAtTUZSICovCiAgICAgICAgICAgICAgICBwYy5yZWJ1aWx0X2ZyYWdz
Kys7ICAvKiBNYXJ0eS4uLiBIdWg/PyAtLWRyICovCiAgICAgICAgICAgICAgICBQcm9jZXNzUGFj
a2V0KE5VTEwscC0+cGt0aCwgcC0+cGt0KTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAg
ICBlbHNlCiAgICAgICAgewogICAgICAgICAgICBTZXRFdmVudCgmZXZlbnQsIEdFTkVSQVRPUl9T
UFBfREVGUkFHLCAKICAgICAgICAgICAgICAgICAgICBERUZSQUdfRlJBR1NfRElTQ0FSREVELCAx
LCAwLCAwLCAwKTsKICAgICAgICAgICAgQ2FsbEFsZXJ0RnVuY3MocCwgIkluY29tcGxldGUgUGFj
a2V0IEZyYWdtZW50cyBEaXNjYXJkZWQiLCAKICAgICAgICAgICAgICAgICAgICBOVUxMLCAmZXZl
bnQpOwogICAgICAgIH0KICAgIH0KICAgIGVsc2UKICAgIHsKICAgICAgICBpZihwKQogICAgICAg
IHsKICAgICAgICAgICAgcGMucmVidWlsdF9mcmFncysrOwogICAgICAgICAgICBQcm9jZXNzUGFj
a2V0KE5VTEwsIHAtPnBrdGgsIHAtPnBrdCk7CiAgICAgICAgfQogICAgfQoKICAgIGZyYWdtZW11
c2UgLT0gKHBzaXplK292ZXJoZWFkK21vcmVvdmVyaGVhZCtzaXplb2YoSVBIZHIpKzMyK3NpemVv
ZihQYWNrZXQpKTsKICAgIGZyZWUocC0+cGt0aCk7ICAgICAgLyogc2V0IHRoZSBmcmFua2Vuc3Rl
aW5ncmFtIGZyZWUuLi4uICovCiAgICBmcmVlKHApOwoKICAgIHJldHVybihmcm9vdCk7Cn0KCi8q
CiAqIEZ1bmN0aW9uOiBQcmVwcm9jRGVmcmFnKFBhY2tldCAqKQogKiBQdXJwb3NlOgogKiBEcml2
ZXIgZnVuY3Rpb24gZm9yIHRoZSBJUCBkZWZyYWdtZW50YXRpb24gcHJlcHJvY2Vzc29yLgogKiBB
cmd1bWVudHM6IHAgPT4gcG9pbnRlciB0byB0aGUgY3VycmVudCBwYWNrZXQgZGF0YSBzdHJ1Y3QK
ICogUmV0dXJuczogdm9pZCBmdW5jdGlvbgogKi8Kdm9pZCBQcmVwcm9jRGVmcmFnKFBhY2tldCAq
cCkKewogICAgUGFja2V0ICpwYWNrZXRfY29weTsKICAgIHN0cnVjdCBwY2FwX3BrdGhkciAqZnJl
ZXRlbXA7CiAgICBpbnQgb3ZlcmhlYWQ7CiAgICBpbnQgY2FwOwogICAgdV9jaGFyICp0bXA7CiAg
ICBUcmVlICpuZXdfZnJvb3Q7CgogICAgaWYoIXAgfHwgIXAtPnBrdGggfHwgIXAtPnBrdCkKICAg
IHsKICAgICAgICBpZihwdi52ZXJib3NlX2ZsYWcpCiAgICAgICAgewogICAgICAgICAgICBFcnJv
ck1lc3NhZ2UoIiVzXG4iLCJHYXJiYWdlIFBhY2tldCB3aXRoIE51bGwgUG9pbnRlciBkaXNjYXJk
ZWQhIik7CiAgICAgICAgfQoKICAgICAgICByZXR1cm47CiAgICB9CgogICAgLyogY2hlY2sgdG8g
bWFrZSBzdXJlIHRoZSBJUCBoZWFkZXIgZXhpc3RzIGFuZCB0aGF0IAogICAgICogdGhlcmUgaXNu
J3QgYSBiYWQgSVAgY2hlY2tzdW0KICAgICAqLwogICAgaWYoIXAtPmlwaCB8fCAocC0+Y3N1bV9m
bGFncyAmIENTRV9JUCkpCiAgICB7CiAgICAgICAgcmV0dXJuOyAgICAgIAogICAgfQoKICAgIGlm
KHAtPmZyYWdfZmxhZykKICAgIHsgIC8qIGhlYWRzIHVwLCBsaXZlIGZyYWdtZW50cyBpbmJvdW5k
ICAqLwogICAgICAgIG92ZXJoZWFkID0gKGNoYXIqKXAtPnBrdCAtIChjaGFyKilwLT5wa3RoOyAv
KiArNCBteXN0ZXJ5IHBvaW50cyAqLwogICAgICAgIC8qIExpbnV4IGZpeCBjb2RlICovCiAgICAg
ICAgaWYob3ZlcmhlYWQgPCAxIHx8IG92ZXJoZWFkID4gc2l6ZW9mKHN0cnVjdCBwY2FwX3BrdGhk
cikgKyAyKQogICAgICAgICAgICBvdmVyaGVhZCA9IHNpemVvZihzdHJ1Y3QgcGNhcF9wa3RoZHIp
ICsgMjsKCiAgICAgICAgcGFja2V0X2NvcHkgPSAoUGFja2V0ICopIERlZnJhZ0FsbG9jKHNpemVv
ZihQYWNrZXQpKTsKCiAgICAgICAgaWYoIXBhY2tldF9jb3B5KQogICAgICAgIHsKICAgICAgICAg
ICAgRXJyb3JNZXNzYWdlKCJbIV0gRVJST1I6IENhbm5vdCBhbGxvY2F0ZSBmcmFnbWVudCAiCiAg
ICAgICAgICAgICAgICAgICAgICAgICAiYnVmZmVyKHVzYWdlIDB4JVgpXG4iLGZyYWdtZW11c2Up
OwogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQoKCiAgICAgICAgbWVtY3B5KHBhY2tldF9j
b3B5LCBwLCBzaXplb2YoUGFja2V0KSk7CiAgICAgICAgY2FwID0gcC0+cGt0aC0+Y2FwbGVuICsg
b3ZlcmhlYWQ7CiAgICAgICAgdG1wID0gKHVfY2hhciAqKSBEZWZyYWdBbGxvYyhjYXAgKyAyMCk7
CiAgICAgICAgcGFja2V0X2NvcHktPnBrdGggPSAoc3RydWN0IHBjYXBfcGt0aGRyICopIHRtcDsK
CiAgICAgICAgaWYoIXBhY2tldF9jb3B5LT5wa3RoKQogICAgICAgIHsKICAgICAgICAgICAgZnJl
ZShwYWNrZXRfY29weSk7CiAgICAgICAgICAgIGZyYWdtZW11c2UgLT0gc2l6ZW9mKFBhY2tldCk7
CiAgICAgICAgICAgIEVycm9yTWVzc2FnZSgiWyFdIEVSUk9SOiBDYW5ub3QgYWxsb2NhdGUgZnJh
Z21lbnQgIgogICAgICAgICAgICAgICAgICAgICAgICAgImJ1ZmZlcih1c2FnZSAlWClcbiIsZnJh
Z21lbXVzZSk7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CgogICAgICAgIHBhY2tldF9j
b3B5LT5wa3QgPSAodV9jaGFyKilwYWNrZXRfY29weS0+cGt0aCArIG92ZXJoZWFkOwogICAgICAg
IHBhY2tldF9jb3B5LT5pcGggPSAoSVBIZHIqKSgodV9jaGFyKilwYWNrZXRfY29weS0+cGt0ICsg
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICgodV9jaGFyKilwLT5pcGggLSAodV9jaGFyKilw
LT5wa3QpKTsKCiAgICAgICAgLyogY2xlYXJlZCBieSBNRlIsIGFjY291bnRlZCBmb3IgYmVsb3cg
Ki8KICAgICAgICAvKmZyYWdtZW11c2UgKz0gcC0+cGt0aC0+Y2FwbGVuICsgb3ZlcmhlYWQ7Ki8K
ICAgICAgICBsYXN0X2ZyYWdfdGltZS50dl9zZWMgPSBwLT5wa3RoLT50cy50dl9zZWM7CiAgICAg
ICAgbGFzdF9mcmFnX3RpbWUudHZfdXNlYyA9IHAtPnBrdGgtPnRzLnR2X3VzZWM7CiAgICAgICAg
LyoqKioqKiB1cGRhdGUgdGhlIHRpbWVvdXQgdGhyZXNob2xkIGdsb2JhbCBzbyBmcmFnY29tcGFy
ZSBjYW4KICAgICAgICAgKioqKioqIHVzZSBpdC4KICAgICAgICAgKioqKioqLwoKICAgICAgICBp
ZihmcmFnbWVtdXNlIDwgMCkKICAgICAgICAgICAgZnJhZ21lbXVzZSA9IDA7CiAgICAgICAgZnJh
Z3RpbWVvdXQudHZfc2VjID0gCiAgICAgICAgICAgIChpbnQpKChmbG9hdClGUkFHVElNRU9VVFNF
QyooKE1FTUhBUkRMSU0tZnJhZ21lbXVzZSkvCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgKGZsb2F0KU1FTUhBUkRMSU0pKTsKICAgICAgICBmcmFndGltZW91dC50dl91
c2VjID0gCiAgICAgICAgICAgIChpbnQpKChmbG9hdClGUkFHVElNRU9VVFVTRUMqKChNRU1IQVJE
TElNLWZyYWdtZW11c2UpLwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAoZmxvYXQpTUVNSEFSRExJTSkpOwogICAgICAgIHN1YnRpbWUoJmxhc3RfZnJhZ190aW1lLCAm
ZnJhZ3RpbWVvdXQsICZ0aW1lY2hlY2spOwoKICAgICAgICAvKiB3ZSBkbyB0aGlzIHdpdGggdHdv
IG1lbWNvcGllcyB0byBjb3BlIHdpdGggTGludXggCiAgICAgICAgICogbm9uLWNvbnRpZ3VvdXMg
YnBmIGhlYWRlcnMgCiAgICAgICAgICovCiAgICAgICAgbWVtY3B5KHBhY2tldF9jb3B5LT5wa3Ro
LCBwLT5wa3RoLCBvdmVyaGVhZCk7CiAgICAgICAgbWVtY3B5KHBhY2tldF9jb3B5LT5wa3QsIHAt
PnBrdCwgcC0+cGt0aC0+Y2FwbGVuKTsKICAgICAgICBuZXdfZnJvb3QgPSBmcmFnaW5zZXJ0KHBh
Y2tldF9jb3B5LCBmcm9vdCk7IAogICAgICAgIGlmKG5ld19mcm9vdCA9PSBmcm9vdCkKICAgICAg
ICB7CiAgICAgICAgICAgIC8qIG91dCBvZiBtZW1vcnkgdG9zcyB0aGUgY29waWVzICovCiAgICAg
ICAgICAgIGZyZWUocGFja2V0X2NvcHktPnBrdGgpOwogICAgICAgICAgICBmcmFnbWVtdXNlIC09
IChjYXAgKyAyMCk7CiAgICAgICAgICAgIGZyZWUocGFja2V0X2NvcHkpOwogICAgICAgICAgICBm
cmFnbWVtdXNlIC09IHNpemVvZihQYWNrZXQpOwogICAgICAgICAgICBuZXdfZnJvb3QgPSBmcmFn
YmFsYW5jZShiaXRyZXYoU0FERFIocCkpLCBuZXdfZnJvb3QpOwoJICAgIG5ld19mcm9vdCA9IGZy
YWdzcGxheShwYWNrZXRfY29weSwgbmV3X2Zyb290KTsKICAgICAgICB9CiAgICAgICAgZnJvb3Qg
PSBuZXdfZnJvb3Q7CgogICAgICAgIC8qIG5vdyBjaGVjayBpZiB3ZSBoYXZlIHRvIHJlYXNzZW1i
bGUgYW55dGhpbmcuLi4gKi8KICAgICAgICBpZighTUYocCkpCiAgICAgICAgICAgIGZyb290ID0g
UmVhc3NlbWJsZUlQKGZyb290KTsKCiAgICAgICAgLyogT0sgbm93IGVqZWN0IHRoZSB0cmFzaCAo
ZnJhZ21lbnQgdGltZW91dCA6LSkgKi8KICAgICAgICBpZihmcm9vdCkKICAgICAgICB7CiAgICAg
ICAgICAgIHdoaWxlKGdhcmJhZ2VsaXN0KQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBM
aXN0ICp0cmFzaDsKCQl0cmFzaGVqZWN0c3BpbmxvY2sgPSBUUlVFOwoJCXdoaWxlKGZyYWdhZGRy
bWF0Y2goZnJvb3QtPnJpZ2h0LGdhcmJhZ2VsaXN0LT5rZXkpKQoJCXsKICAgICAgICAgICAgICAg
ICAgICBmcmVldGVtcCA9IGZyb290LT5yaWdodC0+a2V5LT5wa3RoOwoJCSAgICBmcmFnbWVtdXNl
IC09IGZyZWV0ZW1wLT5jYXBsZW4gKyBvdmVyaGVhZCArIDIwOwoJCSAgICBuZXdfZnJvb3QgPSBm
cmFnZGVsZXRlKGZyb290LT5yaWdodC0+a2V5LCBmcm9vdC0+cmlnaHQpOwoJCSAgICBpZihuZXdf
ZnJvb3QgIT0gZnJvb3QtPnJpZ2h0KQogICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAg
ICAgICAgICAgICAgZnJvb3QtPnJpZ2h0ID0gbmV3X2Zyb290OwogICAgICAgICAgICAgICAgICAg
ICAgICBmcmVlKGZyZWV0ZW1wKTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAg
ICAgICAgZnJlZShmcmVldGVtcCk7CiAgICAgICAgICAgICAgICAgICAgcGMuZnJhZ190aW1lb3V0
Kys7CgkJfQogICAgICAgICAgICAgICAgZnJlZXRlbXAgPSBnYXJiYWdlbGlzdC0+a2V5LT5wa3Ro
OwogICAgICAgICAgICAgICAgZnJhZ21lbXVzZSAtPSBmcmVldGVtcC0+Y2FwbGVuICsgb3Zlcmhl
YWQgKyAyMDsKICAgICAgICAgICAgICAgIG5ld19mcm9vdCA9IGZyYWdkZWxldGUoZ2FyYmFnZWxp
c3QtPmtleSwgZnJvb3QpOwoJCWlmKG5ld19mcm9vdCAhPSBmcm9vdCkKICAgICAgICAgICAgICAg
IHsKICAgICAgICAgICAgICAgICAgICBmcm9vdCA9IG5ld19mcm9vdDsKICAgICAgICAgICAgICAg
ICAgICBmcmVlKGZyZWV0ZW1wKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIHBj
LmZyYWdfdGltZW91dCsrOwogICAgICAgICAgICAgICAgdHJhc2ggPSBnYXJiYWdlbGlzdDsKICAg
ICAgICAgICAgICAgIGdhcmJhZ2VsaXN0ID0gZ2FyYmFnZWxpc3QtPm5leHQ7CiAgICAgICAgICAg
ICAgICBmcmVlKHRyYXNoKTsKICAgICAgICAgICAgICAgIGZyYWdtZW11c2UgLT0gc2l6ZW9mKExp
c3QpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIHRyYXNoZWplY3RzcGlubG9jayA9IEZBTFNF
OwoKICAgICAgICB9CiAgICB9CgogICAgcmV0dXJuOwp9CgoKCg==

--Boundary-=_OjIhCLMluHEhavsxyvYVCTMdWHUF--



--__--__--

_______________________________________________
Snort-users mailing list
Snort-users () lists sourceforge net
http://lists.sourceforge.net/lists/listinfo/snort-users


End of Snort-users Digest




_______________________________________________
Snort-users mailing list
Snort-users () lists sourceforge net
Go to this URL to change user options or unsubscribe:
http://lists.sourceforge.net/lists/listinfo/snort-users
Snort-users list archive:
http://www.geocrawler.com/redir-sf.php3?list=snort-users


Current thread: