Snort mailing list archives

Re: Snort-users digest, Vol 1 #791 - 5 msgs


From: "ORA" <LSMITH147 () nc rr com>
Date: Tue, 10 Jul 2001 11:38:40 -0400

ke stop wasting my time. your information is garbage you POOFPOOFPOOFPOOFare
a selfrighteous idiot and your messages are a joke!!!!FAKE ASS COMPUTER
PROGRAMER
FJKKLWWJKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK
KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK
KKKKKKKKKKKKKKKBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
BBBBBBBBBBBBB
jfkslaffffffffjwiiiiiiiiqoooooojjjjjjjjj'aaaaaaaieeeeeeeqooooodjjjjjjnvvvvvv
vjffsllllllkddddddddpwwwwwwwmwbbbbbbkdddddddwoooooooojffffffflssskbbbkkkkkkk
kkbkbkbkbbkbkbkbkbkbkbkbasssssssssssssssssssssaassssssssssssssssssssssssssss
ssdkdkDKDJFHDIEFLSLDKFJDKDLFJFJDKFLDNKFLD;D'DJJDLLKDKDKDKKBKBKBKBKBKBKBKBKBK
BKBKBKBKBKBKBKBKBKBKBKBKBKBKBKBKBKIBKIBKIKJOKEUR A
----- Original Message -----
From: <snort-users-request () lists sourceforge net>
To: <snort-users () lists sourceforge net>
Sent: Tuesday, July 10, 2001 4:31 AM
Subject: Snort-users digest, Vol 1 #791 - 5 msgs


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. ACID news (roman () danyliw com)
   2. Re: [Snort-sigs] bad rule in ftp.rules? (1.8 cvs) (HABU Takuya)
   3. Re: new spp_defrag.c v1.4b (Ralf Hildebrandt)
   4. RE: Snort 1.8 released (Mayers, Philip J)
   5. spp_defrag.c v1.5 (Dragos Ruiu)

--__--__--

Message: 1
To: snort-users () lists sourceforge net
From: roman () danyliw com
Date: Tue, 10 Jul 2001 02:30:48 US/Eastern
Subject: [Snort-users] ACID news

- Rough ACID performance benchmarking:
http://acidlab.sf.net/acid_perf.html

- Release of v0.9.6b12 which contains some bug-fixes, and
  the removal of the BCMath dependency in PHP (thanks for pointing this
out
  Christopher Ostmo <tech () appideas com>)

- Introduction of "alert event caching" in v0.9.6b13 (in CVS)

The alert event cache is an optimization introduced to decrease the
processing time of
various
analysis operations.  With the growing functionality of ACID, the SQL
queries to the
database
are becoming increasing complicated requiring at a minimum the JOINing of
several tables.
The
JOIN of tables can become extremely memory intensive as the size of the
tables (i.e. the
number
of alerts grows).  In an effort to minimize these table JOINS, an alert
event cache tables
was created (table: acid_event).

The newly introduced acid_event table combines the most commonly used
information
about an alert into a single table: IP address, ports, signature name,
classification, and
priorities.  Two observations can be made about this new table: it
redundantly stores
information,
and is not normalized.  While these are usually undesirable features, it
was felt that
with the
declining price of storage this was a reasonable trade-off to yield much
better
performance.

All analysis operations now are performed from this event cache.  This
reality introduces
a
new paradigm shift for ACID: alerts are no longer processed in real-time
from the same
tables
as they were logged by Snort or other security devices.  Hence, the event
cache must now
be maintained; that is, newly logged alerts must be moved into a new table
structure in
order
to be "seen" and analyzed by ACID.  It must be stressed that this
"caching" operation is a
one
time cost and must be done only once per alert.

There are two possible strategies by which to manage the alert event
cache:

  - Automatic: By setting the $event_cache_auto_update variable, ACID
      will automatically check and as required update the event cache on
the loading of
      every page.  With this configuration, the existence of the event
cache becomes
      transparent.  It should be noted that when a given page is loaded
and there are
      a substantial number of uncached alerts, page loading time will be
impacted as these
      alerts are cached.

  - Manual: Alerts will not be moved into the cache (and not visible to
ACID) unless
      the user manually moves the alerts into the cache from the
acid_maintenance.php
page.

See you all at Blackhat and Defcon,
Roman


---------------------------------------------
This message was sent using Voicenet WebMail.
      http://www.voicenet.com/webmail/




--__--__--

Message: 2
Date: Tue, 10 Jul 2001 15:49:51 +0900
From: HABU Takuya <habu () yk fujitsu co jp>
To: Snort-users ML <Snort-users () lists sourceforge net>
Subject: [Snort-users] Re: [Snort-sigs] bad rule in ftp.rules? (1.8 cvs)

Hello, Mr.Fichtner,

On Mon, 9 Jul 2001 22:13:34 -0400
Erik Fichtner <emf () servervault com> wrote:

alert tcp $EXTERNAL_NET any -> $HOME_NET 21 (msg:"FTP passwd retreval
attempt";
content:"RETR"; content:"passwd"; flags: A+; nocase;
reference:arachnids,213; classtype:bad-unknown; sid:356; rev:2;)

 If you want to ignore case of "RETR", you should add nocase
IMMEDIATELY after `content:"RETR";' , not after `content: "passwd"'.
 Otherwise snort will just ignore case of "passwd", and not catch
lower case "retr".

alert tcp $EXTERNAL_NET any -> $HOME_NET 21 (msg:"FTP passwd retreval
attempt"; content:"RETR"; nocase; content:"passwd"; flags: A+;
reference:arachnids,213; classtype:bad-unknown; sid:356; rev:2;)

I suppose this is correct.



--__--__--

Message: 3
Date: Tue, 10 Jul 2001 09:36:51 +0200
From: Ralf Hildebrandt <Ralf.Hildebrandt () innominate com>
To: snort-users () lists sourceforge net
Subject: Re: [Snort-users] new spp_defrag.c v1.4b

On Mon, Jul 09, 2001 at 11:16:34PM -0700, Dragos Ruiu wrote:
A stab in the dark at fixing some of the memory full errors.
I've added more aggressive cleanup in case of memory full conditions.

Is that already in the CVS or snort-1.8 release?
--
ralf.hildebrandt () innominate com                            innominate AG
Technical Consultant                   Don't be afraid of what you see -
Diplom-Informatiker                     be afraid of what you don't see!
tel: +49.(0)7000.POSTFIX                        fax: +49.(0)30.308806-77



--__--__--

Message: 4
From: "Mayers, Philip J" <p.mayers () ic ac uk>
To: 'Martin Roesch' <roesch () sourcefire com>, snort-dev
<snort-devel () lists sourceforge net>, snort-users
<snort-users () lists sourceforge net>
Subject: RE: [Snort-users] Snort 1.8 released
Date: Tue, 10 Jul 2001 08:54:22 +0100

Did Dragos get his fixes for the float/int arithmetic in the defragger in?

Regards,
Phil

+----------------------------------+
| Phil Mayers, Network Support     |
| Centre for Computing Services    |
| Imperial College                 |
+----------------------------------+


-----Original Message-----
From: Martin Roesch [mailto:roesch () sourcefire com]
Sent: 10 July 2001 04:52
To: snort-announce; snort-dev; snort-users; focus-ids; Bugtraq;
ids () uow edu au; lwn () lwn net
Subject: [Snort-users] Snort 1.8 released


In a dress-rehearsal for the impending arrival of his baby later this
month, Martin Roesch has finally squeezed out Snort version 1.8.

Snort 1.8 is available at:

http://www.snort.org/files/snort-1.8-RELEASE.tar.gz

Version 1.8 incorporates a number of changes and new features, including
some of the following:

New things:
* Stateful inspection and TCP stream reassembly module
* High performance IP defragmenter module
* High performance unified binary output module
* Tagging allows hosts that trip events to be tracked/logged
* Unique Rule IDs for every Snort rule and new printout code make
machine processing of Snort output much easier
* Enhanced cross-reference data with alerts
* Classifications and Priorities added to rules language
* ARP spoofing detection
* "IP" is now a supported protocol type in the Snort rules language
* Back Orifice detection plugin
* Telnet normalization plugin defeats telnet and ftp evasion techniques
* RPC normalization plugin defeats RPC fragmentation evasion techniques
* CSV format output plugin
* "uricontent" keyword allows HTTP traffic to be searched for data in
the URI field only
* 802.1Q decoder support
* linux_sll decoder support
* tcp window detection plugin
* same IP detection plugin
* -T switch to test Snort config before running
* -y switch to add year to timestamps
* -I switch to print interface name in Snort alerts
* -G switch for backawards compatability with old cross-reference lookup
progs
* -L switch for naming the -b binary output file
* -k switch to tune checksum verification routines
* -z switch to run the rules engine in stateful mode (with stream4)

Additionally, there were a ton of fixes and development in the rest of
the code, and the spo_xml and spo_database routines have matured over
the past 6 months as well.

The full Changelog can be seen at http://www.snort.org/Changelog.htm for
the changes since 1.7 was released last January.

I'd like to thank Fyodor Yarochkin, Brian Caswell, Phil Wood, Jed
Pickel, Roman Danyliw, Dragos Ruiu, Jim Forster, Max Vision, the Silicon
Defense gang, Chris Cramer, Eugene Tsyrklevich, Chris Green, HD Moore,
DrSuse, Jeff Nathan and the whole gang on #snort for helping to make it
happen.

Happy Snorting!

     -Marty

--
Martin Roesch
roesch () sourcefire com
http://www.sourcefire.com - http://www.snort.org

_______________________________________________
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
From: Dragos Ruiu <dr () kyx net>
Organization: kyx.net
To: snort-users () lists sourceforge net
Date: Tue, 10 Jul 2001 01:22:33 -0700
Subject: [Snort-users] spp_defrag.c v1.5


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

A memory leak in fraginsert fixed.
Trees optimized...

--dr

--Boundary-=_OHgFmrodmvMZabMJiPkVOHQdWbIN
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

ZGVmcmFnIHYxLjUgLSAxMCBKdWx5IDIwMDEKICogCiAqIFB1cnBvc2U6IElQIGRlZnJhZ21lbnRh

dGlvbiBwcmVwcm9jZXNzb3IKICogQXV0aG9yOiAgRHJhZ29zIFJ1aXUgKGRyQGR1cnNlYy5jb20v

ZHJAdi13YXZlLmNvbSkKICogQWNrbm93bGVkZ2VtZW50czogICAgQ29kZSBza2VsZXRvbiBmcm9t

IGRpcGhlbkBhZ2l0YXRpb24ubmV0CiAqICAgICAgICAgICAgICAgICAgVGhlcmUncyBhIGdvb2Qg

