ACK/th_win portscanning

From: Lamont Granquist (lamontgat_private)
Date: Wed Sep 15 1999 - 11:18:56 PDT

  • Next message: Lisa Napier: "Re: Cisco and Nmap Dos"

      This message is in MIME format.  The first part should be readable text,
      while the remaining parts are likely unreadable without MIME-aware tools.
      Send mail to mimeat_private for more info.
    
    ---2141238973-383924441-937419536=:1867
    Content-Type: TEXT/PLAIN; charset=US-ASCII
    
    
    I just posted a patch to nmap to the nmap-hackers list which impliments
    yet another "stealth" scan.  This one sends out packets with only the ACK
    bit set and looks for responses that either have th_win set to some value
    (0x1000, 0x2000, 0x4000 typically) or th_win is clear.  Fyodor went
    through the nmap-os-fingerprints file and found that it was easy to use
    that database to find systems which are vulnerable to these kinds of
    scans.
    
    Vulnerable systems of note include:
    Digital Unix 4.0X
    FreeBSD <=4.0
    OpenBSD <=2.5.
    AIX <=4.3.2 (is this current?)
    
    Notable systems which are /NOT/ vulnerable include:
    Solaris (all?)
    IRIX 6.x
    HP-UX 11.0
    Linux (all?)
    
    Probably the only "stealth" benefit of this kind of scan would be that it
    should get through ipfwadm firewalls that use the ACK bit to determine
    weither or not packets get through (ipfwadm's -k flag), e.g:
    
        # allow incoming packets to other high numbered ports from anywhere, but
        # only for packets with the ACK bit set (i.e. outgoing connections)
        /sbin/ipfwadm -I -k -a accept -P tcp -S any/0 -D $MYNET 1024:65535
    
    But it should be blocked by ipf's "keep state":
    
        pass  out  quick proto tcp from <MYNET> to any keep state
    
    It would be interesting to test this in conjunction with frag scanning
    against various firewalls.  It might also be interesting to test this with
    out-of-order frag scanning (which nmap doesn't do, due to limitations in
    SOCK_RAW) against various firewalls (particularly ones that advertise
    "keep state" functions).  Of course, you'll need a vulnerable test system
    behind the firewall to scan against.
    
    Fydoor's post with all the vulnerable systems follows.  Attatched is the
    patch to NMAP 2.3 BETA 3 (applies cleanly to BETA 5 as well).
    
    On Wed, 15 Sep 1999, Fyodor wrote:
    > On Mon, 13 Sep 1999, Lamont Granquist wrote:
    >
    > > Yeah, don't know how useful it is, since the only current version of an OS
    > > that it seems to be effective against is Digital Unix.  With only the ACK
    > > bit set it might be able to get through some firewall rules, though.
    >
    > I think it works against the latest FreeBSD as well.  Perhaps I should
    > apply your patch and leave it as another undocumented scan type in the
    > next version of Nmap.  Interestingly, the nmap-os-fingerprints database
    > that comes with Nmap can often enumerate the operating systems with
    > interesting characteristics like this.  For example, here is an easy way
    > to get a list of OS versions that should be vulnerable to your window
    > scan:
    >
    > amy~/nmap>cat nmap-os-fingerprints | perl -ne 'while(<>) { chomp;if (/^fingerprint\s+([^\#]+)/i) { if (defined($owin) and defined($cwin) and $owin ne $cwin) { print "$oname ($owin vs. $cwin)\n";} $oname=$1;undef($cwin);undef($owin);} elsif (/^T(4|6)\(.*W=([^%]+)/) { if ($1 eq 4){$owin=$2;} else { $cwin = $2; }}}' | sort -f
    > A/UX 3.1.1 SVR2 (1000 vs. 0)
    > ACC Amazon 9.2.29 or Congo 9.2.35 WAN concentrator (1000 vs. 0)
    > Acorn Risc OS 3.6 (Acorn TCP/IP Stack 4.07) (3000 vs. 0)
    > Acorn RiscOS 3.7 using AcornNet TCP/IP stack   (4000 vs. 0)
    > AGE Logic, Inc. IBM XStation (2000 vs. 0)
    > AIX 3.2 (4000 vs. 0)
    > AIX 4.0 - 4.1 (8000|4000 vs. 0)
    > AIX 4.02.0001.0000 (4000 vs. 0)
    > AIX 4.1 (4000 vs. 0)
    > AIX 4.2 (4000 vs. 0)
    > AIX 4.2 (4000 vs. 0)
    > AIX 4.3.2 (4000 vs. 0)
    > AIX v4.1 running on a C10 (4000 vs. 0)
    > Alcatel 1000 DSL Router / unknown OS Rev. (2000 vs. 0)
    > AmigaOS AmiTCP/IP 4.3 (2000 vs. 0)
    > AmigaOS AmiTCP/IP Genesis 4.6 (8000 vs. 0)
    > AmigaOS Miami 2.1-3.0 (4000 vs. 0)
    > AmigaOS Miami 3.0 (4000 vs. 0)
    > AmigaOS Miami 3.1-3.2 (4000 vs. 0)
    > AmigaOS Miami Deluxe 0.9 - Miami 3.2B (4000 vs. 0)
    > AOS/VS or VSII (1000 vs. 0)
    > Apollo Domain/OS SR10.4 (239C vs. 800)
    > Auspex Fileserver (AuspexOS 1.9.1/SunOS 4.1.4) (4000 vs. 0)
    > AXIS NetEye Camera Server V1.20  (100|0 vs. 0)
    > AXIS or Meridian Data Network CD-ROM server (200 vs. 0)
    > AXIS Stack -- CD-ROM Server or Printer Server or Camera Server  (100|0 vs. 0)
    > BeOS 4 - 4.5 (3000 vs. 0)
    > BSDI BSD/OS 2.0 - 2.1   (2000|0 vs. 0)
    > CacheOS (CacheFlow 2000 proxy cache) (2000 vs. 0)
    > Canon photocopier/fax/scanner/printer GP30F (C00 vs. 0)
    > Cisco CacheEngine (2000 vs. 0)
    > Compaq Tru64 UNIX (formerly Digital UNIX) 4.0e (8000 vs. 0)
    > Convex OS Release 10.1 (7C00 vs. 0)
    > Cray Unicos 9.0 - 10.0 or Unicos/mk 1.5.1   (FFFF vs. 0)
    > Cray UNICOS 9.0.1ai - 10.0.0.2 (8000 vs. 0)
    > DEC OSF/1 V1.3A (8000 vs. 0)
    > DECNIS 600 V4.1.3B System (8000 vs. 0)
    > DECserver700-16, Network Access SW V2.2 (600 vs. 0)
    > DG/UX Release R4.11MU02 (2238 vs. 0)
    > Digital OpenVMS AXP 6.2 running Attachmate Pathway 3.1 TCP stack (2000 vs. 0)
    > Digital Unix 4.0E (7000|8000 vs. 0)
    > Digital UNIX OSF1 V 3.0,3.2,3.2C   (8000 vs. 0)
    > Digital UNIX OSF1 V 4.0,4.0B,4.0D   (8000 vs. 0)
    > Extreme Gigabit switch (unknown version) (1000 vs. 0)
    > FreeBSD 2.1.0 - 2.1.5   (4000 vs. 0)
    > FreeBSD 2.2.1 - 3.2   (4000|0 vs. 0)
    > FreeBSD 2.2.1 - 4.0   (4000|0 vs. 0)
    > HP Entria X station (running Netstation 7.x)   (2000 vs. 0)
    > HP-BSD 2.0 (2000 vs. 0)
    > HP-UX 9.01 - 9.07 (2000 vs. 0)
    > HP-UX A.09.00 E 9000/817 - A.09.07 A 9000/777 (2000 vs. 0)
    > HP-UX B.10.01 A 9000/715 (8000 vs. 0)
    > HP-UX B.10.20 A 9000/715 or 9000/712 or 9000/871 or 9000/861 with tcp_random_seq = 0 (8000 vs. 0)
    > HP-UX B.10.20 A 9000/715 or 9000/712 or 9000/871 with tcp_random_seq = 1  (8000 vs. 0)
    > IBM LAN RouteSwitch/Xylan OmniSwitch Version 3.2.5/NeXT (1000 vs. 0)
    > IBM OS/2 V 2.1 (7000 vs. 0)
    > IBM OS/2 V.3   (7000 vs. 0)
    > IBM OS/2 Warp 4.0 (7000 vs. 0)
    > IBM OS/2 Warp Server for E-business (Aurora) Beta (8000 vs. 0)
    > IBM OS/2 Warp Server for E-business (Aurora) Beta (8000 vs. 0)
    > Intel NetportExpress(tm) 10/100 3-port ROM: V05.10a (16D0 vs. 0)
    > IRIX 5.2 (F000 vs. 0)
    > IRIX 5.3   (EF2A|F000 vs. 0)
    > Juniper Router running JUNOS (4000 vs. 0)
    > LynxOS Realtime OS -- Could be MeetingPlace 3.4, Xylogics  Remote Annex 4000 terminal server (1000 vs. 0)
    > Mac OS X (Rhapsody 5.5) on a G3 (8000 vs. 0)
    > Meridian Data Network CD-ROM Server (V4.20 Nov 26 1997) (200 vs. 0)
    > Mirapoint M1000 (OS v 1.0.0) (4000 vs. 0)
    > NCD X server (SNMP says: NCD16 server 2.3.0 03/12/91 downloaded) (800 vs. 0)
    > Neoware (was HDS) NetOS V. 2.0.1 or HP ENTRIA C3230A (2000 vs. 0)
    > NetApp OnTap 3.1.6 (1000 vs. 0)
    > NetApp OnTap 5.1.2 - 5.2.2 (2000 vs. 0)
    > NetBSD 1.0 big endian arch (4000 vs. 0)
    > NetBSD 1.0 little endian arch (4000 vs. 0)
    > NetBSD 1.1 - 1.2.1 litle endian arch (4000 vs. 0)
    > NetBSD 1.2 - 1.2.1 big endian arch (4000 vs. 0)
    > Network Systems router NS6614 (NSC 6600 series) (1000 vs. 0)
    > NeXT Mach (1000 vs. 0)
    > OpenBSD 2.1 - 2.3/SPARC (4000 vs. 0)
    > OpenBSD 2.1/X86 (4000 vs. 0)
    > OpenBSD 2.2 - 2.3 (4000 vs. 0)
    > OpenBSD Post 2.4 (November 1998) - 2.5 (4000 vs. 0)
    > OpenStep 4.0 or NextStep 1.0 (Intel) (1000 vs. 0)
    > OpenStep 4.1/NeXTStep 3.3 (1000 vs. 0)
    > OpenStep 4.2/Intel (1000 vs. 0)
    > OpenVMS 6.1   (1000 vs. 0)
    > OpenVMS 6.2 (1800 vs. 0)
    > OpenVMS 7.1 Alpha running Digital's UCX v4.1ECO2 TCP/IP package (BB8 vs. 0)
    > OpenVMS Alpha 6.2 running DIGITAL TCP/IP Services (UCX) v4.0 (BB8 vs. 0)
    > OpenVMS Alpha V7.1-1H2 running DIGITAL TCP/IP Services (UCX) V4.2 (1000 vs. 0)
    > OpenVMS V6.1 on Digital VAX 4000-105A (1800 vs. 0)
    > OSF/1 5.60 (8000 vs. 0)
    > Packeteer IP-PacketShaper 2000 V3.1 (1000 vs. 0)
    > QNX 4.24 (2000 vs. 0)
    > Redback SMS1000 Router (2000 vs. 0)
    > Rhapsody 5.3 - 5.4 (Mac OS X Server 1.0 - 1.0-1) (2000 vs. 0)
    > Router/Switch (LanPlex 2500/Cisco Catalyst 5505/Trancell Webramp/Xylan Omni Switch) (1000 vs. 0)
    > SEQUENT DYNIX/ptx(R) V4.2.1 (1000 vs. 0)
    > Shiva LanRover/8E Version 3.5 (1000 vs. 0)
    > Snap Network Box (4470 vs. 0)
    > SPP-UX 5.2.1 (8000 vs. <1001)
    > SPP-UX 5.x on a Convex SPP-1600 (8000 vs. C00)
    > Stock OpenVMS 7.1 (2200 vs. 0)
    > SunOS 4.0.3 (1000 vs. 0)
    > SunOS 4.1.1 - 4.1.4 (or derivative)  (1000|2000|6000|C000 vs. 0)
    > SunOS 4.1.3_U1 + ISI RFC1323 mods from ISI (1000 vs. 0)
    > Ultrix 4.1 (4000 vs. 0)
    > Ultrix 4.2 - 4.5 (4000 vs. 0)
    > Unicos 10.0.0 on Cray 90 (8000 vs. 0)
    > VAX 7000-610 or 4200/SPX OR 6000-430 (1800 vs. 0)
    > VAX/VMS 5.3 on a MicroVAX II (1000 vs. 0)
    > VNS V6.2 (2200 vs. 0)
    > VxWorks 5.3.x bases system (usually an ethernet hub or switch) (1000 vs. 0)
    > webcache  CacheFlow 5000 with latest OS (2000 vs. 0)
    > Xylan OmniSwitch 5x/9x ethernet switch, Annex3 Comm server R10.0, or Hitach HI-UX/WE2 (1000 vs. 0)
    >
    >
    > Cheers,
    > Fyodor
    >
    > --
    > Fyodor                            'finger pgpat_private | pgp -fka'
    > "I might be able to shoehorn a reference count in on top of the numeric
    > value by disallowing multiple references on scalars with a numeric value, but
    > but it wouldn't be as clean. I do occasionally worry about that." -Larry Wall
    >
    
    --
    Lamont Granquist                       lamontgat_private
    Dept. of Molecular Biotechnology       (206)616-5735  fax: (206)685-7344
    Box 352145 / University of Washington / Seattle, WA 98195
    PGP pubkey: finger lamontgat_private | pgp -fka
    
    ---2141238973-383924441-937419536=:1867
    Content-Type: TEXT/PLAIN; charset=US-ASCII; name=ackscan-patch
    Content-Transfer-Encoding: BASE64
    Content-ID: <Pine.SGI.4.10.9909151118560.1867at_private>
    Content-Description:
    Content-Disposition: attachment; filename=ackscan-patch
    
    LS0tIGdsb2JhbF9zdHJ1Y3R1cmVzLmh+CUZyaSBTZXAgMTAgMTg6NTg6NTAg
    MTk5OQ0KKysrIGdsb2JhbF9zdHJ1Y3R1cmVzLmgJRnJpIFNlcCAxMCAxOTow
    OTo0MyAxOTk5DQpAQCAtMTY5LDYgKzE2OSw3IEBADQogICBpbnQgeG1hc3Nj
    YW47DQogICBpbnQgZnJhZ3NjYW47DQogICBpbnQgc3luc2NhbjsNCisgIGlu
    dCBhY2tzY2FuOw0KICAgaW50IG1haW1vbnNjYW47DQogICBpbnQgZmluc2Nh
    bjsNCiAgIGludCB1ZHBzY2FuOw0KQEAgLTE4MCw3ICsxODEsNyBAQA0KIH07
    DQogICANCiB0eXBlZGVmIHBvcnQgKnBvcnRsaXN0Ow0KLXR5cGVkZWYgZW51
    bSB7IFNZTl9TQ0FOLCBGSU5fU0NBTiwgWE1BU19TQ0FOLCBVRFBfU0NBTiwg
    Q09OTkVDVF9TQ0FOLCBOVUxMX1NDQU4sIFJQQ19TQ0FOLCBNQUlNT05fU0NB
    TiB9IHN0eXBlOw0KK3R5cGVkZWYgZW51bSB7IFNZTl9TQ0FOLCBGSU5fU0NB
    TiwgWE1BU19TQ0FOLCBVRFBfU0NBTiwgQ09OTkVDVF9TQ0FOLCBOVUxMX1ND
    QU4sIEFDS19TQ0FOLCBSUENfU0NBTiwgTUFJTU9OX1NDQU4gfSBzdHlwZTsN
    CiANCiAjZW5kaWYgLypHTE9CQUxfU1RSVUNUVVJFU19IICovDQogDQotLS0g
    bm1hcC5jfglGcmkgU2VwIDEwIDE4OjQ3OjI3IDE5OTkNCisrKyBubWFwLmMJ
    RnJpIFNlcCAxMCAxOTowOTo0NCAxOTk5DQpAQCAtMjUzLDYgKzI1Myw3IEBA
    DQogCWNhc2UgJ1AnOiAgby5waW5nc2NhbiA9IDE7IGJyZWFrOw0KIAljYXNl
    ICdSJzogIG8ucnBjc2NhbiA9IDE7IGJyZWFrOw0KIAljYXNlICdTJzogIG8u
    c3luc2NhbiA9IDE7IGJyZWFrOwkgIA0KKwljYXNlICdBJzogIG8uYWNrc2Nh
    biA9IDE7IGJyZWFrOw0KIAljYXNlICdUJzogIG8uY29ubmVjdHNjYW4gPSAx
    OyBicmVhazsNCiAJY2FzZSAnVSc6ICANCiAJICBmcHJpbnRmKG8ubm1hcF9z
    dGRvdXQsICJXQVJOSU5HOiAgLXNVIGlzIG5vdyBVRFAgc2NhbiAtLSBmb3Ig
    VENQIEZJTiBzY2FuIHVzZSAtc0ZcbiIpOw0KQEAgLTI4Myw3ICsyODQsNyBA
    QA0KIA0KIC8qIE5vdyB3ZSBjaGVjayB0aGUgb3B0aW9uIHNhbml0eSAqLw0K
    IC8qIEluc3VyZSB0aGF0IGF0IGxlYXN0IG9uZSBzY2FudHlwZSBpcyBzZWxl
    Y3RlZCAqLw0KLWlmICghby5jb25uZWN0c2NhbiAmJiAhby51ZHBzY2FuICYm
    ICFvLnN5bnNjYW4gJiYgIW8uZmluc2NhbiAmJiAhby5tYWltb25zY2FuICYm
    ICAhby5udWxsc2NhbiAmJiAhby54bWFzc2NhbiAmJiAhby5ib3VuY2VzY2Fu
    ICYmICFvLnBpbmdzY2FuKSB7DQoraWYgKCFvLmNvbm5lY3RzY2FuICYmICFv
    LnVkcHNjYW4gJiYgIW8uc3luc2NhbiAmJiAhby5hY2tzY2FuICYmICFvLmZp
    bnNjYW4gJiYgIW8ubWFpbW9uc2NhbiAmJiAgIW8ubnVsbHNjYW4gJiYgIW8u
    eG1hc3NjYW4gJiYgIW8uYm91bmNlc2NhbiAmJiAhby5waW5nc2Nhbikgew0K
    ICAgby5jb25uZWN0c2NhbisrOw0KICAgaWYgKG8udmVyYm9zZSkgZXJyb3Io
    Ik5vIHRjcCx1ZHAsIG9yIElDTVAgc2NhbnR5cGUgc3BlY2lmaWVkLCBhc3N1
    bWluZyB2YW5pbGxhIHRjcCBjb25uZWN0KCkgc2Nhbi4gVXNlIC1zUCBpZiB5
    b3UgcmVhbGx5IGRvbid0IHdhbnQgdG8gcG9ydHNjYW4gKGFuZCBqdXN0IHdh
    bnQgdG8gc2VlIHdoYXQgaG9zdHMgYXJlIHVwKS4iKTsNCiB9DQpAQCAtMjk5
    LDcgKzMwMCw3IEBADQogaWYgKGZhc3RzY2FuICYmIHBvcnRzKSB7DQogICBm
    YXRhbCgiWW91IGNhbiBzcGVjaWZ5IGZhc3Qgc2NhbiAoLUYpIG9yIGV4cGxp
    Y2l0bHkgc2VsZWN0IGluZGl2aWR1YWwgcG9ydHMgKC1wKSwgYnV0IG5vdCBi
    b3RoIik7DQogfSBlbHNlIGlmIChmYXN0c2Nhbikgew0KLSAgcG9ydHMgPSBn
    ZXRmYXN0cG9ydHMoby5zeW5zY2FufG8uY29ubmVjdHNjYW58by5mcmFnc2Nh
    bnxvLmZpbnNjYW58by5tYWltb25zY2FufG8uYm91bmNlc2NhbnxvLm51bGxz
    Y2FufG8ueG1hc3NjYW4sby51ZHBzY2FuKTsNCisgIHBvcnRzID0gZ2V0ZmFz
    dHBvcnRzKG8uYWNrc2NhbnxvLnN5bnNjYW58by5jb25uZWN0c2NhbnxvLmZy
    YWdzY2FufG8uZmluc2NhbnxvLm1haW1vbnNjYW58by5ib3VuY2VzY2FufG8u
    bnVsbHNjYW58by54bWFzc2NhbixvLnVkcHNjYW4pOw0KIH0NCiANCiBpZiAo
    by5waW5nc2NhbiAmJiBwb3J0cykgew0KQEAgLTMxMSw3ICszMTIsNyBAQA0K
    IH0NCiANCiBpZiAoIXBvcnRzKSB7DQotICBwb3J0cyA9IGdldGRlZmF1bHRw
    b3J0cyhvLnN5bnNjYW58by5jb25uZWN0c2NhbnxvLmZyYWdzY2FufG8uZmlu
    c2NhbnwNCisgIHBvcnRzID0gZ2V0ZGVmYXVsdHBvcnRzKG8uYWNrc2Nhbnxv
    LnN5bnNjYW58by5jb25uZWN0c2NhbnxvLmZyYWdzY2FufG8uZmluc2NhbnwN
    CiAJCQkgIG8ubWFpbW9uc2NhbnxvLmJvdW5jZXNjYW58by5udWxsc2Nhbnxv
    LnhtYXNzY2FuLA0KIAkJCSAgby51ZHBzY2FuKTsNCiB9DQpAQCAtMzIwLDcg
    KzMyMSw3IEBADQogaWYgKCFvLnRjcF9wcm9iZV9wb3J0KSBvLnRjcF9wcm9i
    ZV9wb3J0ID0gODA7DQogDQogDQotaWYgKG8ucGluZ3NjYW4gJiYgKG8uY29u
    bmVjdHNjYW4gfHwgby51ZHBzY2FuIHx8IG8uc3luc2NhbiB8fCBvLmZpbnNj
    YW4gfHwgby5tYWltb25zY2FuIHx8ICBvLm51bGxzY2FuIHx8IG8ueG1hc3Nj
    YW4gfHwgby5ib3VuY2VzY2FuKSkgew0KK2lmIChvLnBpbmdzY2FuICYmIChv
    LmNvbm5lY3RzY2FuIHx8IG8udWRwc2NhbiB8fCBvLmFja3NjYW4gfHwgby5z
    eW5zY2FuIHx8IG8uZmluc2NhbiB8fCBvLm1haW1vbnNjYW4gfHwgIG8ubnVs
    bHNjYW4gfHwgby54bWFzc2NhbiB8fCBvLmJvdW5jZXNjYW4pKSB7DQogICBm
    YXRhbCgiUGluZyBzY2FuIGlzIG5vdCB2YWxpZCB3aXRoIGFueSBvdGhlciBz
    Y2FuIHR5cGVzICh0aGUgb3RoZXIgb25lcyBhbGwgaW5jbHVkZSBhIHBpbmcg
    c2NhbiIpOw0KIH0NCiANCkBAIC0zMzIsNyArMzMzLDcgQEANCiAgICAgby5w
    aW5ndHlwZSA9IFBJTkdUWVBFX1RDUDsNCiAgIH0NCiANCi0gIGlmIChvLmZp
    bnNjYW4gfHwgby5zeW5zY2FuIHx8IG8ubWFpbW9uc2NhbiB8fCBvLm51bGxz
    Y2FuIHx8IG8ueG1hc3NjYW4gDQorICBpZiAoby5maW5zY2FuIHx8IG8uYWNr
    c2NhbiB8fCBvLnN5bnNjYW4gfHwgby5tYWltb25zY2FuIHx8IG8ubnVsbHNj
    YW4gfHwgby54bWFzc2NhbiANCiAgICAgICB8fCBvLnVkcHNjYW4gKSB7DQog
    ICAgIGZhdGFsKCJZb3UgcmVxdWVzdGVkIGEgc2NhbiB0eXBlIHdoaWNoIHJl
    cXVpcmVzIHIwMHQgcHJpdmlsZWdlcywgYW5kIHlvdSBkbyBub3QgaGF2ZSB0
    aGVtLlxuIik7DQogICB9DQpAQCAtMzUzLDggKzM1NCw4IEBADQogaWYgKG8u
    Ym91bmNlc2NhbiAmJiBvLnBpbmd0eXBlICE9IFBJTkdUWVBFX05PTkUpIA0K
    ICAgZnByaW50ZihvLm5tYXBfc3Rkb3V0LCAiSGludDogaWYgeW91ciBib3Vu
    Y2Ugc2NhbiB0YXJnZXQgaG9zdHMgYXJlbid0IHJlYWNoYWJsZSBmcm9tIGhl
    cmUsIHJlbWVtYmVyIHRvIHVzZSAtUDAgc28gd2UgZG9uJ3QgdHJ5IGFuZCBw
    aW5nIHRoZW0gcHJpb3IgdG8gdGhlIHNjYW5cbiIpOw0KIA0KLWlmIChvLmNv
    bm5lY3RzY2FuICsgby5zeW5zY2FuICsgby5maW5zY2FuICsgby5tYWltb25z
    Y2FuICsgby54bWFzc2NhbiArIG8ubnVsbHNjYW4gPiAxKSB7DQotICBmYXRh
    bCgiWW91IHNwZWNpZmllZCBtb3JlIHRoYW4gb25lIHR5cGUgb2YgVENQIHNj
    YW4uICBQbGVhc2UgY2hvb3NlIG9ubHkgb25lIG9mIC1zVCwgLXNTLCAtc0Ys
    IC1zTSwgLXNYLCBhbmQgLXNOIik7DQoraWYgKG8uY29ubmVjdHNjYW4gKyBv
    LmFja3NjYW4gKyBvLnN5bnNjYW4gKyBvLmZpbnNjYW4gKyBvLm1haW1vbnNj
    YW4gKyBvLnhtYXNzY2FuICsgby5udWxsc2NhbiA+IDEpIHsNCisgIGZhdGFs
    KCJZb3Ugc3BlY2lmaWVkIG1vcmUgdGhhbiBvbmUgdHlwZSBvZiBUQ1Agc2Nh
    bi4gIFBsZWFzZSBjaG9vc2Ugb25seSBvbmUgb2YgLXNULCAtc1MsIC1zRiwg
    LXNNLCAtc1gsIC1zQSwgYW5kIC1zTiIpOw0KIH0NCiANCiBpZiAoby5udW1k
    ZWNveXMgPiAwICYmIChvLmJvdW5jZXNjYW4gfHwgby5jb25uZWN0c2Nhbikp
    IHsNCkBAIC0zNjIsOSArMzYzLDkgQEANCiB9DQogDQogaWYgKG8uZnJhZ3Nj
    YW4gJiYgKG8uY29ubmVjdHNjYW4gfHwgDQotCQkgICAoby51ZHBzY2FuICYm
    IChvLnN5bnNjYW4gKyBvLmZpbnNjYW4gKyBvLm1haW1vbnNjYW4gKyANCisJ
    CSAgIChvLnVkcHNjYW4gJiYgKG8uYWNrc2NhbiArIG8uc3luc2NhbiArIG8u
    Zmluc2NhbiArIG8ubWFpbW9uc2NhbiArIA0KIAkJCQkgIG8ueG1hc3NjYW4g
    KyBvLm51bGxzY2FuID09IDApKSkpDQotICBmYXRhbCgiRnJhZ21lbnRhdGlv
    biBzY2FuIGNhbiBvbmx5IGJlIHVzZWQgd2l0aCBTWU4sIEZJTiwgTWFpbW9u
    LCBYTUFTLCBvciBOVUxMIHNjYW4gdHlwZXMiKTsNCisgIGZhdGFsKCJGcmFn
    bWVudGF0aW9uIHNjYW4gY2FuIG9ubHkgYmUgdXNlZCB3aXRoIFNZTiwgRklO
    LCBNYWltb24sIFhNQVMsIEFDSywgb3IgTlVMTCBzY2FuIHR5cGVzIik7DQog
    IA0KIGlmIChvLmlkZW50c2NhbiAmJiAhby5jb25uZWN0c2Nhbikgew0KICAg
    ZXJyb3IoIklkZW50c2NhbiBvbmx5IHdvcmtzIHdpdGggY29ubmVjdCBzY2Fu
    ICgtc1QpIC4uLiBpZ25vcmluZyBvcHRpb24iKTsNCkBAIC01MzMsNyArNTM0
    LDcgQEANCiAgaWYgKGN1cnJlbnRocy0+ZmxhZ3MgJiBIT1NUX1VQIC8qICYm
    ICFjdXJyZW50aHMtPndpZXJkX3Jlc3BvbnNlcyovICYmDQogICAgICAhby5w
    aW5nc2Nhbikgew0KICAgIA0KLSAgIGlmIChjdXJyZW50aHMtPmZsYWdzICYg
    SE9TVF9VUCAmJiAhY3VycmVudGhzLT5zb3VyY2VfaXAuc19hZGRyICYmICgg
    by5zeW5zY2FuIHx8IG8uZmluc2NhbiB8fCBvLm1haW1vbnNjYW4gfHwgby51
    ZHBzY2FuIHx8IG8ubnVsbHNjYW4gfHwgby54bWFzc2NhbikpIHsNCisgICBp
    ZiAoY3VycmVudGhzLT5mbGFncyAmIEhPU1RfVVAgJiYgIWN1cnJlbnRocy0+
    c291cmNlX2lwLnNfYWRkciAmJiAoIG8uYWNrc2NhbiB8fCBvLnN5bnNjYW4g
    fHwgby5maW5zY2FuIHx8IG8ubWFpbW9uc2NhbiB8fCBvLnVkcHNjYW4gfHwg
    by5udWxsc2NhbiB8fCBvLnhtYXNzY2FuKSkgew0KICAgICAgaWYgKGdldGhv
    c3RuYW1lKG15bmFtZSwgTUFYSE9TVE5BTUVMRU4pIHx8IA0KIAkgISh0YXJn
    ZXQgPSBnZXRob3N0YnluYW1lKG15bmFtZSkpKQ0KICAgICAgICBmYXRhbCgi
    Q2Fubm90IGdldCBob3N0bmFtZSEgIFRyeSB1c2luZyAtUyA8bXlfSVBfYWRk
    cmVzcz4gb3IgLWUgPGludGVyZmFjZSB0byBzY2FuIHRocm91Z2g+XG4iKTsg
    DQpAQCAtNTQ1LDcgKzU0Niw3IEBADQogICAgfQ0KICAgIA0KICAgIC8qIEZp
    Z3VyZSBvdXQgd2hhdCBsaW5rLWxheWVyIGRldmljZSAoaW50ZXJmYWNlKSB0
    byB1c2UgKGllIGV0aDAsIHBwcDAsIGV0YykgKi8NCi0gICBpZiAoISpjdXJy
    ZW50aHMtPmRldmljZSAmJiBjdXJyZW50aHMtPmZsYWdzICYgSE9TVF9VUCAm
    JiAoby5udWxsc2NhbiB8fCBvLnhtYXNzY2FuIHx8IG8udWRwc2NhbiB8fCBv
    LmZpbnNjYW4gfHwgby5tYWltb25zY2FuIHx8ICBvLnN5bnNjYW4gfHwgby5v
    c3NjYW4pICYmIChpcGFkZHIyZGV2bmFtZSggY3VycmVudGhzLT5kZXZpY2Us
    ICZjdXJyZW50aHMtPnNvdXJjZV9pcCkgIT0gMCkpDQorICAgaWYgKCEqY3Vy
    cmVudGhzLT5kZXZpY2UgJiYgY3VycmVudGhzLT5mbGFncyAmIEhPU1RfVVAg
    JiYgKG8ubnVsbHNjYW4gfHwgby54bWFzc2NhbiB8fCBvLnVkcHNjYW4gfHwg
    by5maW5zY2FuIHx8IG8ubWFpbW9uc2NhbiB8fCAgby5zeW5zY2FuIHx8IG8u
    b3NzY2FuIHx8IG8uYWNrc2NhbikgJiYgKGlwYWRkcjJkZXZuYW1lKCBjdXJy
    ZW50aHMtPmRldmljZSwgJmN1cnJlbnRocy0+c291cmNlX2lwKSAhPSAwKSkN
    CiAgICAgIGZhdGFsKCJDb3VsZCBub3QgZmlndXJlIG91dCB3aGF0IGRldmlj
    ZSB0byBzZW5kIHRoZSBwYWNrZXQgb3V0IG9uISAgWW91IG1pZ2h0IHBvc3Np
    Ymx5IHdhbnQgdG8gdHJ5IC1TIChidXQgdGhpcyBpcyBwcm9iYWJseSBhIGJp
    Z2dlciBwcm9ibGVtKS4gIElmIHlvdSBhcmUgdHJ5aW5nIHRvIHNwMDBmIHRo
    ZSBzb3VyY2Ugb2YgYSBTWU4vRklOIHNjYW4gd2l0aCAtUyA8ZmFrZWlwPiwg
    dGhlbiB5b3UgbXVzdCB1c2UgLWUgZXRoMCAob3Igb3RoZXIgZGV2aWNlbmFt
    ZSkgdG8gdGVsbCB1cyB3aGF0IGludGVyZmFjZSB0byB1c2UuXG4iKTsNCiAg
    ICAvKiBTZXQgdXAgdGhlIGRlY295ICovDQogICAgby5kZWNveXNbby5kZWNv
    eXR1cm5dID0gY3VycmVudGhzLT5zb3VyY2VfaXA7DQpAQCAtNTU0LDYgKzU1
    NSw3IEBADQogICAgDQogICAgDQogICAgaWYgKG8uc3luc2NhbikgcG9zX3Nj
    YW4oY3VycmVudGhzLCBwb3J0cywgU1lOX1NDQU4pOw0KKyAgIGlmIChvLmFj
    a3NjYW4pIHBvc19zY2FuKGN1cnJlbnRocywgcG9ydHMsIEFDS19TQ0FOKTsN
    CiAgICBpZiAoby5jb25uZWN0c2NhbikgcG9zX3NjYW4oY3VycmVudGhzLCBw
    b3J0cywgQ09OTkVDVF9TQ0FOKTsgICAgICANCiAgICANCiAgICBpZiAoby5m
    aW5zY2FuKSBzdXBlcl9zY2FuKGN1cnJlbnRocywgcG9ydHMsIEZJTl9TQ0FO
    KTsNCkBAIC0xOTkzLDcgKzE5OTUsNyBAQA0KICAgRkRfWkVSTygmY3NpLmZk
    c193cml0ZSk7DQogICBGRF9aRVJPKCZjc2kuZmRzX2V4Y2VwdCk7DQogDQot
    ICBpZiAoc2NhbnR5cGUgPT0gU1lOX1NDQU4gfHwgc2NhbnR5cGUgPT0gUlBD
    X1NDQU4pDQorICBpZiAoc2NhbnR5cGUgPT0gU1lOX1NDQU4gfHwgc2NhbnR5
    cGUgPT0gUlBDX1NDQU4gfHwgc2NhbnR5cGUgPT0gQUNLX1NDQU4pDQogICAg
    IHNzLm1heF93aWR0aCA9IDE1MDsNCiAgIGVsc2Ugc3MubWF4X3dpZHRoID0g
    by5tYXhfc29ja2V0czsNCiANCkBAIC0yMDI1LDcgKzIwMjcsNyBAQA0KICAg
    fQ0KICAgIA0KICAgLyogSW5pdCBvdXIgcmF3IHNvY2tldCAqLw0KLSAgaWYg
    KHNjYW50eXBlID09IFNZTl9TQ0FOKSB7ICANCisgIGlmICgoc2NhbnR5cGUg
    PT0gU1lOX1NDQU4pIHx8IChzY2FudHlwZSA9PSBBQ0tfU0NBTikpIHsgIA0K
    ICAgICBpZiAoKHJhd3NkID0gc29ja2V0KEFGX0lORVQsIFNPQ0tfUkFXLCBJ
    UFBST1RPX1JBVykpIDwgMCApDQogICAgICAgcGZhdGFsKCJzb2NrZXQgdHJv
    dWJsZXMgaW4gc3VwZXJfc2NhbiIpOw0KICAgICAvKiBXZSBkbyBub3Qgd2Fu
    J3QgdG8gdW5ibG9jayB0aGUgc29ja2V0IHNpbmNlIHdlIHdhbnQgdG8gd2Fp
    dCANCkBAIC0yMDc1LDcgKzIwNzcsMTAgQEANCiAgICAgICBmYXRhbCgiRXJy
    b3IgY29tcGlsaW5nIG91ciBwY2FwIGZpbHRlcjogJXNcbiIsIHBjYXBfZ2V0
    ZXJyKHBkKSk7DQogICAgIGlmIChwY2FwX3NldGZpbHRlcihwZCwgJmZjb2Rl
    KSA8IDAgKQ0KICAgICAgIGZhdGFsKCJGYWlsZWQgdG8gc2V0IHRoZSBwY2Fw
    IGZpbHRlcjogJXNcbiIsIHBjYXBfZ2V0ZXJyKHBkKSk7DQotICAgIHNjYW5m
    bGFncyA9IFRIX1NZTjsNCisgICAgaWYgKHNjYW50eXBlID09IFNZTl9TQ0FO
    KQ0KKyAgICAgIHNjYW5mbGFncyA9IFRIX1NZTjsNCisgICAgZWxzZQ0KKyAg
    ICAgIHNjYW5mbGFncyA9IFRIX0FDSzsNCiAgIH0gZWxzZSBpZiAoc2NhbnR5
    cGUgPT0gQ09OTkVDVF9TQ0FOKSB7DQogICAgIHJhd3NkID0gLTE7DQogICAg
    IC8qIEluaXQgb3VyIHNvY2sgKi8NCkBAIC0yMTA3LDcgKzIxMTIsOSBAQA0K
    ICAgICAgIGZwcmludGYoby5ubWFwX3N0ZG91dCwgIkluaXRpYXRpbmcgU1lO
    IGhhbGYtb3BlbiBzdGVhbHRoIHNjYW4gYWdhaW5zdCAlcyAoJXMpXG4iLCB0
    YXJnZXQtPm5hbWUsIGluZXRfbnRvYSh0YXJnZXQtPmhvc3QpKTsNCiAgICAg
    ZWxzZSBpZiAoc2NhbnR5cGUgPT0gQ09OTkVDVF9TQ0FOKQ0KICAgICAgIGZw
    cmludGYoby5ubWFwX3N0ZG91dCwgIkluaXRpYXRpbmcgVENQIGNvbm5lY3Qo
    KSBzY2FuIGFnYWluc3QgJXMgKCVzKVxuIix0YXJnZXQtPm5hbWUsIGluZXRf
    bnRvYSh0YXJnZXQtPmhvc3QpKTsgDQotICAgIGVsc2UgIHsNCisgICAgZWxz
    ZSBpZiAoc2NhbnR5cGUgPT0gQUNLX1NDQU4pDQorICAgICAgZnByaW50Zihv
    Lm5tYXBfc3Rkb3V0LCAiSW5pdGlhdGluZyBBQ0sgc2NhbiBhZ2FpbnN0ICVz
    ICglcylcbiIsdGFyZ2V0LT5uYW1lLCBpbmV0X250b2EodGFyZ2V0LT5ob3N0
    KSk7DQorICAgIGVsc2Ugew0KICAgICAgIGZwcmludGYoby5ubWFwX3N0ZG91
    dCwgIkluaXRpYXRpbmcgUlBDIHNjYW4gYWdhaW5zdCAlcyAoJXMpXG4iLHRh
    cmdldC0+bmFtZSwgaW5ldF9udG9hKHRhcmdldC0+aG9zdCkpOyANCiAgICAg
    fQ0KICAgfQ0KQEAgLTIxODEsNyArMjE4OCw3IEBADQogCQkgIHNjYW5bY3Vy
    cmVudC0+bmV4dF0ucHJldiA9IGN1cnJlbnQgLSBzY2FuOwkgICAgICANCiAJ
    CX0NCiAJICAgICAgfQ0KLQkgICAgICBpZiAoc2NhbnR5cGUgPT0gU1lOX1ND
    QU4gfHwgc2NhbnR5cGUgPT0gUlBDX1NDQU4pDQorCSAgICAgIGlmIChzY2Fu
    dHlwZSA9PSBTWU5fU0NBTiB8fCBzY2FudHlwZSA9PSBSUENfU0NBTiB8fCBz
    Y2FudHlwZSA9PSBBQ0tfU0NBTikNCiAJCXNzLm51bXF1ZXJpZXNfb3V0c3Rh
    bmRpbmctLTsNCiAJICAgICAgZWxzZSB7DQogCQkvKiBjbG9zZSB0aGUgYXBw
    cm9wcmlhdGUgc2QgZm9yIGVhY2ggdHJ5ICovDQpAQCAtMjIwMiw3ICsyMjA5
    LDcgQEANCiAJICAgICAgY3VycmVudC0+dHJ5bnVtKys7DQogCSAgICAgIGdl
    dHRpbWVvZmRheSgmY3VycmVudC0+c2VudFtjdXJyZW50LT50cnludW1dLCBO
    VUxMKTsNCiAJICAgICAgbm93ID0gY3VycmVudC0+c2VudFtjdXJyZW50LT50
    cnludW1dOw0KLQkgICAgICBpZiAoc2NhbnR5cGUgPT0gU1lOX1NDQU4pIHsJ
    ICAgICAgDQorCSAgICAgIGlmICgoc2NhbnR5cGUgPT0gU1lOX1NDQU4pIHx8
    IChzY2FudHlwZSA9PSBBQ0tfU0NBTikpIHsJICAgICAgDQogCQlmb3IoZGVj
    b3k9MDsgZGVjb3kgPCBvLm51bWRlY295czsgZGVjb3krKykgew0KIAkJICBp
    ZiAoby5mcmFnc2NhbikNCiAJCSAgICBzZW5kX3NtYWxsX2ZyYWd6KHJhd3Nk
    LCAmby5kZWNveXNbZGVjb3ldLCAmdGFyZ2V0LT5ob3N0LCBzZXF1ZW5jZXNb
    Y3VycmVudC0+dHJ5bnVtXSxvLm1hZ2ljX3BvcnQgKyB0cmllcyAqIDMgKyBj
    dXJyZW50LT50cnludW0sIGN1cnJlbnQtPnBvcnRubywgc2NhbmZsYWdzKTsN
    CkBAIC0yMjkyLDcgKzIyOTksNyBAQA0KIAkgIC8qCWlmICghdGVzdGluZ2xp
    c3QpIHRlc3RpbmdsaXN0ID0gY3VycmVudDsgKi8NCiAJICBzcy5udW1xdWVy
    aWVzX291dHN0YW5kaW5nKys7DQogCSAgZ2V0dGltZW9mZGF5KCZjdXJyZW50
    LT5zZW50WzBdLCBOVUxMKTsNCi0JICBpZiAoc2NhbnR5cGUgPT0gU1lOX1ND
    QU4pIHsJICANCisJICBpZiAoKHNjYW50eXBlID09IFNZTl9TQ0FOKSB8fCAo
    c2NhbnR5cGUgPT0gQUNLX1NDQU4pKSB7CSAgDQogCSAgICBmb3IoZGVjb3k9
    MDsgZGVjb3kgPCBvLm51bWRlY295czsgZGVjb3krKykgew0KIAkgICAgICBp
    ZiAoby5mcmFnc2NhbikNCiAJCXNlbmRfc21hbGxfZnJhZ3oocmF3c2QsICZv
    LmRlY295c1tkZWNveV0sICZ0YXJnZXQtPmhvc3QsIHNlcXVlbmNlc1tjdXJy
    ZW50LT50cnludW1dLCBvLm1hZ2ljX3BvcnQgKyB0cmllcyAqIDMsIGN1cnJl
    bnQtPnBvcnRubywgc2NhbmZsYWdzKTsNCkBAIC0yMzQ5LDggKzIzNTYsOCBA
    QA0KIA0KICAgICAgIC8qIE5vdyB0aGF0IHdlIGhhdmUgc2VudCB0aGUgcGFj
    a2V0cyB3ZSB3YWl0IGZvciByZXNwb25zZXMgKi8NCiAgICAgICBzcy5hbHJl
    YWR5ZGVjcmVhc2VkcXVlcmllcyA9IDA7DQotICAgICAgaWYgKHNjYW50eXBl
    ID09IFNZTl9TQ0FOKQ0KLQlnZXRfc3luX3Jlc3VsdHModGFyZ2V0LCBzY2Fu
    LCAmc3MsICZwaWwsIHBvcnRsb29rdXAsIHBkLCBzZXF1ZW5jZXMpOw0KKyAg
    ICAgIGlmICgoc2NhbnR5cGUgPT0gU1lOX1NDQU4pIHx8IChzY2FudHlwZSA9
    PSBBQ0tfU0NBTikpDQorCWdldF9zeW5fcmVzdWx0cyh0YXJnZXQsIHNjYW4s
    ICZzcywgJnBpbCwgcG9ydGxvb2t1cCwgcGQsIHNlcXVlbmNlcywgc2NhbnR5
    cGUpOw0KICAgICAgIGVsc2UgaWYgKHNjYW50eXBlID09IFJQQ19TQ0FOKSB7
    DQogICAgICAgLyogV2Ugb25seSBib3RoZXIgd29ycnlpbmcgYWJvdXQgcmVz
    cG9uc2VzIGlmIHdlIGhhdmVuJ3QgcmVhY2hlZA0KICAgICAgICAgIGEgY29u
    Y2x1c2lvbiB5ZXQgKi8NCkBAIC0yNDM1LDcgKzI0NDIsNyBAQA0KICAgfQ0K
    IA0KICAgaWYgKG8udmVyYm9zZSkNCi0gICAgZnByaW50ZihvLm5tYXBfc3Rk
    b3V0LCAiVGhlICVzIHNjYW4gdG9vayAlbGQgc2Vjb25kcyB0byBzY2FuICVk
    IHBvcnRzLlxuIiwgKHNjYW50eXBlID09IFNZTl9TQ0FOKT8gIlNZTiIgOiAo
    c2NhbnR5cGUgPT0gQ09OTkVDVF9TQ0FOKT8gIlRDUCBjb25uZWN0IiA6ICJS
    UEMiLCAgKGxvbmcpIHRpbWUoTlVMTCkgLSBzdGFydHRpbWUsIG8ubnVtcG9y
    dHMpOw0KKyAgICBmcHJpbnRmKG8ubm1hcF9zdGRvdXQsICJUaGUgJXMgc2Nh
    biB0b29rICVsZCBzZWNvbmRzIHRvIHNjYW4gJWQgcG9ydHMuXG4iLCAoc2Nh
    bnR5cGUgPT0gQUNLX1NDQU4pID8gIkFDSyIgOiAoc2NhbnR5cGUgPT0gU1lO
    X1NDQU4pPyAiU1lOIiA6IChzY2FudHlwZSA9PSBDT05ORUNUX1NDQU4pPyAi
    VENQIGNvbm5lY3QiIDogIlJQQyIsICAobG9uZykgdGltZShOVUxMKSAtIHN0
    YXJ0dGltZSwgby5udW1wb3J0cyk7DQogICANCiAgIGZyZWUoc2Nhbik7DQog
    ICBpZiAocmF3c2QgPj0gMCkgDQpAQCAtMjg1Nyw3ICsyODY0LDcgQEANCiAN
    CiB2b2lkIGdldF9zeW5fcmVzdWx0cyhzdHJ1Y3QgaG9zdHN0cnVjdCAqdGFy
    Z2V0LCBzdHJ1Y3QgcG9ydGluZm8gKnNjYW4sDQogCQkgICAgIHN0cnVjdCBz
    Y2Fuc3RhdHMgKnNzLCBzdHJ1Y3QgcG9ydGluZm9saXN0ICpwaWwsIA0KLQkJ
    ICAgICBpbnQgKnBvcnRsb29rdXAsIHBjYXBfdCAqcGQsIHVuc2lnbmVkIGxv
    bmcgKnNlcXVlbmNlcykgew0KKwkJICAgICBpbnQgKnBvcnRsb29rdXAsIHBj
    YXBfdCAqcGQsIHVuc2lnbmVkIGxvbmcgKnNlcXVlbmNlcywgc3R5cGUgc2Nh
    bnR5cGUpIHsNCiANCiBzdHJ1Y3QgaXAgKmlwOw0KIGludCBieXRlczsNCkBA
    IC0yOTE2LDEyICsyOTIzLDIxIEBADQogCSAgICAgIGVycm9yKCJSZWNlaXZl
    ZCBTWU4gcGFja2V0IGltcGx5aW5nIHRyeW51bSAlZCBmcm9tIHBvcnQgJWhp
    IGV2ZW4gdGhvdWdoIHRoYXQgcG9ydCBpcyBvbmx5IG9uIHRyeW51bSAlZCAo
    Y291bGQgYmUgZnJvbSBhbiBlYXJsaWVyIHJvdW5kKSIsIHRyeW51bSwgbmV3
    cG9ydCwgY3VycmVudC0+dHJ5bnVtKTsNCiAJICAgIHRyeW51bSA9IC0xOw0K
    IAkgIH0NCi0JICBpZiAoKHRjcC0+dGhfZmxhZ3MgJiAoVEhfU1lOfFRIX0FD
    SykpID09IChUSF9TWU58VEhfQUNLKSkgewkgIA0KLQkgICAgbmV3c3RhdGUg
    PSBQT1JUX09QRU47DQotCSAgfQ0KLQkgIGVsc2UgaWYgKHRjcC0+dGhfZmxh
    Z3MgJiBUSF9SU1QpIHsJICANCi0JICAgIG5ld3N0YXRlID0gUE9SVF9DTE9T
    RUQ7DQorICAgICAgICAgIGlmIChzY2FudHlwZSA9PSBTWU5fU0NBTikgew0K
    KwkgICAgaWYgKCh0Y3AtPnRoX2ZsYWdzICYgKFRIX1NZTnxUSF9BQ0spKSA9
    PSAoVEhfU1lOfFRIX0FDSykpIHsJICANCisJICAgICAgbmV3c3RhdGUgPSBQ
    T1JUX09QRU47DQorCSAgICB9DQorICAgICAgICAgICAgZWxzZSBpZiAodGNw
    LT50aF9mbGFncyAmIFRIX1JTVCkgewkgIA0KKwkgICAgICBuZXdzdGF0ZSA9
    IFBPUlRfQ0xPU0VEOw0KIAkgICAgfQkNCisgICAgICAgICAgfQ0KKyAgICAg
    ICAgICBpZiAoc2NhbnR5cGUgPT0gQUNLX1NDQU4pIHsNCisgICAgICAgICAg
    ICBpZiAodGNwLT50aF93aW4pIHsNCisgICAgICAgICAgICAgIG5ld3N0YXRl
    ID0gUE9SVF9PUEVOOw0KKyAgICAgICAgICAgIH0gZWxzZSB7DQorICAgICAg
    ICAgICAgICBuZXdzdGF0ZSA9IFBPUlRfQ0xPU0VEOw0KKyAgICAgICAgICAg
    IH0NCisgICAgICAgICAgfSANCiAJfSBlbHNlIGlmIChpcC0+aXBfcCA9PSBJ
    UFBST1RPX0lDTVApIHsNCiAJICBpY21wID0gKHN0cnVjdCBpY21wICopICgo
    Y2hhciAqKWlwICsgc2l6ZW9mKHN0cnVjdCBpcCkpOw0KIAkgIGlwMiA9IChz
    dHJ1Y3QgaXAgKikgKCgoY2hhciAqKSBpcCkgKyA0ICogaXAtPmlwX2hsICsg
    OCk7DQpAQCAtMjk5MCw4ICszMDA2LDggQEANCiAJCWZhdGFsKCJEZWxldGlv
    biBvZiBwb3J0ICVkIGZhaWxlZFxuIiwgcG9ydHNbaV0pOw0KIAkgIH0NCiAJ
    fQ0KLQlpZiAoby5jb25uZWN0c2NhbiB8fCBvLm51bGxzY2FuIHx8IG8ueG1h
    c3NjYW4gfHwgby5zeW5zY2FuIHx8IA0KLQkgICAgby5tYWltb25zY2FuIHx8
    IG8uZmluc2NhbiB8fCBvLmJvdW5jZXNjYW4pIHsNCisJaWYgKG8uY29ubmVj
    dHNjYW4gfHwgby5udWxsc2NhbiB8fCBvLnhtYXNzY2FuIHx8IG8uc3luc2Nh
    biB8fA0KKyAgICAgICAgICAgIG8uYWNrc2NhbiB8fCBvLm1haW1vbnNjYW4g
    fHwgby5maW5zY2FuIHx8IG8uYm91bmNlc2Nhbikgew0KIAkgIGN1cnJlbnQg
    PSBsb29rdXBwb3J0KCpwbCwgcG9ydHNbaV0sIElQUFJPVE9fVENQKTsNCiAJ
    ICBpZiAoIWN1cnJlbnQpDQogCSAgICBhZGRwb3J0KHBsLCBwb3J0c1tpXSwg
    SVBQUk9UT19UQ1AsIE5VTEwsIFBPUlRfVU5GSVJFV0FMTEVEKTsNCi0tLSBu
    bWFwLmh+CUZyaSBTZXAgMTAgMTk6MDI6MTUgMTk5OQ0KKysrIG5tYXAuaAlG
    cmkgU2VwIDEwIDE5OjA5OjQ1IDE5OTkNCkBAIC0yNTgsNyArMjU4LDcgQEAN
    CiAJCSAgIHN0cnVjdCBwb3J0aW5mb2xpc3QgKnBpbCwgc3RydWN0IGNvbm5l
    Y3Rzb2NraW5mbyAqY3NpKTsNCiB2b2lkIGdldF9zeW5fcmVzdWx0cyhzdHJ1
    Y3QgaG9zdHN0cnVjdCAqdGFyZ2V0LCBzdHJ1Y3QgcG9ydGluZm8gKnNjYW4s
    DQogCQkgICAgIHN0cnVjdCBzY2Fuc3RhdHMgKnNzLCBzdHJ1Y3QgcG9ydGlu
    Zm9saXN0ICpwaWwsIA0KLQkJICAgICBpbnQgKnBvcnRsb29rdXAsIHBjYXBf
    dCAqcGQsIHVuc2lnbmVkIGxvbmcgKnNlcXVlbmNlcyk7DQorCQkgICAgIGlu
    dCAqcG9ydGxvb2t1cCwgcGNhcF90ICpwZCwgdW5zaWduZWQgbG9uZyAqc2Vx
    dWVuY2VzLCBzdHlwZSBzY2FudHlwZSk7DQogaW50IGdldF9jb25uZWN0X3Jl
    c3VsdHMoc3RydWN0IGhvc3RzdHJ1Y3QgKnRhcmdldCwgc3RydWN0IHBvcnRp
    bmZvICpzY2FuLCANCiAJCQkgc3RydWN0IHNjYW5zdGF0cyAqc3MsIHN0cnVj
    dCBwb3J0aW5mb2xpc3QgKnBpbCwgDQogCQkJIGludCAqcG9ydGxvb2t1cCwg
    dW5zaWduZWQgbG9uZyAqc2VxdWVuY2VzLCANCg==
    ---2141238973-383924441-937419536=:1867--
    



    This archive was generated by hypermail 2b30 : Fri Apr 13 2001 - 15:04:09 PDT