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:
- Re: Snort-users digest, Vol 1 #791 - 5 msgs ORA (Jul 10)
- Re: Re: Snort-users digest, Vol 1 #791 - 5 msgs Fyodor (Jul 10)
- Re: Re: Snort-users digest, Vol 1 #791 - 5 msgs Dan Hollis (Jul 10)