cGFwZXIgYWJvdXQgc3BsYXkgdHJlZXMKICogICAgICAgICAgICAgICAgICBieSB0aGUgZGV2ZWxv

cGVyIGFuZCB0aGV5IHJvY2suCiAqICAgICAgICAgICAgICAgICAgTWFydHkgUm9lc2NoKHJvZXNj

aEBtZC5wcmVzdGlnZS5uZXQpCiAqICAgICAgICAgICAgICAgICAgYW5kIFJvbiBHdWxhKHJndWxh

QG5ldHdvcmtzZWN1cml0eXdpemFyZHMuY29tKQogKiAgICAgICAgICAgICAgICAgIGhlbHBlZCBh

bmQgZGlkIHNvbWV0aGluZyBmZXcgaW4gdGhlIHNlY3VyaXR5CiAqICAgICAgICAgICAgICAgICAg

Y29tbXVuaXR5IGRvLCBzaGFyZWQga25vd2xlZGdlLiAgVGhhbmtzLgogKgogKiBub3RlczoKICog

ICAgICAgICAgICBUaGlzIGRlZnJhZ2dlciBpbXBsZW1lbnRhdGlvbiBkaWZmZXJzIGZyb20gdGhl

IHVzdWFsCiAqICAgICAgICAgICAgaGFzaCB0YWJsZSBhbmQgbGlua2VkIGxpc3QgdGVjaG5pcXVl

IGluIHRoYXQgaXQgdXNlcwogKiAgICAgICAgICAgIHNlbGYgY2FjaGluZyBzcGxheSB0cmVlcy4g

TXkgaHlwb3RoZXNpcyBpcyB0aGF0IHRoaXMKICogICAgICAgICAgICBwcm92aWRlcyBzdWJzdGFu

dGlhbCBwZXJmb3JtYW5jZSBpbXByb3ZlbWVudHMuICBJCiAqICAgICAgICAgICAgaG9wZSB0aGlz

IG1vZHVsZSB3aWxsIGJlIGFibGUgdG8gZGVtb25zdHJhdGUgb3IgZGVidW5rCiAqICAgICAgICAg

ICAgdGhpcyBoeXBvdGhlc2lzLiAKICogCiAqIFNwbGF5IFRyZWU6CiAqIGBBIHNlbGYtb3JnYW5p

emluZyBkYXRhIHN0cnVjdHVyZSB3aGljaCB1c2VzIHJvdGF0aW9ucyB0byBtb3ZlIGFuCiAqICBh

Y2Nlc3NlZCBrZXkgdG8gdGhlIHJvb3QuIFRoaXMgbGVhdmVzIHJlY2VudGx5IGFjY2Vzc2VkIG5v

ZGVzIG5lYXIKICogIHRoZSB0b3Agb2YgdGhlIHRyZWUsIG1ha2luZyB0aGVtIHZlcnkgcXVpY2ts

eSBzZWFyY2hhYmxlIChTa2llbmEgMTk5NywgcC4gMTc3KS4gCiAqIAogKiBBbGwgc3BsYXkgdHJl

ZSBvcGVyYXRpb25zIHJ1biBpbiBPKGxvZyBuKSB0aW1lIF9vbl9hdmVyYWdlXywgd2hlcmUgbiBp

cyB0aGUKICogbnVtYmVyIG9mIGl0ZW1zIGluIHRoZSB0cmVlLCBhc3N1bWluZyB5b3Ugc3RhcnQg

d2l0aCBhbiBlbXB0eSB0cmVlLiAgQW55IHNpbmdsZQogKiBvcGVyYXRpb24gY2FuIHRha2UgVGhl

dGEobikgdGltZSBpbiB0aGUgd29yc3QtY2FzZSwgYnV0IG9wZXJhdGlvbnMgc2xvd2VyIHRoYW4K

ICogTyhsb2cgbikgdGltZSBoYXBwZW4gcmFyZWx5IGVub3VnaCB0aGF0IHRoZXkgZG9uJ3QgYWZm

ZWN0IHRoZSBhdmVyYWdlLgogKiAKICogQWx0aG91Z2ggMi0zLTQgdHJlZXMgbWFrZSBhIHN0cm9u

Z2VyIGd1YXJhbnRlZSAoX2V2ZXJ5XyBvcGVyYXRpb24gb24gYSAyLTMtNAogKiB0cmVlIHRha2Vz

IE8obG9nIG4pIHRpbWUpLCBzcGxheSB0cmVlcyBoYXZlIHNldmVyYWwgYWR2YW50YWdlcy4gIFNw

bGF5IHRyZWVzCiAqIGFyZSBzaW1wbGVyIGFuZCBlYXNpZXIgdG8gcHJvZ3JhbSwgYW5kIHRoZXkg

Y2FuIHRha2UgYWR2YW50YWdlIG9mIGNpcmN1bXN0YW5jZXMKICogaW4gd2hpY2ggbG90cyBvZiBm

aW5kIG9wZXJhdGlvbnMgb2NjdXIgb24gYSBzbWFsbCBudW1iZXIgb2YgaXRlbXMuICBCZWNhdXNl

IG9mCiAqIHRoZWlyIHNpbXBsaWNpdHksIHNwbGF5IHRyZWUgaW5zZXJ0aW9ucyBhbmQgZGVsZXRp

b25zIGFyZSB0eXBpY2FsbHkgZmFzdGVyIGluCiAqIHByYWN0aWNlIChzb21ldGltZXMgYnkgYSBj

b25zdGFudCBmYWN0b3IsIHNvbWV0aW1lcyBhc3ltcHRvdGljYWxseSkuICBGaW5kCiAqIG9wZXJh

dGlvbnMgY2FuIGJlIGZhc3RlciBvciBzbG93ZXIsIGRlcGVuZGluZyBvbiBjaXJjdW1zdGFuY2Vz

LiAgU3BsYXkgdHJlZXMKICogcmVhbGx5IGV4Y2VsIGluIGFwcGxpY2F0aW9ucyB3aGVyZSBhIGZy

YWN0aW9uIG9mIHRoZSBpdGVtcyBhcmUgdGhlIHRhcmdldHMgb2YKICogbW9zdCBvZiB0aGUgZmlu

ZCBvcGVyYXRpb25zLCBiZWNhdXNlIHRoZXkncmUgZGVzaWduZWQgdG8gZ2l2ZSBlc3BlY2lhbGx5

IGZhc3QKICogYWNjZXNzIHRvIGl0ZW1zIHRoYXQgaGF2ZSBiZWVuIGFjY2Vzc2VkIHJlY2VudGx5

LgogKgogKiBhIGdvb2QgcmVmZXJlbmNlIG9uIHNwbGF5IHRyZWVzIGlzOgogKiBodHRwOi8vd3d3

LmNzLnVtYmMuZWR1L2NvdXJzZXMvdW5kZXJncmFkdWF0ZS8zNDEvZmFsbDk4L2ZyZXkvQ2xhc3NO

b3Rlcy9DbGFzczE3L3NwbGF5Lmh0bWwKICogCiAqIFJlZmVyZW5jZXMgCiAqIFNraWVuYSwgUy4g

Uy4gVGhlIEFsZ29yaXRobSBEZXNpZ24gTWFudWFsLiBOZXcgWW9yazogU3ByaW5nZXItVmVybGFn

LCBwcC4gMTc3IGFuZCAxNzksIDE5OTcuIAogKiBTbGVhdG9yLCBELiBhbmQgVGFyamFuLCBSLiAi

U2VsZi1BZGp1c3RpbmcgQmluYXJ5IFNlYXJjaCBUcmVlcy4iIEouIEFDTSAzMiwgNjUyLTY4Niwg

MTk4NS4gCiAqIFRhcmphbiwgUi4gRGF0YSBTdHJ1Y3R1cmVzIGFuZCBOZXR3b3JrIEFsZ29yaXRo

bXMuIFBoaWxhZGVscGhpYSwgUEE6IFNJQU0gUHJlc3MsIDE5ODMuIAogKiBXb29kLCBELiBEYXRh

IFN0cnVjdHVyZXMsIEFsZ29yaXRobXMsIGFuZCBQZXJmb3JtYW5jZS4gUmVhZGluZywgTUE6IEFk

ZGlzb24tV2VzbGV5LCAxOTkzLiAKICogCiAqLwoKLyogQ2hhbmdlbG9nLi4uLgoqICAxNi8wNi8w

MSB2MS4xIC0tZHIKKiAgICAgICAgICBGaXhlZCByZWFzc2VtYmxlZGdyYW0gaXAgbGVuZ3RoIHRv

IGluY2x1ZGUgSVAgaGVhZGVyCioJICAgKFRoYW5rcyBBYXJvbiBSaWNoYXJkIFdhbHRlcnMgPGF3

YWx0ZXJzQG5kLmVkdT4gZm9yIHRyYWNraW5nIHRoaXMgZG93bikKKgkgICBSZWRpZCB0aW1lb3V0

IGZsdXNoaW5nIGFuZCBnYXJiYWdlIHN3ZWVwaW5nLgoqCSAgIE5ldyBhbGdvcml0aG0gdXNlcyBw

cm9ncnNzaXZlbHkgbW9yZSBhZ2dyZXNzaXZlIHRpbWVvdXRzCiogICAgICAgICAgYXMgbWVtIHV0

aWxpemF0aW9uIGFwcHJvYWNoZXMgfjMyTWIgaGFyZCBsaW1pdC4KKgkgICBBbHNvIGZsdXNoZXMg

cmVsYXRlZCBmcmFnbWVudHMgdG9nZXRoZXIuCiogIDE3LzA2LzAxIHYxLjIgLS1kcgoqCSAgIFBz

ZXVkb3JhbmRvbSBzcGxheSB0cmVlIGJhbGFuY2luZyBhZGRlZC4KKiAgMjgvMDYvMDYgdjEuMyAt

LWRyCioJICAgTWVtb3J5IGhhcmQgbGltaXQgYWRkZWQKKiAgMjgvMDYvMDYgdjEuNCAtLWRyCioJ

ICAgQ29ybmVyIGNhc2UgbWVtb3J5IGxlYWsgZml4ZWQuCiogIDI4LzA2LzA2IHYxLjRjIC0tZHIK

KgkgICBtb3JlIGFnZ3Jlc3NpdmUgb3V0IG9mIG1lbW9yeSBjbGVhbnVwCiogIDI4LzA2LzA2IHYx

LjUgLS1kcgoqCSAgIG1vcmUgbWVtb3J5IGxlYWtzIGZpeGVkCiovCgojaW5jbHVkZSA8cGNhcC5o

PgojaW5jbHVkZSAiZGVjb2RlLmgiCgovKiBXYXJuaW5nIHRoZXNlIGFyZSBvbmx5IHZhbGlkIGZv

ciBJUHY0CiAgIGFsc28gbm90ZSB0aGF0IHRoZXNlIGFyZSBzdGlsbCAKICAgaW4gcmF3IG5ldHdv

cmsgb3JkZXIgKHNlZSBodG9ucykgIAogICBhbmQgdGhlc2UgbWF5IGZhaWwgb24gNjQgYml0IG1h

Y2hpbmVzIAoqLwojZGVmaW5lIElEKHgpICAgICAgICooKHVfaW50MTZfdCAqKSgodV9pbnQ4X3Qg

Kil4LT5pcGgrNCkpCiNkZWZpbmUgUFJPVE8oeCkgICAgKigodV9pbnQ4X3QgKil4LT5pcGgrOSkK

I2RlZmluZSBTQUREUih4KSAgICAoIHgtPmlwaC0+aXBfc3JjLnNfYWRkciApCiNkZWZpbmUgREFE

RFIoeCkgICAgKCB4LT5pcGgtPmlwX2RzdC5zX2FkZHIgKQojZGVmaW5lIERBVEEoeCkgICAgICgo

dV9pbnQ4X3QgKil4LT5pcGgrMjApCgovKiBVaC1vaCBob3BlIHRoaXMgd2llcmRuZXNzIGlzIHJp

Z2h0IDotKSAqLwojZGVmaW5lIEZPRkYoeCkgICAgICh1X2ludDMyX3QpKCh4LT5mcmFnX29mZnNl

dCk8PDMpCiNkZWZpbmUgREYoeCkgICAgICAgKHgtPmRmKQojZGVmaW5lIE1GKHgpICAgICAgICh4

LT5tZikKCgovKiBmcmFnbWVudCBJRCBzdHJ1Y3R1cmUgICovCnR5cGVkZWYgUGFja2V0ICpmcmFn

OwoKdHlwZWRlZiBzdHJ1Y3QgdHJlZV9ub2RlIFRyZWU7CnN0cnVjdCB0cmVlX25vZGUKewogICAg

VHJlZSAqIGxlZnQsICogcmlnaHQ7CiAgICBmcmFnIGtleTsKfTsKClRyZWUgKmZyb290OwoKCi8q

IEdhcmJhZ2UgY29sbGVjdGlvbiBzdGFjayAobGlua2VkIGxpc3QpICovCgp0eXBlZGVmIHN0cnVj

dCBsaXN0X25vZGUgTGlzdDsKc3RydWN0IGxpc3Rfbm9kZQp7CglMaXN0ICogbmV4dDsKCWZyYWcg

a2V5Owp9OwoKTGlzdCAqZ2FyYmFnZWxpc3Q7CmNoYXIgdHJhc2hlamVjdHNwaW5sb2NrOwoJCgov

KiAgVGhlc2UgbmV4dCBkZWNsYXJhdGlvbnMgYXJlIGZvciB0aGUgZnJhZ21lbnQgdGltZW91dCBh

bmQgCiAgICBhbmQgY2xlYW51cC9zd2VlcGluZyBwcm9jZXNzLi4uIHRpbWUgbWF0aCByb3V0aW5l

cyBhcmUgZnJvbQogICAgYW4gb2JzY3VyZSBwaWVjZSBvZiBvbGQgY29kZSBmb3IgYSBkZWZ1bmN0

IHZpZGVvIGNhbWVyYSBwcm9kdWN0CiovCgojZGVmaW5lIEZSQUdUSU1FT1VUU0VDICAgICAgMTAg

ICAgICAvKiAxMCBzZWNvbmRzIGxldCdzIHBsYXkgc2FmZSBmb3Igbm93ICovCiNkZWZpbmUgRlJB

R1RJTUVPVVRVU0VDICAgICAgMCAgICAgIC8qIDAgbWljcm8gc2Vjb25kcyAgICAgICAgICAgICAg

ICAgICovCiNkZWZpbmUgTUVNSEFSRExJTSAgICAgCSAgMzIwMDAwMDAgIC8qIG1lbW9yeSBoYXJk

bGltaXQgdGhyZXNob2xkICovCgppbnQgZnJhZ21lbXVzZTsKLyogdGhlIHBhY2tldCB0aW1lb3V0

IC8gZ2FyYmFnZSBjb2xsZWN0aW9uIHN0dWZmICAqLwoKaW50IHNwYWNlYWxlcnQ7ICAvKiB1c2Vy

IGFscmVhZHkgYWxlcnRlZCBhYm91dCBjb25kaXRpb24gKi8KCnR5cGVkZWYgc3RydWN0IF90aW1l

c3RydWN0CnsKICAgIHVfaW50MzJfdCB0dl9zZWM7CiAgICB1X2ludDMyX3QgdHZfdXNlYzsKfSB0

aW1lX3N0cnVjdDsKCnRpbWVfc3RydWN0IGZyYWd0aW1lb3V0Owp0aW1lX3N0cnVjdCBsYXN0X2Zy

YWdfdGltZTsKdGltZV9zdHJ1Y3QgdGltZWNoZWNrOwoKCgovKioqKioqVGltZXN0YW1wIFJvdXRp

bmVzKioqKioqLwoKI2RlZmluZSBUSU1FX0xUKHgseSkgKHggdHZfc2VjPHkgdHZfc2VjfHwoeCB0

dl9zZWM9PXkgdHZfc2VjJiZ4IHR2X3VzZWM8eSB0dl91c2VjKSkKCnZvaWQgYWRkdGltZSh0aW1l

X3N0cnVjdCAqb3AxLCB0aW1lX3N0cnVjdCAqb3AyLCB0aW1lX3N0cnVjdCAqcmVzdWx0KQp7CiAg

ICByZXN1bHQtPnR2X3VzZWMgPSBvcDEtPnR2X3VzZWMrb3AyLT50dl91c2VjOwogICAgaWYocmVz

dWx0LT50dl91c2VjID4gOTk5OTk5KQogICAgewogICAgICAgIHJlc3VsdC0+dHZfdXNlYyAtPSAx

MDAwMDAwOwogICAgICAgIG9wMS0+dHZfc2VjKys7CiAgICB9CiAgICByZXN1bHQtPnR2X3NlYyA9

IG9wMS0+dHZfc2VjK29wMi0+dHZfc2VjOwp9CgoKCi8qKioqKioqKipNZW1vcnkgbWFuZ2VtZW50

KioqKioqKioqKi8Kdm9pZCAqRGVmcmFnQWxsb2ModW5zaWduZWQgbG9uZyBzaXplKQp7CiAgICB2

b2lkICp0bXA7CgogICAgZnJhZ21lbXVzZSArPSBzaXplOwoKICAgIHRtcCA9ICh2b2lkICopIGNh

bGxvYyhzaXplLCBzaXplb2YoY2hhcikpOwoKICAgIGlmKHRtcCA9PSBOVUxMKQogICAgewogICAg

ICAgIEZhdGFsRXJyb3IoInNwcF9kZWZyYWc6IFVuYWJsZSB0byBhbGxvY2F0ZSBtZW1vcnkhICIK

ICAgICAgICAgICAgICAgICAgICIoJWx1IGJ5dGVzIGluIHVzZSlcbiIsIGZyYWdtZW11c2UpOwog

ICAgfQoKICAgIHJldHVybiB0bXA7Cn0KCgoKCi8qKioqKipTcGxheSBUcmVlIFN0dWZmKioqKioq

LwoKLyogRnVuY3Rpb246IGZyYWdjb21wYXJlKGksaikgICAgICAgICAgICAgICAgICAgICAgICAg

ICAgKi8KLyogVGhpcyBpcyB0aGUgc3BsYXkgdHJlZSBjb21wYXJpc29uLiAgICAgICAgICAgKi8K

LyogUmV0dXJucyAxIGlmIGk+ajsgMCBpZiBpPWo7IC0xIGlmIGk8ajsgICAgICAgKi8KCmludCBm

cmFnY29tcGFyZShpLGopCmZyYWcgaSxqOwp7CiAgICBpZighaikKICAgIHsKICAgICAgICBpZigh

aSkKICAgICAgICAgICAgcmV0dXJuKDApOwogICAgICAgIGVsc2UKICAgICAgICAgICAgcmV0dXJu

KDEpOwogICAgfQogICAgZWxzZQogICAgewogICAgICAgIGlmKCF0cmFzaGVqZWN0c3BpbmxvY2sg

JiYgVElNRV9MVCh0aW1lY2hlY2suICwgai0+cGt0aC0+dHMuICkpCgl7ICAvKiBienp0IHlvdSBs

b3NlLi4uIHRvbyBtdWNoIHRpbWUuLi4uIHRoZSBhbnN3ZXIgaXMuLi4uICovCgkJLyogdG9zcyB0

aGF0IHB1cHB5IGxhdGVyIGJ5IGFkZGluZyBpdCB0byBnYXJiYWdlbGlzdCAqLwoJCUxpc3QgKm5l

dzsKCQluZXcgPSAoTGlzdCAqKSBEZWZyYWdBbGxvYyhzaXplb2YoTGlzdCkpOwoJCW5ldy0+bmV4

dCA9IGdhcmJhZ2VsaXN0OwoJCW5ldy0+a2V5ID0gajsKCQlnYXJiYWdlbGlzdCA9IG5ldzsKCgl9

IAogICAgICAgIGlmKCFpKQogICAgICAgICAgICByZXR1cm4oLTEpOwogICAgfQogICAgaWYoai0+

aXBoID09IE5VTEwpCiAgICB7CiAgICAgICAgaWYoaS0+aXBoID09IE5VTEwpCiAgICAgICAgewog

ICAgICAgICAgICByZXR1cm4gMDsKICAgICAgICB9CiAgICAgICAgZWxzZQogICAgICAgIHsKICAg

ICAgICAgICAgcmV0dXJuIDE7CiAgICAgICAgfQogICAgfQogICAgZWxzZQogICAgewogICAgICAg

IGlmKGktPmlwaCA9PSBOVUxMKQogICAgICAgIHsKICAgICAgICAgICAgcmV0dXJuIC0xOwogICAg

ICAgIH0KICAgIH0KCiAgICBpZihTQUREUihpKSA+IFNBRERSKGopKQogICAgewogICAgICAgIHJl

dHVybigxKTsKICAgIH0KICAgIGVsc2UgaWYoU0FERFIoaSkgPCBTQUREUihqKSkKICAgIHsKICAg

ICAgICByZXR1cm4oLTEpOwogICAgfQogICAgZWxzZSBpZihEQUREUihpKSA+IERBRERSKGopKQog

ICAgewogICAgICAgIHJldHVybigxKTsKICAgIH0KICAgIGVsc2UgaWYoREFERFIoaSkgPCBEQURE

UihqKSkKICAgIHsKICAgICAgICByZXR1cm4oLTEpOwogICAgfQogICAgZWxzZSBpZihQUk9UTyhp

KSA+IFBST1RPKGopKQogICAgewogICAgICAgIHJldHVybigxKTsKICAgIH0KICAgIGVsc2UgaWYo

UFJPVE8oaSkgPCBQUk9UTyhqKSkKICAgIHsKICAgICAgICByZXR1cm4oLTEpOwogICAgfQogICAg

ZWxzZSBpZihJRChpKSA+IElEKGopKQogICAgewogICAgICAgIHJldHVybigxKTsKICAgIH0KICAg

IGVsc2UgaWYoSUQoaSkgPCBJRChqKSkKICAgIHsKICAgICAgICByZXR1cm4oLTEpOwogICAgfQog

ICAgZWxzZSBpZigoaS0+ZnJhZ19vZmZzZXQpPDwzID4gKGotPmZyYWdfb2Zmc2V0KTw8MykKICAg

IHsKICAgICAgICByZXR1cm4oMSk7CiAgICB9CiAgICBlbHNlIGlmKChpLT5mcmFnX29mZnNldCk8

PDMgPCAoai0+ZnJhZ19vZmZzZXQpPDwzKQogICAgewogICAgICAgIHJldHVybigtMSk7CiAgICB9

CiAgICBlbHNlIGlmKGktPmRzaXplID4gai0+ZHNpemUpCiAgICB7CiAgICAgICAgcmV0dXJuKDEp

OwogICAgfQogICAgZWxzZSBpZihpLT5kc2l6ZSA8IGotPmRzaXplKQogICAgewogICAgICAgIHJl

dHVybigtMSk7CiAgICB9CiAgICByZXR1cm4oMCk7Cn0KCgovKiBGdW5jdGlvbjogZnJhZ3NwbGF5

KGksIHQpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KLyogU3BsYXkgdXNpbmcgdGhl

IGtleSBpICh3aGljaCBtYXkgb3IgbWF5IG5vdCBiZSBpbiB0aGUgdHJlZS4pICovCi8qIFRoZSBz

dGFydGluZyByb290IGlzIHQsIHNpemUgZmllbGRzIGFyZSBtYWludGFpbmVkICAgICAgICAgICAg

Ki8KClRyZWUgKmZyYWdzcGxheShmcmFnIGksIFRyZWUgKnQpIAp7CiAgICBUcmVlIE4sICpsLCAq

ciwgKnk7CiAgICBpbnQgY29tcDsKICAgIGlmKCF0KSByZXR1cm4gdDsKICAgIE4ubGVmdCA9IE4u

cmlnaHQgPSBOVUxMOwogICAgbCA9IHIgPSAmTjsKCiAgICBmb3IoOzspCiAgICB7CiAgICAgICAg

Y29tcCA9IGZyYWdjb21wYXJlKGksIHQtPmtleSk7CiAgICAgICAgaWYoY29tcCA8IDApCiAgICAg

ICAgewogICAgICAgICAgICBpZighdC0+bGVmdCkgYnJlYWs7CiAgICAgICAgICAgIGlmKGZyYWdj

b21wYXJlKGksIHQtPmxlZnQtPmtleSkgPCAwKQogICAgICAgICAgICB7CiAgICAgICAgICAgICAg

ICB5ID0gdC0+bGVmdDsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiByb3RhdGUgcmlnaHQg

Ki8KICAgICAgICAgICAgICAgIHQtPmxlZnQgPSB5LT5yaWdodDsKICAgICAgICAgICAgICAgIHkt

PnJpZ2h0ID0gdDsKICAgICAgICAgICAgICAgIHQgPSB5OwogICAgICAgICAgICAgICAgaWYoIXQt

PmxlZnQpIGJyZWFrOwogICAgICAgICAgICB9CiAgICAgICAgICAgIHItPmxlZnQgPSB0OyAgICAg

ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBsaW5rIHJpZ2h0ICovCiAgICAgICAgICAgIHIg

PSB0OwogICAgICAgICAgICB0ID0gdC0+bGVmdDsKICAgICAgICB9CiAgICAgICAgZWxzZSBpZihj

b21wID4gMCkKICAgICAgICB7CiAgICAgICAgICAgIGlmKCF0LT5yaWdodCkgYnJlYWs7CiAgICAg

ICAgICAgIGlmKGZyYWdjb21wYXJlKGksIHQtPnJpZ2h0LT5rZXkpID4gMCkKICAgICAgICAgICAg

ewogICAgICAgICAgICAgICAgeSA9IHQtPnJpZ2h0OyAgICAgICAgICAgICAgICAgICAgICAgICAg

Lyogcm90YXRlIGxlZnQgKi8KICAgICAgICAgICAgICAgIHQtPnJpZ2h0ID0geS0+bGVmdDsKICAg

ICAgICAgICAgICAgIHktPmxlZnQgPSB0OwogICAgICAgICAgICAgICAgdCA9IHk7CiAgICAgICAg

ICAgICAgICBpZighdC0+cmlnaHQpIGJyZWFrOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGwt

PnJpZ2h0ID0gdDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBsaW5rIGxlZnQgKi8K

ICAgICAgICAgICAgbCA9IHQ7CiAgICAgICAgICAgIHQgPSB0LT5yaWdodDsKICAgICAgICB9CiAg

ICAgICAgZWxzZQogICAgICAgIHsKICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgfQogICAgfQog

ICAgbC0+cmlnaHQgPSByLT5sZWZ0ID0gTlVMTDsKCiAgICBsLT5yaWdodCA9IHQtPmxlZnQ7ICAg

ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBhc3NlbWJsZSAqLwogICAgci0+bGVmdCA9

IHQtPnJpZ2h0OwogICAgdC0+bGVmdCA9IE4ucmlnaHQ7CiAgICB0LT5yaWdodCA9IE4ubGVmdDsK

CiAgICByZXR1cm4gdDsKfQoKLyogRnVuY3Rpb246IFRyZWUgKiBmcmFnaW5zZXJ0KGZyYWcgaSwg

VHJlZSAqIHQpICAgICAgICAgICAgICovCi8qIEluc2VydCBmcmFnIGkgaW50byB0aGUgdHJlZSB0

LCBpZiBpdCBpcyBub3QgYWxyZWFkeSB0aGVyZS4gICAgICAgKi8KLyogUmV0dXJuIGEgcG9pbnRl

ciB0byB0aGUgcmVzdWx0aW5nIHRyZWUuICAgICAgICAgICAgICAgICAgICAgICAgICovCgpUcmVl

ICpmcmFnaW5zZXJ0KGZyYWcgaSwgVHJlZSAqIHQpCnsKICAgIFRyZWUgKiBuZXdfdHJlZV9ub2Rl

OwogICAgaWYodCkKICAgIHsKICAgICAgICB0ID0gZnJhZ3NwbGF5KGksdCk7CiAgICAgICAgaWYo

ZnJhZ2NvbXBhcmUoaSwgdC0+a2V5KT09MCkKICAgICAgICB7CiAgICAgICAgICAgIHJldHVybiB0

OyAgLyogaXQncyBhbHJlYWR5IHRoZXJlICovCiAgICAgICAgfQogICAgfQoKICAgIG5ld190cmVl

X25vZGUgPSAoVHJlZSAqKSBEZWZyYWdBbGxvYyAoc2l6ZW9mIChUcmVlKSk7CgogICAgaWYoIW5l

d190cmVlX25vZGUgfHwgZnJhZ21lbXVzZSA+IE1FTUhBUkRMSU0pCiAgICB7CiAgICAgICAgRXJy

b3JNZXNzYWdlKCJSYW4gb3V0IG9mIHNwYWNlXG4iKTsKICAgICAgICBzcGFjZWFsZXJ0Kys7Cglp

ZihuZXdfdHJlZV9ub2RlKQoJewoJCWZyYWdtZW11c2UgLT0gc2l6ZW9mKFRyZWUpOwoJCWZyZWUo

bmV3X3RyZWVfbm9kZSk7Cgl9CiAgICAgICAgcmV0dXJuKHQpOwogICAgfQoKICAgIC8qIGFsZXJ0

IGh5c3RlcmlzaXMoPykgKi8KICAgIGlmIChzcGFjZWFsZXJ0KQogICAgICAgIHNwYWNlYWxlcnQg

LT0gKCh1bnNpZ25lZCBpbnQpc3BhY2VhbGVydCkgPj4gMTsKICAgIGlmIChzcGFjZWFsZXJ0IDwg

MCkKICAgICAgICBzcGFjZWFsZXJ0ID0gMDsKICAgIGlmKCF0KQogICAgewogICAgICAgIG5ld190

cmVlX25vZGUtPmxlZnQgPSBuZXdfdHJlZV9ub2RlLT5yaWdodCA9IE5VTEw7CiAgICB9CiAgICBl

bHNlCiAgICAgICAgaWYoZnJhZ2NvbXBhcmUoaSwgdC0+a2V5KSA8IDApCiAgICAgICAgewogICAg

ICAgICAgICBuZXdfdHJlZV9ub2RlLT5sZWZ0ID0gdC0+bGVmdDsKICAgICAgICAgICAgbmV3X3Ry

ZWVfbm9kZS0+cmlnaHQgPSB0OwogICAgICAgICAgICB0LT5sZWZ0ID0gTlVMTDsKICAgICAgICB9

CiAgICAgICAgZWxzZQogICAgICAgIHsKICAgICAgICAgICAgbmV3X3RyZWVfbm9kZS0+cmlnaHQg

PSB0LT5yaWdodDsKICAgICAgICAgICAgbmV3X3RyZWVfbm9kZS0+bGVmdCA9IHQ7CiAgICAgICAg

ICAgIHQtPnJpZ2h0ID0gTlVMTDsKICAgICAgICB9CiAgICBuZXdfdHJlZV9ub2RlLT5rZXkgPSBp

OwogICAgcmV0dXJuIG5ld190cmVlX25vZGU7Cn0KCi8qIEZ1bmN0aW9uOiBUcmVlICogZnJhZ2Rl

bGV0ZShmcmFnIGksIFRyZWUgKnQpICAgICAgICovCi8qIERlbGV0ZXMgaSBmcm9tIHRoZSB0cmVl

IGlmIGl0J3MgdGhlcmUuICAgICAgICAgICAgICAgKi8KLyogUmV0dXJuIGEgcG9pbnRlciB0byB0

aGUgcmVzdWx0aW5nIHRyZWUuICAgICAgICAgICAgICAqLwoKVHJlZSAqZnJhZ2RlbGV0ZShmcmFn

IGksIFRyZWUgKnQpCnsKICAgIFRyZWUgKiB4OwoKICAgIGlmKCF0KSByZXR1cm4gTlVMTDsKICAg

IHQgPSBmcmFnc3BsYXkoaSx0KTsKICAgIGlmKGZyYWdjb21wYXJlKGksIHQtPmtleSkgPT0gMCkK

ICAgIHsgICAgICAgICAgICAgICAvKiBmb3VuZCBpdCAqLwogICAgICAgIGlmKCF0LT5sZWZ0KQog

ICAgICAgIHsKICAgICAgICAgICAgeCA9IHQtPnJpZ2h0OwogICAgICAgIH0KICAgICAgICBlbHNl

CiAgICAgICAgewogICAgICAgICAgICB4ID0gZnJhZ3NwbGF5KGksIHQtPmxlZnQpOwogICAgICAg

ICAgICB4LT5yaWdodCA9IHQtPnJpZ2h0OwogICAgICAgIH0KCiAgICAgICAgaWYodC0+a2V5ICE9

IE5VTEwpCiAgICAgICAgewogICAgICAgICAgICBmcmFnbWVtdXNlIC09IHNpemVvZihQYWNrZXQp

OwogICAgICAgICAgICBmcmVlKHQtPmtleSk7CiAgICAgICAgfQoKICAgICAgIAlmcmFnbWVtdXNl

IC09IHNpemVvZihUcmVlKTsKCWZyZWUodCk7CgogICAgICAgIHJldHVybiB4OwogICAgfQogICAg

ZWxzZQogICAgewogICAgICAgIHJldHVybiB0OyAgICAgICAgICAgICAgICAgICAgICAgICAvKiBJ

dCB3YXNuJ3QgdGhlcmUgKi8KICAgIH0KfQovKioqKioqU25vcnQgU3R1ZmYqKioqKiovCgovKgog

KiBGdW5jdGlvbjogU2V0dXBEZWZyYWcoKQogKiBQdXJwb3NlOgogKiBSZWdpc3RlcnMgdGhlIHBy

ZXByb2Nlc3NvciBrZXl3b3JkIGFuZCBpbml0aWFsaXphdGlvbiBmdW5jdGlvbgogKiBpbnRvIHRo

ZSBwcmVwcm9jZXNzb3IgbGlzdC4gIFRoaXMgaXMgdGhlIGZ1bmN0aW9uIHRoYXQgZ2V0cyBjYWxs

ZWQgZnJvbQogKiBJbml0UHJlcHJvY2Vzc29ycygpIGluIHBsdWdiYXNlLmMuCiAqIEFyZ3VtZW50

czogTm9uZS4KICogUmV0dXJuczogdm9pZCBmdW5jdGlvbgogKi8Kdm9pZCBTZXR1cERlZnJhZygp

CnsKICAgIFJlZ2lzdGVyUHJlcHJvY2Vzc29yKCJkZWZyYWciLCBEZWZyYWdJbml0KTsKfQoKLyoK

ICogRnVuY3Rpb246IERlZnJhZ0luaXQodV9jaGFyICopCiAqIFB1cnBvc2U6CiAqIENhbGxzIHRo

ZSBhcmd1bWVudCBwYXJzaW5nIGZ1bmN0aW9uLCBwZXJmb3JtcyBmaW5hbCBzZXR1cCBvbiBkYXRh

CiAqIHN0cnVjdHMsIGxpbmtzIHRoZSBwcmVwcm9jIGZ1bmN0aW9uIGludG8gdGhlIGZ1bmN0aW9u

IGxpc3QuCiAqIEFyZ3VtZW50czogYXJncyA9PiBwdHIgdG8gYXJndW1lbnQgc3RyaW5nCiAqIFJl

dHVybnM6IHZvaWQgZnVuY3Rpb24KICovCnZvaWQgRGVmcmFnSW5pdCh1X2NoYXIgKmFyZ3MpCnsK

ICAgIEFkZEZ1bmNUb1ByZXByb2NMaXN0KFByZXByb2NEZWZyYWcpOwoKICAgIGZyb290ID0gTlVM

TDsgIC8qIGluaXRpYWxpemUgZW1wdHkgZnJhZ21lbnQgdHJlZSAqLwogICAgZ2FyYmFnZWxpc3Qg

PSBOVUxMOyAgLyogaW5pdGlhbGl6ZSBlbXB0eSB0cmFzaCBsaXN0ICovCiAgICB0cmFzaGVqZWN0

c3BpbmxvY2sgPSBGQUxTRTsKICAgIGZyYWdtZW11c2UgPSAwOyAgICAgIC8qIE5vIG1lbW9yeSB5

ZXQgKi8KICAgIHNwYWNlYWxlcnQgPSAwOyAgICAgLyogTm8gc3BhY2UgYWxlcnRzIHlldCAqLwog

ICAgZnJhZ3RpbWVvdXQudHZfc2VjID0gRlJBR1RJTUVPVVRTRUM7CiAgICBmcmFndGltZW91dC50

dl91c2VjID0gRlJBR1RJTUVPVVRVU0VDOwp9CgoKIAovKioqKioqKioqKioqKlRyZWUgQmFsYW5j

ZSBQZXJmb3JtYW5jZSBFbmhhbmNlbWVudCoqKioqKioqKioqKioqLwogCmludCBiYWxhbmNlY29t

cGFyZShwb2ludCxqKQp1bnNpZ25lZCBpbnQgcG9pbnQ7CmZyYWcgajsKewogICAgaWYoIWopCiAg

ICB7CiAgICAgICAgcmV0dXJuKDApOwogICAgfQogICAgZWxzZQogICAgewogICAgICAgIGlmKGot

PmlwaCA9PSBOVUxMKQogICAgICAgIHsKICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgfQog

ICAgfQogICAgaWYocG9pbnQgPiBTQUREUihqKSkKICAgIHsKICAgICAgICByZXR1cm4oMSk7CiAg

ICB9CiAgICBlbHNlIGlmKHBvaW50IDwgU0FERFIoaikpCiAgICB7CiAgICAgICAgcmV0dXJuKC0x

KTsKICAgIH0KICAgIHJldHVybigwKTsKfQogCiAKLyogc2hpZnQgYmFzZWQgYml0IHJldnJzZXIg

LS1kciAqLwogCnVuc2lnbmVkIGludCBiaXRyZXYoeCkKdW5zaWduZWQgaW50IHg7CnsKdW5zaWdu

ZWQgaW50IGksIHIgPSAwOwogICAgICAgIGZvciggaSA9IDAgOyBpIDw9IHNpemVvZih1bnNpZ25l

ZCBpbnQpKjggOyBpKyspCiAgICAgICAgICAgICAgICBpZiAoIHggJiAodW5zaWduZWQgaW50KTE8

PGkgKQogICAgICAgICAgICAgICAgICAgICAgICByIHw9ICh1bnNpZ25lZCBpbnQpMTw8KChzaXpl

b2YodW5zaWduZWQgaW50KSo4KS1pLTEpOwogICAgICAgIHJldHVybiByOwp9CiAKIAovKiBGdW5j

dGlvbjogZnJhZ2JhbGFuY2UoaSwgdCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLwov

KiBTcGxheSB1c2luZyB0aGUga2V5IGkgKHdoaWNoIG1heSBvciBtYXkgbm90IGJlIGluIHRoZSB0

cmVlLikgKi8KLyogVGhlIHN0YXJ0aW5nIHJvb3QgaXMgdCwgc2l6ZSBmaWVsZHMgYXJlIG1haW50

YWluZWQgICAgICAgICAgICAqLwogClRyZWUgKmZyYWdiYWxhbmNlKHVuc2lnbmVkIGludCBiYWxh

bmNlcG9pbnQsIFRyZWUgKnQpCnsKICAgIFRyZWUgTiwgKmwsICpyLCAqeTsKICAgIGludCBjb21w

OwogICAgaWYoIXQpIHJldHVybiB0OwogICAgTi5sZWZ0ID0gTi5yaWdodCA9IE5VTEw7CiAgICBs

ID0gciA9ICZOOwogICAgZm9yKDs7KQogICAgewogICAgICAgIGNvbXAgPSBiYWxhbmNlY29tcGFy

ZShiYWxhbmNlcG9pbnQsIHQtPmtleSk7CiAgICAgICAgaWYoY29tcCA8IDApCiAgICAgICAgewog

ICAgICAgICAgICBpZighdC0+bGVmdCkgYnJlYWs7CiAgICAgICAgICAgIGlmKGJhbGFuY2Vjb21w

YXJlKGJhbGFuY2Vwb2ludCwgdC0+bGVmdC0+a2V5KSA8IDApCiAgICAgICAgICAgIHsKICAgICAg

ICAgICAgICAgIHkgPSB0LT5sZWZ0OyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHJvdGF0

ZSByaWdodCAqLwogICAgICAgICAgICAgICAgdC0+bGVmdCA9IHktPnJpZ2h0OwogICAgICAgICAg

ICAgICAgeS0+cmlnaHQgPSB0OwogICAgICAgICAgICAgICAgdCA9IHk7CiAgICAgICAgICAgICAg

ICBpZighdC0+bGVmdCkgYnJlYWs7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgci0+bGVmdCA9

IHQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGxpbmsgcmlnaHQgKi8KICAgICAg

ICAgICAgciA9IHQ7CiAgICAgICAgICAgIHQgPSB0LT5sZWZ0OwogICAgICAgIH0KICAgICAgICBl

bHNlIGlmKGNvbXAgPiAwKQogICAgICAgIHsKICAgICAgICAgICAgaWYoIXQtPnJpZ2h0KSBicmVh

azsKICAgICAgICAgICAgaWYoYmFsYW5jZWNvbXBhcmUoYmFsYW5jZXBvaW50LCB0LT5yaWdodC0+

a2V5KSA+IDApCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIHkgPSB0LT5yaWdodDsgICAg

ICAgICAgICAgICAgICAgICAgICAgIC8qIHJvdGF0ZSBsZWZ0ICovCiAgICAgICAgICAgICAgICB0

LT5yaWdodCA9IHktPmxlZnQ7CiAgICAgICAgICAgICAgICB5LT5sZWZ0ID0gdDsKICAgICAgICAg

ICAgICAgIHQgPSB5OwogICAgICAgICAgICAgICAgaWYoIXQtPnJpZ2h0KSBicmVhazsKICAgICAg

ICAgICAgfQogICAgICAgICAgICBsLT5yaWdodCA9IHQ7ICAgICAgICAgICAgICAgICAgICAgICAg

ICAgICAgLyogbGluayBsZWZ0ICovCiAgICAgICAgICAgIGwgPSB0OwogICAgICAgICAgICB0ID0g

dC0+cmlnaHQ7CiAgICAgICAgfQogICAgICAgIGVsc2UKICAgICAgICB7CiAgICAgICAgICAgIGJy

ZWFrOwogICAgICAgIH0KICAgIH0KICAgIGwtPnJpZ2h0ID0gci0+bGVmdCA9IE5VTEw7CiAKIAog

ICAgbC0+cmlnaHQgPSB0LT5sZWZ0OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyog

YXNzZW1ibGUgKi8KICAgIHItPmxlZnQgPSB0LT5yaWdodDsKICAgIHQtPmxlZnQgPSBOLnJpZ2h0

OwogICAgdC0+cmlnaHQgPSBOLmxlZnQ7CiAKICAgIHJldHVybiB0Owp9CgovKioqKioqRnJhZ21l

bnRhdGlvbiBTdHVmZioqKioqKi8KCi8qIEZ1bmN0aW9uOiBmcmFnYWRkcm1hdGNoKGksaikgICAg

ICAgICAgICAgICAgICAgICAgICAgKi8KLyogcmV0dXJucyB0cnVlIGlmIHRoZSBmcmFnbWVudHMg

YmVsb25nIHRvIHRoZSBzYW1lIHJlYXNzZW1ibHkgICAgICAqLwppbnQgZnJhZ2FkZHJtYXRjaChp

LGopCmZyYWcgaSxqOwovKiBUaGlzIGlzIHRoZSBjb21wYXJpc29uLiAgICAgICAgICAgICAgICAg

ICAgICAgICAgICAgICAgICAgKi8KLyogUmV0dXJucyAxIGlmIGkgaiBoYXZlIG1hdGNoaW5nIGFk

ZHJlc3NlcyBlbHNlIDAgICAgICAgICAgICovCnsKCiAgICBpZigoIFNBRERSKGkpID09IFNBRERS

KGopICkKICAgICAgICYmICggREFERFIoaSkgPT0gREFERFIoaikgKQogICAgICAgJiYgKCBJRChp

KSA9PSBJRChqKSApCiAgICAgICAmJiAoIFBST1RPKGkpID09IFBST1RPKGopICkpCiAgICB7CiAg

ICAgICAgcmV0dXJuKDEpOwogICAgfQoKICAgIHJldHVybigwKTsKfQoKLyoKICogRnVuY3Rpb246

IFBhY2tldCAqUmVhc3NlbWJsZUlQKGZyYWcgKmZyb290KQogKiBQdXJwb3NlOiBHZW5lcmF0ZSBh

IFBhY2tldCAqIGFuZCBwYXNzIGl0IHRvIFByb2Nlc3NQYWNrZXQsIHRoZW4gCiAqIGRlYWxsb2Nh

dGUgcGFja2V0CiAqIEFyZ3VtZW50czogZnJvb3QgLSByb290IG9mIHRoZSB0cmVlIGNvbnRhaW5p

bmcgdGhlIGxhc3QgcGFja2V0IG9mIHRoZSBmcmFtZQogKiBSZXR1cm5zOiB0cmVlIHdpdGggcmVh

c3NlbWJsZWQgZnJhZ21lbnRzIGRlbGV0ZWQKICovClRyZWUgKlJlYXNzZW1ibGVJUChUcmVlICpm

cm9vdCkKewogICAgUGFja2V0ICpwOwogICAgaW50IHdyaXRlY291bnQgPSAwOwogICAgY2hhciAq

bnA7CiAgICB1X2NoYXIgKnRtcDsKICAgIHVfaW50IHBzaXplOwogICAgdW5zaWduZWQgaW50IG92

ZXJoZWFkLCBtb3Jlb3ZlcmhlYWQ7CiAgICBJUEhkciBzbG93YXJpc2ZpeDsKICAgIEV2ZW50IGV2

ZW50OwoKICAgIGlmKGZyb290ID09IE5VTEwpCiAgICB7CiAgICAgICAgRXJyb3JNZXNzYWdlKCJH

b3QgTlVMTCAqZnJvb3QgaW4gUmVhc3NlbWJsZUlQKCksIHBsZWFzZSB0ZWxsIERyYWdvc1xuIik7

CiAgICAgICAgcmV0dXJuIE5VTEw7CiAgICB9CgogICAgcHNpemUgPSAoZnJvb3QtPmtleSktPmRz

aXplICsgKChmcm9vdC0+a2V5LT5mcmFnX29mZnNldCk8PDMpOyAvKiBsYXN0IGZyYWcgaXMgYXQg

dG9wIG9mIHRyZWUgKi8KCgogICAgLyogd2UndmUgZ290IHRvIGhhdmUgYSBwYWNrZXQgYXQgbGVh

c3QgYXMgbGFyZ2UgYXMgYW4gSUNNUCBoZWFkZXIgKi8KICAgIGlmKHBzaXplIDwgNCkKICAgIHsK

ICAgICAgICBFcnJvck1lc3NhZ2UoIlshXSBFUlJPUjogRGVmcmFnIHBsdWdpbiBpcyBmdWNrZWQg

dXAsICIKICAgICAgICAgICAgICAgICAgICAgImNhbGN1bGF0ZWQgcGFja2V0IHNpemUgdG9vIHNt

YWxsXG4iKTsKICAgIH0KCiAgICAvKiBob3BlZnVsbHkgbW9yZW92ZXJoZWFkIGhlcmUgZmluZHMg

b3V0IGFib3V0IGFsbCB0aGUgd2llcmQgTUFDIAogICAgICogc2l6ZXMgbGlrZSBGRERJIGFuZCBB

VE0gCiAgICAgKi8KICAgIG1vcmVvdmVyaGVhZCA9IChjaGFyKilmcm9vdC0+a2V5LT5pcGggLSAo

Y2hhciopZnJvb3QtPmtleS0+cGt0OwogICAgb3ZlcmhlYWQgPSAoY2hhciopZnJvb3QtPmtleS0+

cGt0IC0gKGNoYXIqKWZyb290LT5rZXktPnBrdGg7CiAgICAKICAgIC8qIExpbnV4IGZpeCBjb2Rl

ICovCiAgICBpZihvdmVyaGVhZCA8IHNpemVvZihzdHJ1Y3QgcGNhcF9wa3RoZHIpIHx8IAogICAg

ICAgb3ZlcmhlYWQgPiBzaXplb2YoIHN0cnVjdCBwY2FwX3BrdGhkcikgKyAyKQogICAgewogICAg

ICAgIG92ZXJoZWFkID0gc2l6ZW9mKHN0cnVjdCBwY2FwX3BrdGhkcikgKyAyOwogICAgfQoKCiAg

ICBwID0gKFBhY2tldCAqKURlZnJhZ0FsbG9jKHNpemVvZihQYWNrZXQpKTsKCgogICAgaWYoIXAp

CiAgICB7CiAgICAgICAgRXJyb3JNZXNzYWdlKCJbIV0gRVJST1I6IFVuYWJsZSB0byBhbGxvY2F0

ZSBtZW1vcnkgZm9yICIKICAgICAgICAgICAgICAgICAgICAgImZyYWdtZW50IHJlYnVpbGQhXG4i

KTsKICAgICAgICByZXR1cm4gTlVMTDsKICAgIH0KCiAgICBtZW1jcHkocCwgZnJvb3QtPmtleSwg

c2l6ZW9mKFBhY2tldCkpOwoKICAgIHAtPnBrdGggPSAoc3RydWN0IHBjYXBfcGt0aGRyICopCiAg

ICAgICAgICAgICAgICBEZWZyYWdBbGxvYyhwc2l6ZSArIG92ZXJoZWFkICsgbW9yZW92ZXJoZWFk

ICsgc2l6ZW9mKElQSGRyKSArIDMyKTsKCiAgICBpZighcC0+cGt0aCkKICAgIHsKICAgICAgICBF

cnJvck1lc3NhZ2UoIlshXSBFUlJPUjogVW5hYmxlIHRvIGFsbG9jYXRlIG1lbW9yeSBmb3IgZnJh

Z21lbnQgIgogICAgICAgICAgICAgICAgICAgICAicmVidWlsZCFcbiIpOwogICAgICAgIGZyYWdt

ZW11c2UgLT0gc2l6ZW9mKFBhY2tldCk7CiAgICAgICAgZnJlZShwKTsKICAgICAgICByZXR1cm4g

TlVMTDsKICAgIH0KCiAgICBwLT5pcGggPSAoSVBIZHIgKikoKHVfY2hhciopcC0+cGt0aCArIG92

ZXJoZWFkICsgbW9yZW92ZXJoZWFkKTsKICAgIHAtPnBrdCA9ICh1X2NoYXIqKXAtPmlwaCAtIG1v

cmVvdmVyaGVhZDsKCiAgICAvKgogICAgICogTm93IGNvcHkgdGhlIGhlYWRlciBhbmQgZnJhZ21l

bnRzIGludG8gdGhlIG5ld2x5LWFsbG9jYXRlZCBidWZmZXIsCiAgICAgKiByZWNvbnN0cnVjdGlu

ZyB0aGUgcGFja2V0IGNodW5rIGJ5IGNodW5rLiBDdXJyZW50IGFsZ29yaXRobSBpcyBmaXJzdCAK

ICAgICAqIHdyaXRlIHRvIGFuIGFyZWEgd2lucywgcGxheSB3aXRoIHNwbGF5IG9yZGVyIHRvIGNo

YW5nZS4KICAgICAqIHdlIHN0YXJ0IGZyb20gdGhlIGxhc3QgZnJhZ21lbnQgYW5kIHdvcmsgYmFj

ay4uLi4KICAgICAqLwoKICAgIC8qIGZpbGwgaW4gcGFja2V0IGhlYWRlciBicGYgaGVhZGVyIGZp

cnN0Ki8KICAgIG1lbWNweShwLT5wa3RoLCBmcm9vdC0+a2V5LT5wa3RoLCBvdmVyaGVhZCk7IAoK

ICAgIC8qIHRoZW4gdGhlIG1hYyBqdW5rLCBzcGxpdCBpbnRvIHR3byBjb3BpZXMgZm9yIExpbnV4

IAogICAgICogbm9uLWNvbnRpZ3VvdXMgaGVhZGVycyAKICAgICAqLwogICAgbWVtY3B5KChjaGFy

KilwLT5wa3RoICsgb3ZlcmhlYWQsIGZyb290LT5rZXktPnBrdCwgbW9yZW92ZXJoZWFkKTsgCgog

ICAgLyoKICAgICAqIHRoZW4gdGhlIElQIGhlYWRlciBqdXN0IHRvIGJlIHBhcmFub2lkIGZvciBk

ZWJ1Z2dpbmcgYmVjYXVzZSBpbiB0aGUKICAgICAqIHJlYWwgd29ybGQgd2Ugd291bGQgZG8gdGhl

c2UgaW4gb25lIGNvcHkKICAgICAqLwogICAgdG1wID0gKHVfY2hhciAqKSBmcm9vdC0+a2V5LT5p

cGg7CiAgICBtZW1jcHkocC0+aXBoLCB0bXAsIHNpemVvZihJUEhkcikpOyAKCiAgICBwLT5wa3Ro

LT5jYXBsZW4gPSBwc2l6ZSArIG92ZXJoZWFkICsgbW9yZW92ZXJoZWFkICsgc2l6ZW9mKElQSGRy

KTsKICAgIHAtPnBrdGgtPmxlbiA9IHAtPnBrdGgtPmNhcGxlbjsKCiAgICAvKgogICAgICogQ2xl

YXIgdGhlIG1vcmUgZnJhZ21lbnRzIGJpdCwgYW5kIHNldCB0aGUgbGVuZ3RoIGluIHRoZSBpcCBo

ZWFkZXIKICAgICAqIChpbiBuZXR3b3JrIGJ5dGUgb3JkZXIpLgogICAgICovCiAgICBwLT5pcGgt

PmlwX2xlbiA9IGh0b25zKHBzaXplK3NpemVvZihJUEhkcikpOwogICAgcC0+aXBoLT5pcF9vZmYg

PSAwOwogICAgcC0+ZnJhZ19mbGFnID0gMDsKCgogICAgd2hpbGUoZnJvb3QgJiYgZnJhZ2FkZHJt

YXRjaChwLGZyb290LT5rZXkpKQogICAgewogICAgICAgIGlmKCgoZnJvb3QtPmtleS0+ZnJhZ19v

ZmZzZXQpPDwzKSArIGZyb290LT5rZXktPmRzaXplIDw9IHBzaXplKQogICAgICAgIHsKICAgICAg

ICAgICAgbWVtY3B5KCh1X2ludDhfdCAqKURBVEEocCkrKChmcm9vdC0+a2V5LT5mcmFnX29mZnNl

dCk8PDMpLCAKICAgICAgICAgICAgICAgICAgICBEQVRBKGZyb290LT5rZXkpLCBmcm9vdC0+a2V5

LT5kc2l6ZSk7CgogICAgICAgICAgICB3cml0ZWNvdW50ICs9IGZyb290LT5rZXktPmRzaXplOwog

ICAgICAgIH0KICAgICAgICBlbHNlCiAgICAgICAgewogICAgICAgICAgICBTZXRFdmVudCgmZXZl

bnQsIEdFTkVSQVRPUl9TUFBfREVGUkFHLCAKICAgICAgICAgICAgICAgICAgICBERUZSQUdfRlJB

R19PVkVSRkxPVywgMSwgMCwgMCwgMCk7CiAgICAgICAgICAgIENhbGxBbGVydEZ1bmNzKHAsICJG

cmFnbWVudGF0aW9uIE92ZXJmbG93IEF0dGFjayIsIE5VTEwsICZldmVudCk7CiAgICAgICAgfQoK

ICAgICAgICAvKiBjbGVhciB0aGUgZnJhZ21lbnQgc3RvcmUgb2YgdGhlIGZyYWcgdGhhdCB3YXMg

anVzdCBwdXQgaW50byB0aGUKICAgICAgICAgKiByZWFzc2VtYmx5CiAgICAgICAgICovCiAgICAg

ICAgaWYoZnJvb3QpCiAgICAgICAgewogICAgICAgICAgICBucCA9IChjaGFyICopZnJvb3QtPmtl

eS0+cGt0aDsgIC8qIGFkZHJlc3MgZm9yIGZyZWUgbGF0ZXIgKi8KCgogICAgICAgICAgICBmcm9v

dCA9IGZyYWdkZWxldGUoZnJvb3QtPmtleSwgZnJvb3QpOwoKICAgICAgICAgICAgaWYobnApCiAg

ICAgICAgICAgIHsKICAgICAgICAgICAgICAgIC8qIHRoaXMgZnJhZ21lbnQgd2FzIGFuIGVsZW1l

bnQgb2YgYSByZWJ1aWx0IHBhY2tldCAqLwogICAgICAgICAgICAgICAgcGMucmVidWlsZF9lbGVt

ZW50Kys7CiAgICAgICAgICAgICAgICBmcmFnbWVtdXNlIC09ICgoKHN0cnVjdCBwY2FwX3BrdGhk

ciAqKW5wKS0+Y2FwbGVuICsgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG92ZXJoZWFk

ICsgMjApOwogICAgICAgICAgICAgICAgZnJlZShucCk7CiAgICAgICAgICAgIH0KICAgICAgICB9

Cglmcm9vdCA9IGZyYWdzcGxheShwLGZyb290KTsKICAgIH0KCiAgICBtZW1jcHkoJnNsb3dhcmlz

Zml4LCBwLT5pcGgsIHNpemVvZihJUEhkcikpOwogICAgcC0+aXBoID0gJnNsb3dhcmlzZml4OyAK

CiAgICAvKiBhbmQgbm93IHNvbWUgam9sdDJwcm9vZmluZyAqLwogICAgLyogcHNpemUgY2hlY2sg

aW5jcmVhc2VkIGZyb20gODE5MiB0byA2NTUzNS1tdHVzaXplLCB0aGVzZSBwYWNrZXRzIGNhbiBn

ZXQKICAgICAqIGJpZyBsZWdpdGltYXRlbHkgLSBNRlIgKi8KICAgIC8qIG1vdmVkIGJhY2sgZG93

biB0byA4MTkyIHRvIGFjY291bnQgZm9yIHN3aXNzY2hlZXNlZ3JhbSBhdHRhY2sgLS1kciAqLwog

ICAgaWYocHNpemUgPiA4MTkyKSAgLyogb25seSBraWNrIGluIGZvciBtb25zdGVyZ3JhbXMgKi8K

ICAgIHsKICAgICAgICAvKnBhY2tldHMgaGF2ZSB0byBiZSBoYWxmIGZ1bGwgZm9yIHVzIHRvIGxv

b2sgYXQgdGhlbSAqLwogICAgICAgIGlmKHdyaXRlY291bnQgPiAocHNpemU+PjEpKSAKICAgICAg

ICB7CiAgICAgICAgICAgIGlmKHApCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIC8qIGtl

ZXAgc3RhdHMgZm9yIHRoZSBwYWNrZXQgY291bnRlciBzdHJ1Y3QgLU1GUiAqLwogICAgICAgICAg

ICAgICAgcGMucmVidWlsdF9mcmFncysrOyAgLyogTWFydHkuLi4gSHVoPz8gLS1kciAqLwogICAg

ICAgICAgICAgICAgUHJvY2Vzc1BhY2tldChOVUxMLHAtPnBrdGgsIHAtPnBrdCk7CiAgICAgICAg

ICAgIH0KICAgICAgICB9CiAgICAgICAgZWxzZQogICAgICAgIHsKICAgICAgICAgICAgU2V0RXZl

bnQoJmV2ZW50LCBHRU5FUkFUT1JfU1BQX0RFRlJBRywgCiAgICAgICAgICAgICAgICAgICAgREVG

UkFHX0ZSQUdTX0RJU0NBUkRFRCwgMSwgMCwgMCwgMCk7CiAgICAgICAgICAgIENhbGxBbGVydEZ1

bmNzKHAsICJJbmNvbXBsZXRlIFBhY2tldCBGcmFnbWVudHMgRGlzY2FyZGVkIiwgCiAgICAgICAg

ICAgICAgICAgICAgTlVMTCwgJmV2ZW50KTsKICAgICAgICB9CiAgICB9CiAgICBlbHNlCiAgICB7

CiAgICAgICAgaWYocCkKICAgICAgICB7CiAgICAgICAgICAgIHBjLnJlYnVpbHRfZnJhZ3MrKzsK

ICAgICAgICAgICAgUHJvY2Vzc1BhY2tldChOVUxMLCBwLT5wa3RoLCBwLT5wa3QpOwogICAgICAg

IH0KICAgIH0KCiAgICBmcmFnbWVtdXNlIC09IChwc2l6ZStvdmVyaGVhZCttb3Jlb3ZlcmhlYWQr

c2l6ZW9mKElQSGRyKSszMitzaXplb2YoUGFja2V0KSk7CiAgICBmcmVlKHAtPnBrdGgpOyAgICAg

IC8qIHNldCB0aGUgZnJhbmtlbnN0ZWluZ3JhbSBmcmVlLi4uLiAqLwogICAgZnJlZShwKTsKCiAg

ICByZXR1cm4oZnJvb3QpOwp9CgovKgogKiBGdW5jdGlvbjogUHJlcHJvY0RlZnJhZyhQYWNrZXQg

KikKICogUHVycG9zZToKICogRHJpdmVyIGZ1bmN0aW9uIGZvciB0aGUgSVAgZGVmcmFnbWVudGF0

aW9uIHByZXByb2Nlc3Nvci4KICogQXJndW1lbnRzOiBwID0+IHBvaW50ZXIgdG8gdGhlIGN1cnJl

bnQgcGFja2V0IGRhdGEgc3RydWN0CiAqIFJldHVybnM6IHZvaWQgZnVuY3Rpb24KICovCnZvaWQg

UHJlcHJvY0RlZnJhZyhQYWNrZXQgKnApCnsKICAgIFBhY2tldCAqcGFja2V0X2NvcHk7CiAgICBz

dHJ1Y3QgcGNhcF9wa3RoZHIgKmZyZWV0ZW1wOwogICAgaW50IG92ZXJoZWFkOwogICAgaW50IGNh

cDsKICAgIHVfY2hhciAqdG1wOwogICAgVHJlZSAqbmV3X2Zyb290OwoKICAgIGlmKCFwIHx8ICFw

LT5wa3RoIHx8ICFwLT5wa3QpCiAgICB7CiAgICAgICAgaWYocHYudmVyYm9zZV9mbGFnKQogICAg

ICAgIHsKICAgICAgICAgICAgRXJyb3JNZXNzYWdlKCIlc1xuIiwiR2FyYmFnZSBQYWNrZXQgd2l0

aCBOdWxsIFBvaW50ZXIgZGlzY2FyZGVkISIpOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuOwog

ICAgfQoKICAgIC8qIGNoZWNrIHRvIG1ha2Ugc3VyZSB0aGUgSVAgaGVhZGVyIGV4aXN0cyBhbmQg

dGhhdCAKICAgICAqIHRoZXJlIGlzbid0IGEgYmFkIElQIGNoZWNrc3VtCiAgICAgKi8KICAgIGlm

KCFwLT5pcGggfHwgKHAtPmNzdW1fZmxhZ3MgJiBDU0VfSVApKQogICAgewogICAgICAgIHJldHVy

bjsgICAgICAKICAgIH0KCiAgICBpZihwLT5mcmFnX2ZsYWcpCiAgICB7ICAvKiBoZWFkcyB1cCwg

bGl2ZSBmcmFnbWVudHMgaW5ib3VuZCAgKi8KICAgICAgICBvdmVyaGVhZCA9IChjaGFyKilwLT5w

a3QgLSAoY2hhciopcC0+cGt0aDsgLyogKzQgbXlzdGVyeSBwb2ludHMgKi8KICAgICAgICAvKiBM

aW51eCBmaXggY29kZSAqLwogICAgICAgIGlmKG92ZXJoZWFkIDwgMSB8fCBvdmVyaGVhZCA+IHNp

emVvZihzdHJ1Y3QgcGNhcF9wa3RoZHIpICsgMikKICAgICAgICAgICAgb3ZlcmhlYWQgPSBzaXpl

b2Yoc3RydWN0IHBjYXBfcGt0aGRyKSArIDI7CgogICAgICAgIHBhY2tldF9jb3B5ID0gKFBhY2tl

dCAqKSBEZWZyYWdBbGxvYyhzaXplb2YoUGFja2V0KSk7CgogICAgICAgIGlmKCFwYWNrZXRfY29w

eSkKICAgICAgICB7CiAgICAgICAgICAgIEVycm9yTWVzc2FnZSgiWyFdIEVSUk9SOiBDYW5ub3Qg

YWxsb2NhdGUgZnJhZ21lbnQgIgogICAgICAgICAgICAgICAgICAgICAgICAgImJ1ZmZlcih1c2Fn

ZSAweCVYKVxuIixmcmFnbWVtdXNlKTsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KCgog

ICAgICAgIG1lbWNweShwYWNrZXRfY29weSwgcCwgc2l6ZW9mKFBhY2tldCkpOwogICAgICAgIGNh

cCA9IHAtPnBrdGgtPmNhcGxlbiArIG92ZXJoZWFkOwogICAgICAgIHRtcCA9ICh1X2NoYXIgKikg

RGVmcmFnQWxsb2MoY2FwICsgMjApOwogICAgICAgIHBhY2tldF9jb3B5LT5wa3RoID0gKHN0cnVj

dCBwY2FwX3BrdGhkciAqKSB0bXA7CgogICAgICAgIGlmKCFwYWNrZXRfY29weS0+cGt0aCkKICAg

ICAgICB7CiAgICAgICAgICAgIGZyZWUocGFja2V0X2NvcHkpOwogICAgICAgICAgICBmcmFnbWVt

dXNlIC09IHNpemVvZihQYWNrZXQpOwogICAgICAgICAgICBFcnJvck1lc3NhZ2UoIlshXSBFUlJP

UjogQ2Fubm90IGFsbG9jYXRlIGZyYWdtZW50ICIKICAgICAgICAgICAgICAgICAgICAgICAgICJi

dWZmZXIodXNhZ2UgJVgpXG4iLGZyYWdtZW11c2UpOwogICAgICAgICAgICByZXR1cm47CiAgICAg

ICAgfQoKICAgICAgICBwYWNrZXRfY29weS0+cGt0ID0gKHVfY2hhciopcGFja2V0X2NvcHktPnBr

dGggKyBvdmVyaGVhZDsKICAgICAgICBwYWNrZXRfY29weS0+aXBoID0gKElQSGRyKikoKHVfY2hh

ciopcGFja2V0X2NvcHktPnBrdCArIAogICAgICAgICAgICAgICAgICAgICAgICAgICAoKHVfY2hh

ciopcC0+aXBoIC0gKHVfY2hhciopcC0+cGt0KSk7CgogICAgICAgIC8qIGNsZWFyZWQgYnkgTUZS

LCBhY2NvdW50ZWQgZm9yIGJlbG93ICovCiAgICAgICAgLypmcmFnbWVtdXNlICs9IHAtPnBrdGgt

PmNhcGxlbiArIG92ZXJoZWFkOyovCiAgICAgICAgbGFzdF9mcmFnX3RpbWUudHZfc2VjID0gcC0+

cGt0aC0+dHMudHZfc2VjOwogICAgICAgIGxhc3RfZnJhZ190aW1lLnR2X3VzZWMgPSBwLT5wa3Ro

LT50cy50dl91c2VjOwogICAgICAgIC8qKioqKiogdXBkYXRlIHRoZSB0aW1lb3V0IHRocmVzaG9s

ZCBnbG9iYWwgc28gZnJhZ2NvbXBhcmUgY2FuCiAgICAgICAgICoqKioqKiB1c2UgaXQuCiAgICAg

ICAgICoqKioqKi8KCiAgICAgICAgaWYoZnJhZ21lbXVzZSA8IDApCiAgICAgICAgICAgIGZyYWdt

ZW11c2UgPSAwOwogICAgICAgIGZyYWd0aW1lb3V0LnR2X3NlYyA9IAogICAgICAgICAgICAoaW50

KSgoZmxvYXQpRlJBR1RJTUVPVVRTRUMqKChNRU1IQVJETElNLWZyYWdtZW11c2UpLwogICAgICAg

ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmbG9hdClNRU1IQVJETElNKSk7CiAg

ICAgICAgZnJhZ3RpbWVvdXQudHZfdXNlYyA9IAogICAgICAgICAgICAoaW50KSgoZmxvYXQpRlJB

R1RJTUVPVVRVU0VDKigoTUVNSEFSRExJTS1mcmFnbWVtdXNlKS8KICAgICAgICAgICAgICAgICAg

ICAgICAgICAgICAgICAgICAgICAgICAgKGZsb2F0KU1FTUhBUkRMSU0pKTsKICAgICAgICBhZGR0

aW1lKCZsYXN0X2ZyYWdfdGltZSwgJmZyYWd0aW1lb3V0LCAmdGltZWNoZWNrKTsKCiAgICAgICAg

Lyogd2UgZG8gdGhpcyB3aXRoIHR3byBtZW1jb3BpZXMgdG8gY29wZSB3aXRoIExpbnV4IAogICAg

ICAgICAqIG5vbi1jb250aWd1b3VzIGJwZiBoZWFkZXJzIAogICAgICAgICAqLwogICAgICAgIG1l

bWNweShwYWNrZXRfY29weS0+cGt0aCwgcC0+cGt0aCwgb3ZlcmhlYWQpOwogICAgICAgIG1lbWNw

eShwYWNrZXRfY29weS0+cGt0LCBwLT5wa3QsIHAtPnBrdGgtPmNhcGxlbik7CiAgICAgICAgbmV3

X2Zyb290ID0gZnJhZ2luc2VydChwYWNrZXRfY29weSwgZnJvb3QpOyAKICAgICAgICBpZihuZXdf

ZnJvb3QgPT0gZnJvb3QpCiAgICAgICAgewogICAgICAgICAgICAvKiBvdXQgb2YgbWVtb3J5IHRv

c3MgdGhlIGNvcGllcyAqLwogICAgICAgICAgICBmcmVlKHBhY2tldF9jb3B5LT5wa3RoKTsKICAg

ICAgICAgICAgZnJhZ21lbXVzZSAtPSAoY2FwICsgMjApOwogICAgICAgICAgICBmcmVlKHBhY2tl

dF9jb3B5KTsKICAgICAgICAgICAgZnJhZ21lbXVzZSAtPSBzaXplb2YoUGFja2V0KTsKICAgICAg

ICAgICAgbmV3X2Zyb290ID0gZnJhZ2JhbGFuY2UoYml0cmV2KFNBRERSKHApKSwgbmV3X2Zyb290

KTsKCSAgICBuZXdfZnJvb3QgPSBmcmFnc3BsYXkocGFja2V0X2NvcHksIG5ld19mcm9vdCk7CiAg

ICAgICAgfQogICAgICAgIGZyb290ID0gbmV3X2Zyb290OwoKICAgICAgICAvKiBub3cgY2hlY2sg

aWYgd2UgaGF2ZSB0byByZWFzc2VtYmxlIGFueXRoaW5nLi4uICovCiAgICAgICAgaWYoIU1GKHAp

KQogICAgICAgICAgICBmcm9vdCA9IFJlYXNzZW1ibGVJUChmcm9vdCk7CgogICAgICAgIC8qIE9L

IG5vdyBlamVjdCB0aGUgdHJhc2ggKGZyYWdtZW50IHRpbWVvdXQgOi0pICovCiAgICAgICAgaWYo

ZnJvb3QpCiAgICAgICAgewogICAgICAgICAgICB3aGlsZShnYXJiYWdlbGlzdCkKICAgICAgICAg

ICAgewogICAgICAgICAgICAgICAgTGlzdCAqdHJhc2g7CiAgICAgICAgICAgICAgICB0cmFzaGVq

ZWN0c3BpbmxvY2sgPSBUUlVFOwogICAgICAgICAgICAgICAgZnJlZXRlbXAgPSBnYXJiYWdlbGlz

dC0+a2V5LT5wa3RoOwogICAgICAgICAgICAgICAgZnJhZ21lbXVzZSAtPSBmcmVldGVtcC0+Y2Fw

bGVuICsgb3ZlcmhlYWQgKyAyMDsKICAgICAgICAgICAgICAgIGZyb290ID0gZnJhZ2RlbGV0ZShn

YXJiYWdlbGlzdC0+a2V5LCBmcm9vdCk7CiAgICAgICAgICAgICAgICBmcmVlKGZyZWV0ZW1wKTsK

ICAgICAgICAgICAgICAgIHBjLmZyYWdfdGltZW91dCsrOwogICAgICAgICAgICAgICAgdHJhc2gg

PSBnYXJiYWdlbGlzdDsKICAgICAgICAgICAgICAgIGdhcmJhZ2VsaXN0ID0gZ2FyYmFnZWxpc3Qt

Pm5leHQ7CiAgICAgICAgICAgICAgICBmcmVlKHRyYXNoKTsKICAgICAgICAgICAgICAgIGZyYWdt

ZW11c2UgLT0gc2l6ZW9mKExpc3QpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIHRyYXNoZWpl

Y3RzcGlubG9jayA9IEZBTFNFOwoKICAgICAgICB9CiAgICB9CgogICAgcmV0dXJuOwp9CgoKCg==

--Boundary-=_OHgFmrodmvMZabMJiPkVOHQdWbIN--



--__--__--

_______________________________________________
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: