diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..00691c0 --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +XSupplicant-2.2.0-src.tar.gz diff --git a/XSupplicant-2.1.8-ppc-fix.patch b/XSupplicant-2.1.8-ppc-fix.patch new file mode 100644 index 0000000..465c249 --- /dev/null +++ b/XSupplicant-2.1.8-ppc-fix.patch @@ -0,0 +1,25 @@ +diff -up XSupplicant-2.1.8-src/xsupplicant/lib/libcrashdump/sigsegv.c.ppc XSupplicant-2.1.8-src/xsupplicant/lib/libcrashdump/sigsegv.c +--- XSupplicant-2.1.8-src/xsupplicant/lib/libcrashdump/sigsegv.c.ppc 2009-05-26 19:16:26.000000000 -0400 ++++ XSupplicant-2.1.8-src/xsupplicant/lib/libcrashdump/sigsegv.c 2009-09-02 17:57:26.857041963 -0400 +@@ -81,7 +81,21 @@ static void signal_segv(int signum, sigi + // NGREG not defined on Mac OS X... + #ifndef __APPLE__ + for(i = 0; i < NGREG; i++) ++#if defined(__linux__) ++ #if defined(__powerpc__) ++ #if defined(__powerpc64__) ++ fprintf(fh, "reg[%02d] = 0x" REGFORMAT "\n", i, ucontext->uc_mcontext.gp_regs[i]); ++ #else ++ fprintf(fh, "reg[%02d] = 0x" REGFORMAT "\n", i, ucontext->uc_mcontext.uc_regs->gregs[i]); ++ #endif ++ #else ++ /* This is a bit of a lie, ia64 is also special, but I don't care. */ + fprintf(fh, "reg[%02d] = 0x" REGFORMAT "\n", i, ucontext->uc_mcontext.gregs[i]); ++ #endif ++#else ++ /* This is probably not right for any OS besides Solaris x86. */ ++ fprintf(fh, "reg[%02d] = 0x" REGFORMAT "\n", i, ucontext->uc_mcontext.gregs[i]); ++#endif + #else + fprintf(fh, "NGREG Not available on Mac OS X.\n"); + #endif diff --git a/XSupplicantUI.desktop b/XSupplicantUI.desktop new file mode 100644 index 0000000..75fc30d --- /dev/null +++ b/XSupplicantUI.desktop @@ -0,0 +1,9 @@ +[Desktop Entry] +Encoding=UTF-8 +Name=XSupplicantUI +GenericName=XSupplicant User Interface +Exec=/usr/bin/XSupplicantUI +Icon=XSupplicantUI +Terminal=false +Type=Application +Categories=Network; diff --git a/dead.package b/dead.package deleted file mode 100644 index 40b9761..0000000 --- a/dead.package +++ /dev/null @@ -1 +0,0 @@ -package has been blocked since f25, retiring. See https://bugzilla.redhat.com/show_bug.cgi\?id\=1635463 diff --git a/sources b/sources new file mode 100644 index 0000000..d49f5c3 --- /dev/null +++ b/sources @@ -0,0 +1 @@ +970955e115efc36cf32c5b508e5f1188 XSupplicant-2.2.0-src.tar.gz diff --git a/v19wireless.h b/v19wireless.h new file mode 100644 index 0000000..55d06a4 --- /dev/null +++ b/v19wireless.h @@ -0,0 +1,1066 @@ +/* + * This file define a set of standard wireless extensions + * + * Version : 19 18.3.05 + * + * Authors : Jean Tourrilhes - HPL - + * Copyright (c) 1997-2005 Jean Tourrilhes, All Rights Reserved. + */ + +#ifndef _LINUX_WIRELESS_H +#define _LINUX_WIRELESS_H + +/************************** DOCUMENTATION **************************/ +/* + * Initial APIs (1996 -> onward) : + * ----------------------------- + * Basically, the wireless extensions are for now a set of standard ioctl + * call + /proc/net/wireless + * + * The entry /proc/net/wireless give statistics and information on the + * driver. + * This is better than having each driver having its entry because + * its centralised and we may remove the driver module safely. + * + * Ioctl are used to configure the driver and issue commands. This is + * better than command line options of insmod because we may want to + * change dynamically (while the driver is running) some parameters. + * + * The ioctl mechanimsm are copied from standard devices ioctl. + * We have the list of command plus a structure descibing the + * data exchanged... + * Note that to add these ioctl, I was obliged to modify : + * # net/core/dev.c (two place + add include) + * # net/ipv4/af_inet.c (one place + add include) + * + * /proc/net/wireless is a copy of /proc/net/dev. + * We have a structure for data passed from the driver to /proc/net/wireless + * Too add this, I've modified : + * # net/core/dev.c (two other places) + * # include/linux/netdevice.h (one place) + * # include/linux/proc_fs.h (one place) + * + * New driver API (2002 -> onward) : + * ------------------------------- + * This file is only concerned with the user space API and common definitions. + * The new driver API is defined and documented in : + * # include/net/iw_handler.h + * + * Note as well that /proc/net/wireless implementation has now moved in : + * # net/core/wireless.c + * + * Wireless Events (2002 -> onward) : + * -------------------------------- + * Events are defined at the end of this file, and implemented in : + * # net/core/wireless.c + * + * Other comments : + * -------------- + * Do not add here things that are redundant with other mechanisms + * (drivers init, ifconfig, /proc/net/dev, ...) and with are not + * wireless specific. + * + * These wireless extensions are not magic : each driver has to provide + * support for them... + * + * IMPORTANT NOTE : As everything in the kernel, this is very much a + * work in progress. Contact me if you have ideas of improvements... + */ + +/***************************** INCLUDES *****************************/ + +#include /* for "caddr_t" et al */ +#include /* for "struct sockaddr" et al */ +#include /* for IFNAMSIZ and co... */ + +/***************************** VERSION *****************************/ +/* + * This constant is used to know the availability of the wireless + * extensions and to know which version of wireless extensions it is + * (there is some stuff that will be added in the future...) + * I just plan to increment with each new version. + */ +#define WIRELESS_EXT 19 + +/* + * Changes : + * + * V2 to V3 + * -------- + * Alan Cox start some incompatibles changes. I've integrated a bit more. + * - Encryption renamed to Encode to avoid US regulation problems + * - Frequency changed from float to struct to avoid problems on old 386 + * + * V3 to V4 + * -------- + * - Add sensitivity + * + * V4 to V5 + * -------- + * - Missing encoding definitions in range + * - Access points stuff + * + * V5 to V6 + * -------- + * - 802.11 support (ESSID ioctls) + * + * V6 to V7 + * -------- + * - define IW_ESSID_MAX_SIZE and IW_MAX_AP + * + * V7 to V8 + * -------- + * - Changed my e-mail address + * - More 802.11 support (nickname, rate, rts, frag) + * - List index in frequencies + * + * V8 to V9 + * -------- + * - Support for 'mode of operation' (ad-hoc, managed...) + * - Support for unicast and multicast power saving + * - Change encoding to support larger tokens (>64 bits) + * - Updated iw_params (disable, flags) and use it for NWID + * - Extracted iw_point from iwreq for clarity + * + * V9 to V10 + * --------- + * - Add PM capability to range structure + * - Add PM modifier : MAX/MIN/RELATIVE + * - Add encoding option : IW_ENCODE_NOKEY + * - Add TxPower ioctls (work like TxRate) + * + * V10 to V11 + * ---------- + * - Add WE version in range (help backward/forward compatibility) + * - Add retry ioctls (work like PM) + * + * V11 to V12 + * ---------- + * - Add SIOCSIWSTATS to get /proc/net/wireless programatically + * - Add DEV PRIVATE IOCTL to avoid collisions in SIOCDEVPRIVATE space + * - Add new statistics (frag, retry, beacon) + * - Add average quality (for user space calibration) + * + * V12 to V13 + * ---------- + * - Document creation of new driver API. + * - Extract union iwreq_data from struct iwreq (for new driver API). + * - Rename SIOCSIWNAME as SIOCSIWCOMMIT + * + * V13 to V14 + * ---------- + * - Wireless Events support : define struct iw_event + * - Define additional specific event numbers + * - Add "addr" and "param" fields in union iwreq_data + * - AP scanning stuff (SIOCSIWSCAN and friends) + * + * V14 to V15 + * ---------- + * - Add IW_PRIV_TYPE_ADDR for struct sockaddr private arg + * - Make struct iw_freq signed (both m & e), add explicit padding + * - Add IWEVCUSTOM for driver specific event/scanning token + * - Add IW_MAX_GET_SPY for driver returning a lot of addresses + * - Add IW_TXPOW_RANGE for range of Tx Powers + * - Add IWEVREGISTERED & IWEVEXPIRED events for Access Points + * - Add IW_MODE_MONITOR for passive monitor + * + * V15 to V16 + * ---------- + * - Increase the number of bitrates in iw_range to 32 (for 802.11g) + * - Increase the number of frequencies in iw_range to 32 (for 802.11b+a) + * - Reshuffle struct iw_range for increases, add filler + * - Increase IW_MAX_AP to 64 for driver returning a lot of addresses + * - Remove IW_MAX_GET_SPY because conflict with enhanced spy support + * - Add SIOCSIWTHRSPY/SIOCGIWTHRSPY and "struct iw_thrspy" + * - Add IW_ENCODE_TEMP and iw_range->encoding_login_index + * + * V16 to V17 + * ---------- + * - Add flags to frequency -> auto/fixed + * - Document (struct iw_quality *)->updated, add new flags (INVALID) + * - Wireless Event capability in struct iw_range + * - Add support for relative TxPower (yick !) + * + * V17 to V18 (From Jouni Malinen ) + * ---------- + * - Add support for WPA/WPA2 + * - Add extended encoding configuration (SIOCSIWENCODEEXT and + * SIOCGIWENCODEEXT) + * - Add SIOCSIWGENIE/SIOCGIWGENIE + * - Add SIOCSIWMLME + * - Add SIOCSIWPMKSA + * - Add struct iw_range bit field for supported encoding capabilities + * - Add optional scan request parameters for SIOCSIWSCAN + * - Add SIOCSIWAUTH/SIOCGIWAUTH for setting authentication and WPA + * related parameters (extensible up to 4096 parameter values) + * - Add wireless events: IWEVGENIE, IWEVMICHAELMICFAILURE, + * IWEVASSOCREQIE, IWEVASSOCRESPIE, IWEVPMKIDCAND + * + * V18 to V19 + * ---------- + * - Remove (struct iw_point *)->pointer from events and streams + * - Remove header includes to help user space + * - Increase IW_ENCODING_TOKEN_MAX from 32 to 64 + * - Add IW_QUAL_ALL_UPDATED and IW_QUAL_ALL_INVALID macros + * - Add explicit flag to tell stats are in dBm : IW_QUAL_DBM + * - Add IW_IOCTL_IDX() and IW_EVENT_IDX() macros + */ + +/**************************** CONSTANTS ****************************/ + +/* -------------------------- IOCTL LIST -------------------------- */ + +/* Wireless Identification */ +#define SIOCSIWCOMMIT 0x8B00 /* Commit pending changes to driver */ +#define SIOCGIWNAME 0x8B01 /* get name == wireless protocol */ +/* SIOCGIWNAME is used to verify the presence of Wireless Extensions. + * Common values : "IEEE 802.11-DS", "IEEE 802.11-FH", "IEEE 802.11b"... + * Don't put the name of your driver there, it's useless. */ + +/* Basic operations */ +#define SIOCSIWNWID 0x8B02 /* set network id (pre-802.11) */ +#define SIOCGIWNWID 0x8B03 /* get network id (the cell) */ +#define SIOCSIWFREQ 0x8B04 /* set channel/frequency (Hz) */ +#define SIOCGIWFREQ 0x8B05 /* get channel/frequency (Hz) */ +#define SIOCSIWMODE 0x8B06 /* set operation mode */ +#define SIOCGIWMODE 0x8B07 /* get operation mode */ +#define SIOCSIWSENS 0x8B08 /* set sensitivity (dBm) */ +#define SIOCGIWSENS 0x8B09 /* get sensitivity (dBm) */ + +/* Informative stuff */ +#define SIOCSIWRANGE 0x8B0A /* Unused */ +#define SIOCGIWRANGE 0x8B0B /* Get range of parameters */ +#define SIOCSIWPRIV 0x8B0C /* Unused */ +#define SIOCGIWPRIV 0x8B0D /* get private ioctl interface info */ +#define SIOCSIWSTATS 0x8B0E /* Unused */ +#define SIOCGIWSTATS 0x8B0F /* Get /proc/net/wireless stats */ +/* SIOCGIWSTATS is strictly used between user space and the kernel, and + * is never passed to the driver (i.e. the driver will never see it). */ + +/* Spy support (statistics per MAC address - used for Mobile IP support) */ +#define SIOCSIWSPY 0x8B10 /* set spy addresses */ +#define SIOCGIWSPY 0x8B11 /* get spy info (quality of link) */ +#define SIOCSIWTHRSPY 0x8B12 /* set spy threshold (spy event) */ +#define SIOCGIWTHRSPY 0x8B13 /* get spy threshold */ + +/* Access Point manipulation */ +#define SIOCSIWAP 0x8B14 /* set access point MAC addresses */ +#define SIOCGIWAP 0x8B15 /* get access point MAC addresses */ +#define SIOCGIWAPLIST 0x8B17 /* Deprecated in favor of scanning */ +#define SIOCSIWSCAN 0x8B18 /* trigger scanning (list cells) */ +#define SIOCGIWSCAN 0x8B19 /* get scanning results */ + +/* 802.11 specific support */ +#define SIOCSIWESSID 0x8B1A /* set ESSID (network name) */ +#define SIOCGIWESSID 0x8B1B /* get ESSID */ +#define SIOCSIWNICKN 0x8B1C /* set node name/nickname */ +#define SIOCGIWNICKN 0x8B1D /* get node name/nickname */ +/* As the ESSID and NICKN are strings up to 32 bytes long, it doesn't fit + * within the 'iwreq' structure, so we need to use the 'data' member to + * point to a string in user space, like it is done for RANGE... */ + +/* Other parameters useful in 802.11 and some other devices */ +#define SIOCSIWRATE 0x8B20 /* set default bit rate (bps) */ +#define SIOCGIWRATE 0x8B21 /* get default bit rate (bps) */ +#define SIOCSIWRTS 0x8B22 /* set RTS/CTS threshold (bytes) */ +#define SIOCGIWRTS 0x8B23 /* get RTS/CTS threshold (bytes) */ +#define SIOCSIWFRAG 0x8B24 /* set fragmentation thr (bytes) */ +#define SIOCGIWFRAG 0x8B25 /* get fragmentation thr (bytes) */ +#define SIOCSIWTXPOW 0x8B26 /* set transmit power (dBm) */ +#define SIOCGIWTXPOW 0x8B27 /* get transmit power (dBm) */ +#define SIOCSIWRETRY 0x8B28 /* set retry limits and lifetime */ +#define SIOCGIWRETRY 0x8B29 /* get retry limits and lifetime */ + +/* Encoding stuff (scrambling, hardware security, WEP...) */ +#define SIOCSIWENCODE 0x8B2A /* set encoding token & mode */ +#define SIOCGIWENCODE 0x8B2B /* get encoding token & mode */ +/* Power saving stuff (power management, unicast and multicast) */ +#define SIOCSIWPOWER 0x8B2C /* set Power Management settings */ +#define SIOCGIWPOWER 0x8B2D /* get Power Management settings */ + +/* WPA : Generic IEEE 802.11 informatiom element (e.g., for WPA/RSN/WMM). + * This ioctl uses struct iw_point and data buffer that includes IE id and len + * fields. More than one IE may be included in the request. Setting the generic + * IE to empty buffer (len=0) removes the generic IE from the driver. Drivers + * are allowed to generate their own WPA/RSN IEs, but in these cases, drivers + * are required to report the used IE as a wireless event, e.g., when + * associating with an AP. */ +#define SIOCSIWGENIE 0x8B30 /* set generic IE */ +#define SIOCGIWGENIE 0x8B31 /* get generic IE */ + +/* WPA : IEEE 802.11 MLME requests */ +#define SIOCSIWMLME 0x8B16 /* request MLME operation; uses + * struct iw_mlme */ +/* WPA : Authentication mode parameters */ +#define SIOCSIWAUTH 0x8B32 /* set authentication mode params */ +#define SIOCGIWAUTH 0x8B33 /* get authentication mode params */ + +/* WPA : Extended version of encoding configuration */ +#define SIOCSIWENCODEEXT 0x8B34 /* set encoding token & mode */ +#define SIOCGIWENCODEEXT 0x8B35 /* get encoding token & mode */ + +/* WPA2 : PMKSA cache management */ +#define SIOCSIWPMKSA 0x8B36 /* PMKSA cache operation */ + +/* -------------------- DEV PRIVATE IOCTL LIST -------------------- */ + +/* These 32 ioctl are wireless device private, for 16 commands. + * Each driver is free to use them for whatever purpose it chooses, + * however the driver *must* export the description of those ioctls + * with SIOCGIWPRIV and *must* use arguments as defined below. + * If you don't follow those rules, DaveM is going to hate you (reason : + * it make mixed 32/64bit operation impossible). + */ +#define SIOCIWFIRSTPRIV 0x8BE0 +#define SIOCIWLASTPRIV 0x8BFF +/* Previously, we were using SIOCDEVPRIVATE, but we now have our + * separate range because of collisions with other tools such as + * 'mii-tool'. + * We now have 32 commands, so a bit more space ;-). + * Also, all 'odd' commands are only usable by root and don't return the + * content of ifr/iwr to user (but you are not obliged to use the set/get + * convention, just use every other two command). More details in iwpriv.c. + * And I repeat : you are not forced to use them with iwpriv, but you + * must be compliant with it. + */ + +/* ------------------------- IOCTL STUFF ------------------------- */ + +/* The first and the last (range) */ +#define SIOCIWFIRST 0x8B00 +#define SIOCIWLAST SIOCIWLASTPRIV /* 0x8BFF */ +#define IW_IOCTL_IDX(cmd) ((cmd) - SIOCIWFIRST) + +/* Even : get (world access), odd : set (root access) */ +#define IW_IS_SET(cmd) (!((cmd) & 0x1)) +#define IW_IS_GET(cmd) ((cmd) & 0x1) + +/* ----------------------- WIRELESS EVENTS ----------------------- */ +/* Those are *NOT* ioctls, do not issue request on them !!! */ +/* Most events use the same identifier as ioctl requests */ + +#define IWEVTXDROP 0x8C00 /* Packet dropped to excessive retry */ +#define IWEVQUAL 0x8C01 /* Quality part of statistics (scan) */ +#define IWEVCUSTOM 0x8C02 /* Driver specific ascii string */ +#define IWEVREGISTERED 0x8C03 /* Discovered a new node (AP mode) */ +#define IWEVEXPIRED 0x8C04 /* Expired a node (AP mode) */ +#define IWEVGENIE 0x8C05 /* Generic IE (WPA, RSN, WMM, ..) + * (scan results); This includes id and + * length fields. One IWEVGENIE may + * contain more than one IE. Scan + * results may contain one or more + * IWEVGENIE events. */ +#define IWEVMICHAELMICFAILURE 0x8C06 /* Michael MIC failure + * (struct iw_michaelmicfailure) + */ +#define IWEVASSOCREQIE 0x8C07 /* IEs used in (Re)Association Request. + * The data includes id and length + * fields and may contain more than one + * IE. This event is required in + * Managed mode if the driver + * generates its own WPA/RSN IE. This + * should be sent just before + * IWEVREGISTERED event for the + * association. */ +#define IWEVASSOCRESPIE 0x8C08 /* IEs used in (Re)Association + * Response. The data includes id and + * length fields and may contain more + * than one IE. This may be sent + * between IWEVASSOCREQIE and + * IWEVREGISTERED events for the + * association. */ +#define IWEVPMKIDCAND 0x8C09 /* PMKID candidate for RSN + * pre-authentication + * (struct iw_pmkid_cand) */ + +#define IWEVFIRST 0x8C00 +#define IW_EVENT_IDX(cmd) ((cmd) - IWEVFIRST) + +/* ------------------------- PRIVATE INFO ------------------------- */ +/* + * The following is used with SIOCGIWPRIV. It allow a driver to define + * the interface (name, type of data) for its private ioctl. + * Privates ioctl are SIOCIWFIRSTPRIV -> SIOCIWLASTPRIV + */ + +#define IW_PRIV_TYPE_MASK 0x7000 /* Type of arguments */ +#define IW_PRIV_TYPE_NONE 0x0000 +#define IW_PRIV_TYPE_BYTE 0x1000 /* Char as number */ +#define IW_PRIV_TYPE_CHAR 0x2000 /* Char as character */ +#define IW_PRIV_TYPE_INT 0x4000 /* 32 bits int */ +#define IW_PRIV_TYPE_FLOAT 0x5000 /* struct iw_freq */ +#define IW_PRIV_TYPE_ADDR 0x6000 /* struct sockaddr */ + +#define IW_PRIV_SIZE_FIXED 0x0800 /* Variable or fixed number of args */ + +#define IW_PRIV_SIZE_MASK 0x07FF /* Max number of those args */ + +/* + * Note : if the number of args is fixed and the size < 16 octets, + * instead of passing a pointer we will put args in the iwreq struct... + */ + +/* ----------------------- OTHER CONSTANTS ----------------------- */ + +/* Maximum frequencies in the range struct */ +#define IW_MAX_FREQUENCIES 32 +/* Note : if you have something like 80 frequencies, + * don't increase this constant and don't fill the frequency list. + * The user will be able to set by channel anyway... */ + +/* Maximum bit rates in the range struct */ +#define IW_MAX_BITRATES 32 + +/* Maximum tx powers in the range struct */ +#define IW_MAX_TXPOWER 8 +/* Note : if you more than 8 TXPowers, just set the max and min or + * a few of them in the struct iw_range. */ + +/* Maximum of address that you may set with SPY */ +#define IW_MAX_SPY 8 + +/* Maximum of address that you may get in the + list of access points in range */ +#define IW_MAX_AP 64 + +/* Maximum size of the ESSID and NICKN strings */ +#define IW_ESSID_MAX_SIZE 32 + +/* Modes of operation */ +#define IW_MODE_AUTO 0 /* Let the driver decides */ +#define IW_MODE_ADHOC 1 /* Single cell network */ +#define IW_MODE_INFRA 2 /* Multi cell network, roaming, ... */ +#define IW_MODE_MASTER 3 /* Synchronisation master or Access Point */ +#define IW_MODE_REPEAT 4 /* Wireless Repeater (forwarder) */ +#define IW_MODE_SECOND 5 /* Secondary master/repeater (backup) */ +#define IW_MODE_MONITOR 6 /* Passive monitor (listen only) */ + +/* Statistics flags (bitmask in updated) */ +#define IW_QUAL_QUAL_UPDATED 0x01 /* Value was updated since last read */ +#define IW_QUAL_LEVEL_UPDATED 0x02 +#define IW_QUAL_NOISE_UPDATED 0x04 +#define IW_QUAL_ALL_UPDATED 0x07 +#define IW_QUAL_DBM 0x08 /* Level + Noise are dBm */ +#define IW_QUAL_QUAL_INVALID 0x10 /* Driver doesn't provide value */ +#define IW_QUAL_LEVEL_INVALID 0x20 +#define IW_QUAL_NOISE_INVALID 0x40 +#define IW_QUAL_ALL_INVALID 0x70 + +/* Frequency flags */ +#define IW_FREQ_AUTO 0x00 /* Let the driver decides */ +#define IW_FREQ_FIXED 0x01 /* Force a specific value */ + +/* Maximum number of size of encoding token available + * they are listed in the range structure */ +#define IW_MAX_ENCODING_SIZES 8 + +/* Maximum size of the encoding token in bytes */ +#define IW_ENCODING_TOKEN_MAX 64 /* 512 bits (for now) */ + +/* Flags for encoding (along with the token) */ +#define IW_ENCODE_INDEX 0x00FF /* Token index (if needed) */ +#define IW_ENCODE_FLAGS 0xFF00 /* Flags defined below */ +#define IW_ENCODE_MODE 0xF000 /* Modes defined below */ +#define IW_ENCODE_DISABLED 0x8000 /* Encoding disabled */ +#define IW_ENCODE_ENABLED 0x0000 /* Encoding enabled */ +#define IW_ENCODE_RESTRICTED 0x4000 /* Refuse non-encoded packets */ +#define IW_ENCODE_OPEN 0x2000 /* Accept non-encoded packets */ +#define IW_ENCODE_NOKEY 0x0800 /* Key is write only, so not present */ +#define IW_ENCODE_TEMP 0x0400 /* Temporary key */ + +/* Power management flags available (along with the value, if any) */ +#define IW_POWER_ON 0x0000 /* No details... */ +#define IW_POWER_TYPE 0xF000 /* Type of parameter */ +#define IW_POWER_PERIOD 0x1000 /* Value is a period/duration of */ +#define IW_POWER_TIMEOUT 0x2000 /* Value is a timeout (to go asleep) */ +#define IW_POWER_MODE 0x0F00 /* Power Management mode */ +#define IW_POWER_UNICAST_R 0x0100 /* Receive only unicast messages */ +#define IW_POWER_MULTICAST_R 0x0200 /* Receive only multicast messages */ +#define IW_POWER_ALL_R 0x0300 /* Receive all messages though PM */ +#define IW_POWER_FORCE_S 0x0400 /* Force PM procedure for sending unicast */ +#define IW_POWER_REPEATER 0x0800 /* Repeat broadcast messages in PM period */ +#define IW_POWER_MODIFIER 0x000F /* Modify a parameter */ +#define IW_POWER_MIN 0x0001 /* Value is a minimum */ +#define IW_POWER_MAX 0x0002 /* Value is a maximum */ +#define IW_POWER_RELATIVE 0x0004 /* Value is not in seconds/ms/us */ + +/* Transmit Power flags available */ +#define IW_TXPOW_TYPE 0x00FF /* Type of value */ +#define IW_TXPOW_DBM 0x0000 /* Value is in dBm */ +#define IW_TXPOW_MWATT 0x0001 /* Value is in mW */ +#define IW_TXPOW_RELATIVE 0x0002 /* Value is in arbitrary units */ +#define IW_TXPOW_RANGE 0x1000 /* Range of value between min/max */ + +/* Retry limits and lifetime flags available */ +#define IW_RETRY_ON 0x0000 /* No details... */ +#define IW_RETRY_TYPE 0xF000 /* Type of parameter */ +#define IW_RETRY_LIMIT 0x1000 /* Maximum number of retries*/ +#define IW_RETRY_LIFETIME 0x2000 /* Maximum duration of retries in us */ +#define IW_RETRY_MODIFIER 0x000F /* Modify a parameter */ +#define IW_RETRY_MIN 0x0001 /* Value is a minimum */ +#define IW_RETRY_MAX 0x0002 /* Value is a maximum */ +#define IW_RETRY_RELATIVE 0x0004 /* Value is not in seconds/ms/us */ + +/* Scanning request flags */ +#define IW_SCAN_DEFAULT 0x0000 /* Default scan of the driver */ +#define IW_SCAN_ALL_ESSID 0x0001 /* Scan all ESSIDs */ +#define IW_SCAN_THIS_ESSID 0x0002 /* Scan only this ESSID */ +#define IW_SCAN_ALL_FREQ 0x0004 /* Scan all Frequencies */ +#define IW_SCAN_THIS_FREQ 0x0008 /* Scan only this Frequency */ +#define IW_SCAN_ALL_MODE 0x0010 /* Scan all Modes */ +#define IW_SCAN_THIS_MODE 0x0020 /* Scan only this Mode */ +#define IW_SCAN_ALL_RATE 0x0040 /* Scan all Bit-Rates */ +#define IW_SCAN_THIS_RATE 0x0080 /* Scan only this Bit-Rate */ +/* struct iw_scan_req scan_type */ +#define IW_SCAN_TYPE_ACTIVE 0 +#define IW_SCAN_TYPE_PASSIVE 1 +/* Maximum size of returned data */ +#define IW_SCAN_MAX_DATA 4096 /* In bytes */ + +/* Max number of char in custom event - use multiple of them if needed */ +#define IW_CUSTOM_MAX 256 /* In bytes */ + +/* Generic information element */ +#define IW_GENERIC_IE_MAX 1024 + +/* MLME requests (SIOCSIWMLME / struct iw_mlme) */ +#define IW_MLME_DEAUTH 0 +#define IW_MLME_DISASSOC 1 + +/* SIOCSIWAUTH/SIOCGIWAUTH struct iw_param flags */ +#define IW_AUTH_INDEX 0x0FFF +#define IW_AUTH_FLAGS 0xF000 +/* SIOCSIWAUTH/SIOCGIWAUTH parameters (0 .. 4095) + * (IW_AUTH_INDEX mask in struct iw_param flags; this is the index of the + * parameter that is being set/get to; value will be read/written to + * struct iw_param value field) */ +#define IW_AUTH_WPA_VERSION 0 +#define IW_AUTH_CIPHER_PAIRWISE 1 +#define IW_AUTH_CIPHER_GROUP 2 +#define IW_AUTH_KEY_MGMT 3 +#define IW_AUTH_TKIP_COUNTERMEASURES 4 +#define IW_AUTH_DROP_UNENCRYPTED 5 +#define IW_AUTH_80211_AUTH_ALG 6 +#define IW_AUTH_WPA_ENABLED 7 +#define IW_AUTH_RX_UNENCRYPTED_EAPOL 8 +#define IW_AUTH_ROAMING_CONTROL 9 +#define IW_AUTH_PRIVACY_INVOKED 10 + +/* IW_AUTH_WPA_VERSION values (bit field) */ +#define IW_AUTH_WPA_VERSION_DISABLED 0x00000001 +#define IW_AUTH_WPA_VERSION_WPA 0x00000002 +#define IW_AUTH_WPA_VERSION_WPA2 0x00000004 + +/* IW_AUTH_PAIRWISE_CIPHER and IW_AUTH_GROUP_CIPHER values (bit field) */ +#define IW_AUTH_CIPHER_NONE 0x00000001 +#define IW_AUTH_CIPHER_WEP40 0x00000002 +#define IW_AUTH_CIPHER_TKIP 0x00000004 +#define IW_AUTH_CIPHER_CCMP 0x00000008 +#define IW_AUTH_CIPHER_WEP104 0x00000010 + +/* IW_AUTH_KEY_MGMT values (bit field) */ +#define IW_AUTH_KEY_MGMT_802_1X 1 +#define IW_AUTH_KEY_MGMT_PSK 2 + +/* IW_AUTH_80211_AUTH_ALG values (bit field) */ +#define IW_AUTH_ALG_OPEN_SYSTEM 0x00000001 +#define IW_AUTH_ALG_SHARED_KEY 0x00000002 +#define IW_AUTH_ALG_LEAP 0x00000004 + +/* IW_AUTH_ROAMING_CONTROL values */ +#define IW_AUTH_ROAMING_ENABLE 0 /* driver/firmware based roaming */ +#define IW_AUTH_ROAMING_DISABLE 1 /* user space program used for roaming + * control */ + +/* SIOCSIWENCODEEXT definitions */ +#define IW_ENCODE_SEQ_MAX_SIZE 8 +/* struct iw_encode_ext ->alg */ +#define IW_ENCODE_ALG_NONE 0 +#define IW_ENCODE_ALG_WEP 1 +#define IW_ENCODE_ALG_TKIP 2 +#define IW_ENCODE_ALG_CCMP 3 +/* struct iw_encode_ext ->ext_flags */ +#define IW_ENCODE_EXT_TX_SEQ_VALID 0x00000001 +#define IW_ENCODE_EXT_RX_SEQ_VALID 0x00000002 +#define IW_ENCODE_EXT_GROUP_KEY 0x00000004 +#define IW_ENCODE_EXT_SET_TX_KEY 0x00000008 + +/* IWEVMICHAELMICFAILURE : struct iw_michaelmicfailure ->flags */ +#define IW_MICFAILURE_KEY_ID 0x00000003 /* Key ID 0..3 */ +#define IW_MICFAILURE_GROUP 0x00000004 +#define IW_MICFAILURE_PAIRWISE 0x00000008 +#define IW_MICFAILURE_STAKEY 0x00000010 +#define IW_MICFAILURE_COUNT 0x00000060 /* 1 or 2 (0 = count not supported) + */ + +/* Bit field values for enc_capa in struct iw_range */ +#define IW_ENC_CAPA_WPA 0x00000001 +#define IW_ENC_CAPA_WPA2 0x00000002 +#define IW_ENC_CAPA_CIPHER_TKIP 0x00000004 +#define IW_ENC_CAPA_CIPHER_CCMP 0x00000008 + +/* Event capability macros - in (struct iw_range *)->event_capa + * Because we have more than 32 possible events, we use an array of + * 32 bit bitmasks. Note : 32 bits = 0x20 = 2^5. */ +#define IW_EVENT_CAPA_BASE(cmd) ((cmd >= SIOCIWFIRSTPRIV) ? \ + (cmd - SIOCIWFIRSTPRIV + 0x60) : \ + (cmd - SIOCSIWCOMMIT)) +#define IW_EVENT_CAPA_INDEX(cmd) (IW_EVENT_CAPA_BASE(cmd) >> 5) +#define IW_EVENT_CAPA_MASK(cmd) (1 << (IW_EVENT_CAPA_BASE(cmd) & 0x1F)) +/* Event capability constants - event autogenerated by the kernel + * This list is valid for most 802.11 devices, customise as needed... */ +#define IW_EVENT_CAPA_K_0 (IW_EVENT_CAPA_MASK(0x8B04) | \ + IW_EVENT_CAPA_MASK(0x8B06) | \ + IW_EVENT_CAPA_MASK(0x8B1A)) +#define IW_EVENT_CAPA_K_1 (IW_EVENT_CAPA_MASK(0x8B2A)) +/* "Easy" macro to set events in iw_range (less efficient) */ +#define IW_EVENT_CAPA_SET(event_capa, cmd) (event_capa[IW_EVENT_CAPA_INDEX(cmd)] |= IW_EVENT_CAPA_MASK(cmd)) +#define IW_EVENT_CAPA_SET_KERNEL(event_capa) {event_capa[0] |= IW_EVENT_CAPA_K_0; event_capa[1] |= IW_EVENT_CAPA_K_1; } + + +/****************************** TYPES ******************************/ + +/* --------------------------- SUBTYPES --------------------------- */ +/* + * Generic format for most parameters that fit in an int + */ +struct iw_param +{ + __s32 value; /* The value of the parameter itself */ + __u8 fixed; /* Hardware should not use auto select */ + __u8 disabled; /* Disable the feature */ + __u16 flags; /* Various specifc flags (if any) */ +}; + +/* + * For all data larger than 16 octets, we need to use a + * pointer to memory allocated in user space. + */ +struct iw_point +{ + void *pointer; /* Pointer to the data (in user space) */ + __u16 length; /* number of fields or size in bytes */ + __u16 flags; /* Optional params */ +}; + +/* + * A frequency + * For numbers lower than 10^9, we encode the number in 'm' and + * set 'e' to 0 + * For number greater than 10^9, we divide it by the lowest power + * of 10 to get 'm' lower than 10^9, with 'm'= f / (10^'e')... + * The power of 10 is in 'e', the result of the division is in 'm'. + */ +struct iw_freq +{ + __s32 m; /* Mantissa */ + __s16 e; /* Exponent */ + __u8 i; /* List index (when in range struct) */ + __u8 flags; /* Flags (fixed/auto) */ +}; + +/* + * Quality of the link + */ +struct iw_quality +{ + __u8 qual; /* link quality (%retries, SNR, + %missed beacons or better...) */ + __u8 level; /* signal level (dBm) */ + __u8 noise; /* noise level (dBm) */ + __u8 updated; /* Flags to know if updated */ +}; + +/* + * Packet discarded in the wireless adapter due to + * "wireless" specific problems... + * Note : the list of counter and statistics in net_device_stats + * is already pretty exhaustive, and you should use that first. + * This is only additional stats... + */ +struct iw_discarded +{ + __u32 nwid; /* Rx : Wrong nwid/essid */ + __u32 code; /* Rx : Unable to code/decode (WEP) */ + __u32 fragment; /* Rx : Can't perform MAC reassembly */ + __u32 retries; /* Tx : Max MAC retries num reached */ + __u32 misc; /* Others cases */ +}; + +/* + * Packet/Time period missed in the wireless adapter due to + * "wireless" specific problems... + */ +struct iw_missed +{ + __u32 beacon; /* Missed beacons/superframe */ +}; + +/* + * Quality range (for spy threshold) + */ +struct iw_thrspy +{ + struct sockaddr addr; /* Source address (hw/mac) */ + struct iw_quality qual; /* Quality of the link */ + struct iw_quality low; /* Low threshold */ + struct iw_quality high; /* High threshold */ +}; + +/* + * Optional data for scan request + * + * Note: these optional parameters are controlling parameters for the + * scanning behavior, these do not apply to getting scan results + * (SIOCGIWSCAN). Drivers are expected to keep a local BSS table and + * provide a merged results with all BSSes even if the previous scan + * request limited scanning to a subset, e.g., by specifying an SSID. + * Especially, scan results are required to include an entry for the + * current BSS if the driver is in Managed mode and associated with an AP. + */ +struct iw_scan_req +{ + __u8 scan_type; /* IW_SCAN_TYPE_{ACTIVE,PASSIVE} */ + __u8 essid_len; + __u8 num_channels; /* num entries in channel_list; + * 0 = scan all allowed channels */ + __u8 flags; /* reserved as padding; use zero, this may + * be used in the future for adding flags + * to request different scan behavior */ + struct sockaddr bssid; /* ff:ff:ff:ff:ff:ff for broadcast BSSID or + * individual address of a specific BSS */ + + /* + * Use this ESSID if IW_SCAN_THIS_ESSID flag is used instead of using + * the current ESSID. This allows scan requests for specific ESSID + * without having to change the current ESSID and potentially breaking + * the current association. + */ + __u8 essid[IW_ESSID_MAX_SIZE]; + + /* + * Optional parameters for changing the default scanning behavior. + * These are based on the MLME-SCAN.request from IEEE Std 802.11. + * TU is 1.024 ms. If these are set to 0, driver is expected to use + * reasonable default values. min_channel_time defines the time that + * will be used to wait for the first reply on each channel. If no + * replies are received, next channel will be scanned after this. If + * replies are received, total time waited on the channel is defined by + * max_channel_time. + */ + __u32 min_channel_time; /* in TU */ + __u32 max_channel_time; /* in TU */ + + struct iw_freq channel_list[IW_MAX_FREQUENCIES]; +}; + +/* ------------------------- WPA SUPPORT ------------------------- */ + +/* + * Extended data structure for get/set encoding (this is used with + * SIOCSIWENCODEEXT/SIOCGIWENCODEEXT. struct iw_point and IW_ENCODE_* + * flags are used in the same way as with SIOCSIWENCODE/SIOCGIWENCODE and + * only the data contents changes (key data -> this structure, including + * key data). + * + * If the new key is the first group key, it will be set as the default + * TX key. Otherwise, default TX key index is only changed if + * IW_ENCODE_EXT_SET_TX_KEY flag is set. + * + * Key will be changed with SIOCSIWENCODEEXT in all cases except for + * special "change TX key index" operation which is indicated by setting + * key_len = 0 and ext_flags |= IW_ENCODE_EXT_SET_TX_KEY. + * + * tx_seq/rx_seq are only used when respective + * IW_ENCODE_EXT_{TX,RX}_SEQ_VALID flag is set in ext_flags. Normal + * TKIP/CCMP operation is to set RX seq with SIOCSIWENCODEEXT and start + * TX seq from zero whenever key is changed. SIOCGIWENCODEEXT is normally + * used only by an Authenticator (AP or an IBSS station) to get the + * current TX sequence number. Using TX_SEQ_VALID for SIOCSIWENCODEEXT and + * RX_SEQ_VALID for SIOCGIWENCODEEXT are optional, but can be useful for + * debugging/testing. + */ +struct iw_encode_ext +{ + __u32 ext_flags; /* IW_ENCODE_EXT_* */ + __u8 tx_seq[IW_ENCODE_SEQ_MAX_SIZE]; /* LSB first */ + __u8 rx_seq[IW_ENCODE_SEQ_MAX_SIZE]; /* LSB first */ + struct sockaddr addr; /* ff:ff:ff:ff:ff:ff for broadcast/multicast + * (group) keys or unicast address for + * individual keys */ + __u16 alg; /* IW_ENCODE_ALG_* */ + __u16 key_len; + __u8 key[0]; +}; + +/* SIOCSIWMLME data */ +struct iw_mlme +{ + __u16 cmd; /* IW_MLME_* */ + __u16 reason_code; + struct sockaddr addr; +}; + +/* SIOCSIWPMKSA data */ +#define IW_PMKSA_ADD 1 +#define IW_PMKSA_REMOVE 2 +#define IW_PMKSA_FLUSH 3 + +#define IW_PMKID_LEN 16 + +struct iw_pmksa +{ + __u32 cmd; /* IW_PMKSA_* */ + struct sockaddr bssid; + __u8 pmkid[IW_PMKID_LEN]; +}; + +/* IWEVMICHAELMICFAILURE data */ +struct iw_michaelmicfailure +{ + __u32 flags; + struct sockaddr src_addr; + __u8 tsc[IW_ENCODE_SEQ_MAX_SIZE]; /* LSB first */ +}; + +/* IWEVPMKIDCAND data */ +#define IW_PMKID_CAND_PREAUTH 0x00000001 /* RNS pre-authentication enabled */ +struct iw_pmkid_cand +{ + __u32 flags; /* IW_PMKID_CAND_* */ + __u32 index; /* the smaller the index, the higher the + * priority */ + struct sockaddr bssid; +}; + +/* ------------------------ WIRELESS STATS ------------------------ */ +/* + * Wireless statistics (used for /proc/net/wireless) + */ +struct iw_statistics +{ + __u16 status; /* Status + * - device dependent for now */ + + struct iw_quality qual; /* Quality of the link + * (instant/mean/max) */ + struct iw_discarded discard; /* Packet discarded counts */ + struct iw_missed miss; /* Packet missed counts */ +}; + +/* ------------------------ IOCTL REQUEST ------------------------ */ +/* + * This structure defines the payload of an ioctl, and is used + * below. + * + * Note that this structure should fit on the memory footprint + * of iwreq (which is the same as ifreq), which mean a max size of + * 16 octets = 128 bits. Warning, pointers might be 64 bits wide... + * You should check this when increasing the structures defined + * above in this file... + */ +union iwreq_data +{ + /* Config - generic */ + char name[IFNAMSIZ]; + /* Name : used to verify the presence of wireless extensions. + * Name of the protocol/provider... */ + + struct iw_point essid; /* Extended network name */ + struct iw_param nwid; /* network id (or domain - the cell) */ + struct iw_freq freq; /* frequency or channel : + * 0-1000 = channel + * > 1000 = frequency in Hz */ + + struct iw_param sens; /* signal level threshold */ + struct iw_param bitrate; /* default bit rate */ + struct iw_param txpower; /* default transmit power */ + struct iw_param rts; /* RTS threshold threshold */ + struct iw_param frag; /* Fragmentation threshold */ + __u32 mode; /* Operation mode */ + struct iw_param retry; /* Retry limits & lifetime */ + + struct iw_point encoding; /* Encoding stuff : tokens */ + struct iw_param power; /* PM duration/timeout */ + struct iw_quality qual; /* Quality part of statistics */ + + struct sockaddr ap_addr; /* Access point address */ + struct sockaddr addr; /* Destination address (hw/mac) */ + + struct iw_param param; /* Other small parameters */ + struct iw_point data; /* Other large parameters */ +}; + +/* + * The structure to exchange data for ioctl. + * This structure is the same as 'struct ifreq', but (re)defined for + * convenience... + * Do I need to remind you about structure size (32 octets) ? + */ +struct iwreq +{ + union + { + char ifrn_name[IFNAMSIZ]; /* if name, e.g. "eth0" */ + } ifr_ifrn; + + /* Data part (defined just above) */ + union iwreq_data u; +}; + +/* -------------------------- IOCTL DATA -------------------------- */ +/* + * For those ioctl which want to exchange mode data that what could + * fit in the above structure... + */ + +/* + * Range of parameters + */ + +struct iw_range +{ + /* Informative stuff (to choose between different interface) */ + __u32 throughput; /* To give an idea... */ + /* In theory this value should be the maximum benchmarked + * TCP/IP throughput, because with most of these devices the + * bit rate is meaningless (overhead an co) to estimate how + * fast the connection will go and pick the fastest one. + * I suggest people to play with Netperf or any benchmark... + */ + + /* NWID (or domain id) */ + __u32 min_nwid; /* Minimal NWID we are able to set */ + __u32 max_nwid; /* Maximal NWID we are able to set */ + + /* Old Frequency (backward compat - moved lower ) */ + __u16 old_num_channels; + __u8 old_num_frequency; + + /* Wireless event capability bitmasks */ + __u32 event_capa[6]; + + /* signal level threshold range */ + __s32 sensitivity; + + /* Quality of link & SNR stuff */ + /* Quality range (link, level, noise) + * If the quality is absolute, it will be in the range [0 ; max_qual], + * if the quality is dBm, it will be in the range [max_qual ; 0]. + * Don't forget that we use 8 bit arithmetics... */ + struct iw_quality max_qual; /* Quality of the link */ + /* This should contain the average/typical values of the quality + * indicator. This should be the threshold between a "good" and + * a "bad" link (example : monitor going from green to orange). + * Currently, user space apps like quality monitors don't have any + * way to calibrate the measurement. With this, they can split + * the range between 0 and max_qual in different quality level + * (using a geometric subdivision centered on the average). + * I expect that people doing the user space apps will feedback + * us on which value we need to put in each driver... */ + struct iw_quality avg_qual; /* Quality of the link */ + + /* Rates */ + __u8 num_bitrates; /* Number of entries in the list */ + __s32 bitrate[IW_MAX_BITRATES]; /* list, in bps */ + + /* RTS threshold */ + __s32 min_rts; /* Minimal RTS threshold */ + __s32 max_rts; /* Maximal RTS threshold */ + + /* Frag threshold */ + __s32 min_frag; /* Minimal frag threshold */ + __s32 max_frag; /* Maximal frag threshold */ + + /* Power Management duration & timeout */ + __s32 min_pmp; /* Minimal PM period */ + __s32 max_pmp; /* Maximal PM period */ + __s32 min_pmt; /* Minimal PM timeout */ + __s32 max_pmt; /* Maximal PM timeout */ + __u16 pmp_flags; /* How to decode max/min PM period */ + __u16 pmt_flags; /* How to decode max/min PM timeout */ + __u16 pm_capa; /* What PM options are supported */ + + /* Encoder stuff */ + __u16 encoding_size[IW_MAX_ENCODING_SIZES]; /* Different token sizes */ + __u8 num_encoding_sizes; /* Number of entry in the list */ + __u8 max_encoding_tokens; /* Max number of tokens */ + /* For drivers that need a "login/passwd" form */ + __u8 encoding_login_index; /* token index for login token */ + + /* Transmit power */ + __u16 txpower_capa; /* What options are supported */ + __u8 num_txpower; /* Number of entries in the list */ + __s32 txpower[IW_MAX_TXPOWER]; /* list, in bps */ + + /* Wireless Extension version info */ + __u8 we_version_compiled; /* Must be WIRELESS_EXT */ + __u8 we_version_source; /* Last update of source */ + + /* Retry limits and lifetime */ + __u16 retry_capa; /* What retry options are supported */ + __u16 retry_flags; /* How to decode max/min retry limit */ + __u16 r_time_flags; /* How to decode max/min retry life */ + __s32 min_retry; /* Minimal number of retries */ + __s32 max_retry; /* Maximal number of retries */ + __s32 min_r_time; /* Minimal retry lifetime */ + __s32 max_r_time; /* Maximal retry lifetime */ + + /* Frequency */ + __u16 num_channels; /* Number of channels [0; num - 1] */ + __u8 num_frequency; /* Number of entry in the list */ + struct iw_freq freq[IW_MAX_FREQUENCIES]; /* list */ + /* Note : this frequency list doesn't need to fit channel numbers, + * because each entry contain its channel index */ + + __u32 enc_capa; /* IW_ENC_CAPA_* bit field */ +}; + +/* + * Private ioctl interface information + */ + +struct iw_priv_args +{ + __u32 cmd; /* Number of the ioctl to issue */ + __u16 set_args; /* Type and number of args */ + __u16 get_args; /* Type and number of args */ + char name[IFNAMSIZ]; /* Name of the extension */ +}; + +/* ----------------------- WIRELESS EVENTS ----------------------- */ +/* + * Wireless events are carried through the rtnetlink socket to user + * space. They are encapsulated in the IFLA_WIRELESS field of + * a RTM_NEWLINK message. + */ + +/* + * A Wireless Event. Contains basically the same data as the ioctl... + */ +struct iw_event +{ + __u16 len; /* Real lenght of this stuff */ + __u16 cmd; /* Wireless IOCTL */ + union iwreq_data u; /* IOCTL fixed payload */ +}; + +/* Size of the Event prefix (including padding and alignement junk) */ +#define IW_EV_LCP_LEN (sizeof(struct iw_event) - sizeof(union iwreq_data)) +/* Size of the various events */ +#define IW_EV_CHAR_LEN (IW_EV_LCP_LEN + IFNAMSIZ) +#define IW_EV_UINT_LEN (IW_EV_LCP_LEN + sizeof(__u32)) +#define IW_EV_FREQ_LEN (IW_EV_LCP_LEN + sizeof(struct iw_freq)) +#define IW_EV_PARAM_LEN (IW_EV_LCP_LEN + sizeof(struct iw_param)) +#define IW_EV_ADDR_LEN (IW_EV_LCP_LEN + sizeof(struct sockaddr)) +#define IW_EV_QUAL_LEN (IW_EV_LCP_LEN + sizeof(struct iw_quality)) + +/* iw_point events are special. First, the payload (extra data) come at + * the end of the event, so they are bigger than IW_EV_POINT_LEN. Second, + * we omit the pointer, so start at an offset. */ +#define IW_EV_POINT_OFF (((char *) &(((struct iw_point *) NULL)->length)) - \ + (char *) NULL) +#define IW_EV_POINT_LEN (IW_EV_LCP_LEN + sizeof(struct iw_point) - \ + IW_EV_POINT_OFF) + +#endif /* _LINUX_WIRELESS_H */ diff --git a/xsupplicant-1.2.1-bz167467.patch b/xsupplicant-1.2.1-bz167467.patch new file mode 100644 index 0000000..ec8389d --- /dev/null +++ b/xsupplicant-1.2.1-bz167467.patch @@ -0,0 +1,11 @@ +--- xsupplicant-1.2.1/src/cardif/linux/cardif_linux_rtnetlink.c.BAD 2005-09-16 18:22:29.000000000 -0500 ++++ xsupplicant-1.2.1/src/cardif/linux/cardif_linux_rtnetlink.c 2005-09-16 18:22:44.000000000 -0500 +@@ -135,7 +135,7 @@ + struct iw_event *iwe=NULL; + unsigned char flags=0; + u_char *wpa_ie=NULL, *rsn_ie=NULL, wpa_ie_len=0, rsn_ie_len=0; +- unsigned int freq; ++ uint16_t freq; + u_char temp_rsn_len = 0, temp_wpa_len = 0; + + tptr = bptr; diff --git a/xsupplicant-1.2.1-gcc4-cleanups.patch b/xsupplicant-1.2.1-gcc4-cleanups.patch new file mode 100644 index 0000000..16aa17c --- /dev/null +++ b/xsupplicant-1.2.1-gcc4-cleanups.patch @@ -0,0 +1,1692 @@ +--- xsupplicant-1.2.1/src/cardif/linux/cardif_hostap_driver.c.BAD 2005-09-03 17:50:21.000000000 -0500 ++++ xsupplicant-1.2.1/src/cardif/linux/cardif_hostap_driver.c 2005-09-03 17:50:50.000000000 -0500 +@@ -326,7 +326,7 @@ + debug_printf(DEBUG_NORMAL, "alg=%s key_idx=%d set_tx=%d seq_len=%d key_len=%d\n", alg_name, key_idx, set_tx, seq_len, key_len); + + debug_printf(DEBUG_NORMAL, "KeyRSC = "); +- debug_hex_printf(DEBUG_NORMAL, seq, seq_len); ++ debug_hex_printf(DEBUG_NORMAL, (u_char *) seq, seq_len); + + if (seq_len > 8) + { +@@ -350,7 +350,7 @@ + + memset(param->sta_addr, 0xff, ETH_ALEN); + +- strncpy(param->u.crypt.alg, alg_name, HOSTAP_CRYPT_ALG_NAME_LEN); ++ strncpy((char *) param->u.crypt.alg, alg_name, HOSTAP_CRYPT_ALG_NAME_LEN); + param->u.crypt.flags = set_tx ? HOSTAP_CRYPT_FLAG_SET_TX_KEY : 0; + param->u.crypt.idx = key_idx; + memcpy(param->u.crypt.seq, seq, seq_len); +--- xsupplicant-1.2.1/src/cardif/linux/cardif_linux_wext.c.BAD 2005-09-03 17:51:02.000000000 -0500 ++++ xsupplicant-1.2.1/src/cardif/linux/cardif_linux_wext.c 2005-09-03 17:53:08.000000000 -0500 +@@ -119,10 +119,10 @@ + + // We set the key index to 0x80, to force key 0 to be set to all 0s, + // and to have key 0 be set as the default transmit key. +- cardif_set_wep_key(thisint, (char *)&zerokey, keylen, 0x80); +- cardif_set_wep_key(thisint, (char *)&zerokey, keylen, 0x01); +- cardif_set_wep_key(thisint, (char *)&zerokey, keylen, 0x02); +- cardif_set_wep_key(thisint, (char *)&zerokey, keylen, 0x03); ++ cardif_set_wep_key(thisint, (u_char *)&zerokey, keylen, 0x80); ++ cardif_set_wep_key(thisint, (u_char *)&zerokey, keylen, 0x01); ++ cardif_set_wep_key(thisint, (u_char *)&zerokey, keylen, 0x02); ++ cardif_set_wep_key(thisint, (u_char *)&zerokey, keylen, 0x03); + } + + /************************************************************** +@@ -947,10 +947,10 @@ + + if (config_ssid_get_ssid_abilities() & RSN_IE) + { +- cardif_linux_wext_get_wpa2_ie(intdata, wpaie, &len); ++ cardif_linux_wext_get_wpa2_ie(intdata, (char *) wpaie, &len); + } else if (config_ssid_get_ssid_abilities() & WPA_IE) + { +- cardif_linux_wext_get_wpa_ie(intdata, wpaie, &len); ++ cardif_linux_wext_get_wpa_ie(intdata, (char *) wpaie, &len); + } + + if (len > 0) +@@ -965,11 +965,11 @@ + intdata->flags |= DONTSCAN; + cardif_linux_wext_set_ssid(intdata, newssid); + +- bssid = config_ssid_get_mac(); ++ bssid = (char *) config_ssid_get_mac(); + if (bssid != NULL) + { + debug_printf(DEBUG_INT, "Dest. BSSID : "); +- debug_hex_printf(DEBUG_INT, bssid, 6); ++ debug_hex_printf(DEBUG_INT, (u_char *) bssid, 6); + } + + // cardif_linux_wext_set_bssid(intdata, bssid); +--- xsupplicant-1.2.1/src/cardif/linux/cardif_ipw_driver.c.BAD 2005-09-03 17:54:57.000000000 -0500 ++++ xsupplicant-1.2.1/src/cardif/linux/cardif_ipw_driver.c 2005-09-03 17:57:23.000000000 -0500 +@@ -240,7 +240,7 @@ + wpa2_gen_ie(intdata, iedata, ielen); + + debug_printf(DEBUG_INT, "Setting WPA2 IE : "); +- debug_hex_printf(DEBUG_INT, iedata, *ielen); ++ debug_hex_printf(DEBUG_INT, (u_char *) iedata, *ielen); + debug_printf(DEBUG_INT, "\n"); + + return XENONE; +@@ -372,7 +372,7 @@ + param = (struct ipw_param *) buf; + param->cmd = IPW_CMD_SET_ENCRYPTION; + memset(param->sta_addr, 0xff, 6); +- strncpy(param->u.crypt.alg, alg_name, IPW_CRYPT_ALG_NAME_LEN); ++ strncpy((char *) param->u.crypt.alg, alg_name, IPW_CRYPT_ALG_NAME_LEN); + param->u.crypt.set_tx = set_tx ? 1 : 0; + param->u.crypt.idx = key_idx; + memcpy(param->u.crypt.seq, seq, seq_len); +@@ -422,7 +422,7 @@ + { + int ret; + +- ret = ipw_mlme(intdata->intName, intdata->source_mac, ++ ret = ipw_mlme(intdata->intName, (u8 *) intdata->source_mac, + IPW_MLME_STA_DISASSOC, reason_code); + + if (ret <0) return ret; +@@ -458,16 +458,16 @@ + + if (config_ssid_get_ssid_abilities() & RSN_IE) + { +- cardif_ipw_driver_get_wpa2_ie(intdata, wpaie, &len); ++ cardif_ipw_driver_get_wpa2_ie(intdata, (char *) wpaie, &len); + } else if (config_ssid_get_ssid_abilities() & WPA_IE) + { +- cardif_ipw_driver_get_wpa_ie(intdata, wpaie, &len); ++ cardif_ipw_driver_get_wpa_ie(intdata, (char *) wpaie, &len); + } + + // Length needs to be > 0 in order to indicate that we have an IE to set. + if ((len < 255) && (len >= 0)) + { +- if (cardif_ipw_driver_set_wpa_ie(intdata->intName, wpaie, len) < 0) ++ if (cardif_ipw_driver_set_wpa_ie(intdata->intName, (char *) wpaie, len) < 0) + { + debug_printf(DEBUG_NORMAL, "Couldn't set WPA/RSN IE on device %s!\n", + intdata->intName); +--- xsupplicant-1.2.1/src/cardif/linux/cardif_linux_rtnetlink.c.BAD 2005-09-03 17:43:05.000000000 -0500 ++++ xsupplicant-1.2.1/src/cardif/linux/cardif_linux_rtnetlink.c 2005-09-03 17:49:49.000000000 -0500 +@@ -269,13 +269,13 @@ + memcpy(&custom, &tptr[12], (iwe->len - 12)); + debug_printf(DEBUG_INT, "(Custom) Value : %s\n", custom); + +- if (strncmp("wpa_ie=", custom, 7) == 0) ++ if (strncmp("wpa_ie=", (char *) custom, 7) == 0) + { + SET_FLAG(flags, WPA_IE); + debug_printf(DEBUG_INT, "AP appears to support WPA!\n"); +- temp = (char *)malloc((iwe->len - 12)/2); +- process_hex(&custom[7], (iwe->len - 12-7), temp); +- wpa_parse_ie(temp); ++ temp = (u_char *)malloc((iwe->len - 12)/2); ++ process_hex((char *) &custom[7], (iwe->len - 12-7), (char *) temp); ++ wpa_parse_ie((char *) temp); + + temp_wpa = temp; + temp_wpa_len = ((iwe->len - 12)/2); +@@ -285,13 +285,13 @@ + temp = NULL; + } + +- if (strncmp("rsn_ie=", custom, 7) == 0) ++ if (strncmp("rsn_ie=", (char *) custom, 7) == 0) + { + SET_FLAG(flags, RSN_IE); + debug_printf(DEBUG_INT, "AP appears to support WPA2/802.11i!\n"); +- temp = (char *)malloc((iwe->len - 12)/2); +- process_hex(&custom[7], (iwe->len - 12-7), temp); +- wpa2_parse_ie(temp); ++ temp = (u_char *)malloc((iwe->len - 12)/2); ++ process_hex((char *) &custom[7], (iwe->len - 12-7), (char *) temp); ++ wpa2_parse_ie((char *) temp); + + temp_rsn = temp; + temp_rsn_len = ((iwe->len - 12)/2); +@@ -381,10 +381,10 @@ + "but the WPA_IE or RSN_IE flag(s) aren't set!?!\n"); + } + +- if (strcmp(essid, intdata->cur_essid) == 0) ++ if (strcmp((char *) essid, intdata->cur_essid) == 0) + { + debug_printf(DEBUG_INT, "Adding this SSID data!\n"); +- config_ssids_add(essid, flags, wpa_ie, wpa_ie_len, rsn_ie, ++ config_ssids_add((char *) essid, flags, wpa_ie, wpa_ie_len, rsn_ie, + rsn_ie_len, freq, stale_mac); + } + +@@ -440,10 +440,10 @@ + } + } + +- if (strcmp(essid, intdata->cur_essid) == 0) ++ if (strcmp((char *) essid, intdata->cur_essid) == 0) + { + debug_printf(DEBUG_INT, "Adding this SSID data!\n"); +- config_ssids_add(essid, flags, wpa_ie, wpa_ie_len, rsn_ie, ++ config_ssids_add((char *) essid, flags, wpa_ie, wpa_ie_len, rsn_ie, + rsn_ie_len, freq, mac); + } + +@@ -490,8 +490,8 @@ + + // Then harvest the data. + debug_printf(DEBUG_INT, "Reaping data. (Size : %d)\n", iwr.u.data.length); +- cardif_linux_rtnetlink_reap(idata, (char *)buffer, +- ((char *)buffer + iwr.u.data.length)); ++ cardif_linux_rtnetlink_reap(idata, (u_char *)buffer, ++ ((u_char *)buffer + iwr.u.data.length)); + + UNSET_FLAG(idata->flags, SCANNING); + +@@ -519,7 +519,7 @@ + } + + remain = recvfrom(rtnl_sock, buf, sizeof(buf), MSG_DONTWAIT, +- (struct sockaddr *)&rtnl_data, &rtnl_data_size); ++ (struct sockaddr *)&rtnl_data, (u_int *) &rtnl_data_size); + if (remain >= 0) + { + // We need a pointer to the buffer to work with. +@@ -927,7 +927,7 @@ + case SIOCGIWAP: + memcpy(mac, iwe->u.ap_addr.sa_data, 6); + debug_printf(DEBUG_INT, "AP MAC : "); +- debug_hex_printf(DEBUG_INT, mac, 6); ++ debug_hex_printf(DEBUG_INT, (u_char *) mac, 6); + if (cardif_linux_rtnetlink_validate(idata, (u_char *)&mac) == 1) + { + // We have changed to associated mode. Populate the destination +@@ -987,7 +987,7 @@ + memcpy(buf, custom, iwe->u.data.length); + buf[iwe->u.data.length] = '\0'; + debug_printf(DEBUG_NORMAL, "Custom Data : \n"); +- debug_hex_dump(DEBUG_NORMAL, buf, iwe->u.data.length); ++ debug_hex_dump(DEBUG_NORMAL, (u_char *) buf, iwe->u.data.length); + cardif_linux_rtnetlink_check_custom(idata, buf); + break; + +--- xsupplicant-1.2.1/src/cardif/linux/cardif_ndiswrapper_driver.c.BAD 2005-09-03 17:53:21.000000000 -0500 ++++ xsupplicant-1.2.1/src/cardif/linux/cardif_ndiswrapper_driver.c 2005-09-03 17:54:27.000000000 -0500 +@@ -202,11 +202,11 @@ + wpa_key.addr = addr; + wpa_key.key_index = key_idx; + wpa_key.set_tx = set_tx; +- wpa_key.seq = seq; ++ wpa_key.seq = (u_char *) seq; + wpa_key.seq_len = seq_len; + debug_printf(DEBUG_NORMAL, "SEQ : "); +- debug_hex_printf(DEBUG_NORMAL, seq, seq_len); +- wpa_key.key = key; ++ debug_hex_printf(DEBUG_NORMAL, (u_char *) seq, seq_len); ++ wpa_key.key = (u_char *) key; + wpa_key.key_len = key_len; + + debug_printf(DEBUG_INT, "Setting key.. alg=%d idx=%d tx=%d seqlen=%d " +@@ -304,11 +304,11 @@ + bzero(&wpa_inf, sizeof(wpa_inf)); + + memcpy(buf, ssid, strlen(ssid)); +- wpa_inf.bssid = (char *)config_ssid_get_mac(); +- wpa_inf.ssid = (char *)&buf; ++ wpa_inf.bssid = (u_char *)config_ssid_get_mac(); ++ wpa_inf.ssid = (u_char *)&buf; + wpa_inf.ssid_len = strlen(ssid); + wpa_inf.freq = config_ssid_get_freq(); +- wpa_inf.wpa_ie = (char *)&wpaie; ++ wpa_inf.wpa_ie = (u_char *)&wpaie; + wpa_inf.wpa_ie_len = ielen; + + wpa_inf.pairwise_suite = network_data->wpa_pairwise_crypt; +--- xsupplicant-1.2.1/src/cardif/linux/linux_core.c.BAD 2005-09-03 17:39:55.000000000 -0500 ++++ xsupplicant-1.2.1/src/cardif/linux/linux_core.c 2005-09-03 17:42:28.000000000 -0500 +@@ -116,11 +116,11 @@ + { + if (wepdata->key[keyidx] != NULL) + { +- klen = strlen(wepdata->key[keyidx]); ++ klen = strlen((char *) wepdata->key[keyidx]); + if (((klen/2) == 5) || ((klen/2) == 13)) + { + // We have a valid length key. So, convert it, and set it. +- process_hex(wepdata->key[keyidx], klen, key); ++ process_hex((char *) wepdata->key[keyidx], klen, key); + + // Calculate the proper key index. + t = keyidx-1; +@@ -130,9 +130,9 @@ + debug_printf(DEBUG_INT, "Setting TX key! [%d]\n", + wepdata->tx_key); + t |= 0x80; +- cardif_set_wep_key(intcur, key, (klen/2), t); ++ cardif_set_wep_key(intcur, (u_char *) key, (klen/2), t); + } else { +- cardif_set_wep_key(intcur, key, (klen/2), t); ++ cardif_set_wep_key(intcur, (u_char *) key, (klen/2), t); + } + } + } +--- xsupplicant-1.2.1/src/cardif/linux/cardif_linux.c.BAD 2005-09-03 17:37:20.000000000 -0500 ++++ xsupplicant-1.2.1/src/cardif/linux/cardif_linux.c 2005-09-03 17:39:29.000000000 -0500 +@@ -78,7 +78,7 @@ + cardif_GetBSSID(intdata, curbssid); + + debug_printf(DEBUG_INT, "Current BSSID is "); +- debug_hex_printf(DEBUG_INT, curbssid, 6); ++ debug_hex_printf(DEBUG_INT, (u_char *) curbssid, 6); + + memset(newmac, 0x00, 6); + if (memcmp(newmac, curbssid, 6) == 0) +@@ -463,7 +463,7 @@ + { + if (wireless == NULL) return -1; + +- return wireless->set_tkip_key(thisint, addr, keyidx, settx, seq, seqlen, ++ return wireless->set_tkip_key(thisint, (u_char *) addr, keyidx, settx, seq, seqlen, + key, keylen); + } + +@@ -478,7 +478,7 @@ + { + if (wireless == NULL) return -1; + +- return wireless->set_ccmp_key(thisint, addr, keyidx, settx, seq, seqlen, ++ return wireless->set_ccmp_key(thisint, (u_char *) addr, keyidx, settx, seq, seqlen, + key, keylen); + } + +@@ -746,7 +746,7 @@ + { + // Since we now know this frame is for us, record the address it + // came from. +- snmp_dot1xSuppLastEapolFrameSource((char *)&resultframe[6]); ++ snmp_dot1xSuppLastEapolFrameSource((u_char *)&resultframe[6]); + + resultsize = newsize; + +--- xsupplicant-1.2.1/src/psk.c.BAD 2005-09-03 09:24:53.000000000 -0500 ++++ xsupplicant-1.2.1/src/psk.c 2005-09-03 09:25:15.000000000 -0500 +@@ -50,7 +50,7 @@ + // OpenSSL takes the parameters in a different order than what is + // defined in F.8.2, so even though it looks wrong, this is correct. ;) + HMAC(EVP_sha1(), password, strlen(password), digest, ssidlength+4, +- digest1, &k); ++ digest1, (u_int *) &k); + + /* output = U1 */ + memcpy(output, digest1, SHA_DIGEST_LENGTH); +@@ -59,7 +59,7 @@ + { + /* Un = PRF(P, Un-1) */ + HMAC(EVP_sha1(), password, strlen(password), digest1, SHA_DIGEST_LENGTH, +- digest, &k); ++ digest, (u_int *) &k); + memcpy(digest1, digest, k); + + /* output = output xor Un */ +--- xsupplicant-1.2.1/src/mic.c.BAD 2005-09-03 09:24:01.000000000 -0500 ++++ xsupplicant-1.2.1/src/mic.c 2005-09-03 09:24:43.000000000 -0500 +@@ -44,14 +44,14 @@ + { + case 1: + // Do an MD5 HMAC +- HMAC(EVP_md5(), key, keylen, datain, insize, mic, &i); ++ HMAC(EVP_md5(), key, keylen, (u_char *) datain, insize, (u_char *) mic, (u_int *) &i); + break; + + case 2: + // Do an SHA1 HMAC + // Since the HMAC will be 20 bytes, and we only need 16, we must use + // a temporary variable. +- HMAC(EVP_sha1(), key, keylen, datain, insize, (char *)&sha_hmac, &i); ++ HMAC(EVP_sha1(), key, keylen, (u_char *) datain, insize, (u_char *)&sha_hmac, (u_int *) &i); + memcpy(mic, &sha_hmac, 16); + break; + } +--- xsupplicant-1.2.1/src/config.h.BAD 2005-09-03 08:39:44.000000000 -0500 ++++ xsupplicant-1.2.1/src/config.h 2005-09-03 08:39:53.000000000 -0500 +@@ -341,6 +341,7 @@ + char config_get_association(); + char *config_get_logfile(); + int config_get_ipc_gid(); ++int config_get_stale_key_timeout(); + char config_get_destination(); + char *config_get_log_facility(); + void config_set_forced_profile(char *); +--- xsupplicant-1.2.1/src/eap.c.BAD 2005-09-03 08:34:21.000000000 -0500 ++++ xsupplicant-1.2.1/src/eap.c 2005-09-03 08:38:27.000000000 -0500 +@@ -191,9 +191,9 @@ + + switch (eap_request_auth(network_data->activemethod, + network_data->methods, +- &thisint->recvframe[OFFSET_TO_EAP], ++ (char *) &thisint->recvframe[OFFSET_TO_EAP], + thisint->recv_size, +- &thisint->sendframe[OFFSET_TO_EAP], &eapsize)) ++ (char *) &thisint->sendframe[OFFSET_TO_EAP], &eapsize)) + { + case XINNERSUCCESS: + // We got a LEAP success, so we need to tell the state machine to +@@ -231,7 +231,7 @@ + if ((eapolver < 1) || (eapolver > MAX_EAPOL_VER)) + eapolver = snmp_get_dot1xSuppLastEapolFrameVersion(); + +- eapol_build_header(EAP_PACKET, eapsize, eapolver, thisint->sendframe); ++ eapol_build_header(EAP_PACKET, eapsize, eapolver, (char *) thisint->sendframe); + thisint->send_size = eapsize+OFFSET_TO_EAP; + return XENONE; + } +@@ -284,7 +284,7 @@ + + eap_request_id(network_data->identity, + eapdata->eap_identifier, +- &thisint->sendframe[OFFSET_TO_EAP], &eapsize); ++ (char *) &thisint->sendframe[OFFSET_TO_EAP], &eapsize); + + eapolver = network_data->force_eapol_ver; + +@@ -295,7 +295,7 @@ + if ((eapolver < 1) || (eapolver > MAX_EAPOL_VER)) + eapolver = snmp_get_dot1xSuppLastEapolFrameVersion(); + +- eapol_build_header(EAP_PACKET, eapsize, eapolver, thisint->sendframe); ++ eapol_build_header(EAP_PACKET, eapsize, eapolver, (char *) thisint->sendframe); + thisint->send_size = eapsize+OFFSET_TO_EAP; + + return XENONE; +@@ -379,7 +379,7 @@ + // We need to determine how long the string that we were returned is. + // So, take the EAP length value, and subtract 5 to account for the EAP + // header. +- strncpy(&myval[0], &inframe[OFFSET_TO_DATA], (ntohs(myeap->eap_length)-5)); ++ strncpy(&myval[0], (char *) &inframe[OFFSET_TO_DATA], (ntohs(myeap->eap_length)-5)); + + debug_printf(DEBUG_NORMAL, "EAP Notification : %s\n", &myval[0]); + bzero(thisint->recvframe, thisint->recv_size); +@@ -814,8 +814,8 @@ + if ((pwd_needed != 1) || (activemethod->tempPwd != NULL)) + { + switch ((*eaphandlers[eapmethod].eap_auth_handlers)(activemethod, +- tosendframe, eapinsize, +- &outframe[sizeof(struct eap_header)], ++ (u_char *) tosendframe, eapinsize, ++ (u_char *) &outframe[sizeof(struct eap_header)], + eapsize)) + { + case XINNERSUCCESS: +@@ -962,9 +962,9 @@ + + (*eaphandlers[eapmethod].eap_auth_get_keys)(thisint); + +- thisint->statemachine->PMK = thisint->keyingMaterial; ++ thisint->statemachine->PMK = (char *) thisint->keyingMaterial; + debug_printf(DEBUG_INT, "PMK Keys (%d) :\n", thisint->keyingLength); +- debug_hex_dump(DEBUG_INT, thisint->statemachine->PMK, thisint->keyingLength); ++ debug_hex_dump(DEBUG_INT, (u_char *) thisint->statemachine->PMK, thisint->keyingLength); + + debug_printf(DEBUG_INT, "WEP Keys (%d) :\n", thisint->keyingLength); + debug_hex_dump(DEBUG_INT, thisint->keyingMaterial, thisint->keyingLength); +--- xsupplicant-1.2.1/src/eapol_key_type2.c.BAD 2005-09-03 09:34:10.000000000 -0500 ++++ xsupplicant-1.2.1/src/eapol_key_type2.c 2005-09-03 16:32:47.000000000 -0500 +@@ -172,7 +172,7 @@ + case 2: + // XXX BROKEN! FIX! + bzero(key, 16); +- aes_unwrap(&intdata->statemachine->PTK[16], (keylen-8)/8, keypayload, ++ aes_unwrap((u_char *) &intdata->statemachine->PTK[16], (keylen-8)/8, keypayload, + key); + break; + +@@ -238,12 +238,12 @@ + } + + debug_printf(DEBUG_INT, "PMK : "); +- debug_hex_printf(DEBUG_INT, intdata->statemachine->PMK, 32); +- wpa_PRF(intdata->statemachine->PMK, 32, "Pairwise key expansion", 22, +- (char *)&prfdata, 76, retval, 64); ++ debug_hex_printf(DEBUG_INT, (u_char *) intdata->statemachine->PMK, 32); ++ wpa_PRF((u_char *) intdata->statemachine->PMK, 32, (u_char *) "Pairwise key expansion", 22, ++ (u_char *)&prfdata, 76, (u_char *) retval, 64); + + debug_printf(DEBUG_INT, "PTK : "); +- debug_hex_printf(DEBUG_INT, retval, 64); ++ debug_hex_printf(DEBUG_INT, (u_char *) retval, 64); + + return retval; + } +@@ -310,10 +310,10 @@ + eapolver = snmp_get_dot1xSuppLastEapolFrameVersion(); + + eapol_build_header(EAPOL_KEY, (intdata->send_size-OFFSET_TO_EAPOL-4), +- eapolver, intdata->sendframe); ++ eapolver, (char *) intdata->sendframe); + + memcpy(key, intdata->statemachine->PTK, 16); +- mic_wpa_populate(intdata->sendframe, intdata->send_size+4, key, 16); ++ mic_wpa_populate((char *) intdata->sendframe, intdata->send_size+4, key, 16); + + cardif_sendframe(intdata); + intdata->statemachine->eapolEap = FALSE; +@@ -394,7 +394,7 @@ + bzero(rc4_ek, 32); + memcpy(rc4_ek, inkeydata->key_iv, 16); + memcpy(&rc4_ek[16], &intdata->statemachine->PTK[16], 16); +- rc4_skip(rc4_ek, 32, 256, keydata, value16); ++ rc4_skip((u_char *) rc4_ek, 32, 256, keydata, value16); + + debug_printf(DEBUG_INT, "Decrypted data : (%d)\n", value16); + debug_hex_dump(DEBUG_INT, keydata, value16); +@@ -410,17 +410,17 @@ + wpa_common_swap_rx_tx_mic(keydata); + + debug_printf(DEBUG_INT, "Setting GTK with index of %d\n", keyindex); +- cardif_set_tkip_key(intdata, allfs, keyindex, FALSE, inkeydata->key_rsc, +- 6, keydata, value16); ++ cardif_set_tkip_key(intdata, (char *) allfs, keyindex, FALSE, (char *) inkeydata->key_rsc, ++ 6, (char *) keydata, value16); + break; + + case 2: + // First, decrypt the GTK + bzero(key, 16); +- aes_unwrap(&intdata->statemachine->PTK[16], (value16-8)/8, keydata, +- key); ++ aes_unwrap((u_char *) &intdata->statemachine->PTK[16], (value16-8)/8, keydata, ++ (u_char *) key); + +- cardif_set_ccmp_key(intdata, NULL, keyindex, FALSE, inkeydata->key_rsc, ++ cardif_set_ccmp_key(intdata, NULL, keyindex, FALSE, (char *) inkeydata->key_rsc, + 6, key, (value16-8)); + break; + } +@@ -446,13 +446,13 @@ + eapolver = snmp_get_dot1xSuppLastEapolFrameVersion(); + + eapol_build_header(EAPOL_KEY, (intdata->send_size-OFFSET_TO_EAPOL-4), +- eapolver, intdata->sendframe); ++ eapolver, (char *) intdata->sendframe); + + memcpy(key, intdata->statemachine->PTK, 16); +- mic_wpa_populate(intdata->sendframe, intdata->send_size+4, key, 16); ++ mic_wpa_populate((char *) intdata->sendframe, intdata->send_size+4, key, 16); + + // Dump what we built. +- eapol_key_type2_dump(intdata, intdata->sendframe); ++ eapol_key_type2_dump(intdata, (char *) intdata->sendframe); + + if (network_data->methods->method_num == WPA_PSK) + { +@@ -560,13 +560,13 @@ + eapolver = snmp_get_dot1xSuppLastEapolFrameVersion(); + + eapol_build_header(EAPOL_KEY, (intdata->send_size-OFFSET_TO_EAPOL-4), +- eapolver, intdata->sendframe); ++ eapolver, (char *) intdata->sendframe); + + memcpy(key, intdata->statemachine->PTK, 16); +- mic_wpa_populate(intdata->sendframe, intdata->send_size+4, key, 16); ++ mic_wpa_populate((char *) intdata->sendframe, intdata->send_size+4, key, 16); + + // Dump what we built. +- eapol_key_type2_dump(intdata, intdata->sendframe); ++ eapol_key_type2_dump(intdata, (char *) intdata->sendframe); + } + + /******************************************************** +@@ -596,7 +596,7 @@ + memcpy(iedata, indata, len); + + debug_printf(DEBUG_INT, "Got an IE of : \n"); +- debug_hex_dump(DEBUG_INT, iedata, len); ++ debug_hex_dump(DEBUG_INT, (u_char *) iedata, len); + + // XXX Todo : Verify the IE against the IE we have from the AP. + +@@ -869,20 +869,20 @@ + eapolver = snmp_get_dot1xSuppLastEapolFrameVersion(); + + eapol_build_header(EAPOL_KEY, (intdata->send_size-OFFSET_TO_EAPOL-4), +- eapolver, intdata->sendframe); ++ eapolver, (char *) intdata->sendframe); + + memcpy(key, intdata->statemachine->PTK, 16); +- mic_wpa_populate(intdata->sendframe, intdata->send_size+4, key, 16); ++ mic_wpa_populate((char *) intdata->sendframe, intdata->send_size+4, key, 16); + + // Dump what we built. +- eapol_key_type2_dump(intdata, intdata->sendframe); ++ eapol_key_type2_dump(intdata, (char *) intdata->sendframe); + + // Get TK1 + value16 = ntohs(inkeydata->key_length); + memcpy(key, (char *)&intdata->statemachine->PTK[32], value16); + + debug_printf(DEBUG_INT, "TK1 : "); +- debug_hex_printf(DEBUG_INT, key, value16); ++ debug_hex_printf(DEBUG_INT, (u_char *) key, value16); + + cardif_sendframe(intdata); + intdata->statemachine->eapolEap = FALSE; +@@ -902,12 +902,12 @@ + bzero(rc4_ek, 32); + memcpy(rc4_ek, inkeydata->key_iv, 16); + memcpy(&rc4_ek[16], &intdata->statemachine->PTK[16], 16); +- rc4_skip(rc4_ek, 32, 256, keydata, keylen); ++ rc4_skip((u_char *) rc4_ek, 32, 256, keydata, keylen); + break; + + case 2: + aesval = (uint8_t *)malloc(keylen); +- if (aes_unwrap(&intdata->statemachine->PTK[16], (keylen-8)/8, keydata, ++ if (aes_unwrap((u_char *) &intdata->statemachine->PTK[16], (keylen-8)/8, keydata, + aesval)) + { + debug_printf(DEBUG_NORMAL, "Failed AES unwrap!\n"); +@@ -943,13 +943,13 @@ + { + case 1: + wpa_common_swap_rx_tx_mic(gtk); +- cardif_set_tkip_key(intdata, allfs, keyindex, txkey, +- inkeydata->key_rsc, RSC_LEN, gtk, value16); ++ cardif_set_tkip_key(intdata, (char*) allfs, keyindex, txkey, ++ (char *) inkeydata->key_rsc, RSC_LEN, (char *) gtk, value16); + break; + + case 2: +- cardif_set_ccmp_key(intdata, allfs, keyindex, txkey, +- inkeydata->key_rsc, RSC_LEN, gtk, value16); ++ cardif_set_ccmp_key(intdata, (char *) allfs, keyindex, txkey, ++ (char *) inkeydata->key_rsc, RSC_LEN, (char *) gtk, value16); + break; + } + +@@ -973,15 +973,15 @@ + case 1: + // We need to swap the TX/RX MIC values since we are the supplicant. + // (Thanks to Jouni Malinen for pointing this out!) +- wpa_common_swap_rx_tx_mic(key); ++ wpa_common_swap_rx_tx_mic((u_char *) key); + + cardif_set_tkip_key(intdata, intdata->dest_mac, 0, TRUE, +- inkeydata->key_rsc, RSC_LEN, key, value16); ++ (char *) inkeydata->key_rsc, RSC_LEN, key, value16); + break; + + case 2: + cardif_set_ccmp_key(intdata, intdata->dest_mac, 0, TRUE, +- inkeydata->key_rsc, RSC_LEN, key, value16); ++ (char *) inkeydata->key_rsc, RSC_LEN, key, value16); + break; + } + } +@@ -1008,7 +1008,7 @@ + + if (keyflags & WPA2_KEY_MIC_FLAG) + { +- if (mic_wpa_validate(intdata->recvframe, intdata->recv_size, ++ if (mic_wpa_validate((char *) intdata->recvframe, intdata->recv_size, + intdata->statemachine->PTK, 16) == FALSE) + { + intdata->statemachine->MICVerified = TRUE; +@@ -1058,7 +1058,7 @@ + eapolver = snmp_get_dot1xSuppLastEapolFrameVersion(); + + eapol_build_header(EAPOL_KEY, (intdata->recv_size-OFFSET_TO_EAPOL-4), +- eapolver, intdata->recvframe); ++ eapolver, (char *) intdata->recvframe); + cardif_sendframe(intdata); + intdata->statemachine->eapolEap = FALSE; + } +@@ -1127,8 +1127,8 @@ + } + + // We have an ASCII password, so calculate it. +- if (psk_wpa_pbkdf2(psk->key, intdata->cur_essid, +- strlen(intdata->cur_essid), (char *)&tpmk) ++ if (psk_wpa_pbkdf2(psk->key, (u_char *) intdata->cur_essid, ++ strlen(intdata->cur_essid), (u_char *)&tpmk) + == TRUE) + { + intdata->statemachine->PMK = (char *)malloc(32); +@@ -1168,7 +1168,7 @@ + } + } + +- eapol_key_type2_dump(intdata, inframe); ++ eapol_key_type2_dump(intdata, (char *) inframe); + + eapol_key_type2_determine_key(intdata); + +--- xsupplicant-1.2.1/src/eap_types/otp/eapotp.c.BAD 2005-09-03 17:26:09.000000000 -0500 ++++ xsupplicant-1.2.1/src/eap_types/otp/eapotp.c 2005-09-03 17:26:47.000000000 -0500 +@@ -123,7 +123,7 @@ + /* debug_printf(DEBUG_NORMAL, "Response : "); + gets(&resp); */ + +- strcpy(outframe, resp); ++ strcpy((char *) outframe, resp); + *outsize = strlen(resp); + + return *outsize; +--- xsupplicant-1.2.1/src/eap_types/tls/tls_funcs.c.BAD 2005-09-03 16:38:06.000000000 -0500 ++++ xsupplicant-1.2.1/src/eap_types/tls/tls_funcs.c 2005-09-03 16:42:46.000000000 -0500 +@@ -445,7 +445,7 @@ + } + + debug_printf(DEBUG_AUTHTYPES, "Packet in (%d) :\n", insize); +- debug_hex_dump(DEBUG_AUTHTYPES, inframe, insize); ++ debug_hex_dump(DEBUG_AUTHTYPES, (u_char *) inframe, insize); + + // First, make sure we don't have any errors. + err = ERR_get_error(); +@@ -563,7 +563,7 @@ + + if ((mytls_vars->resuming != 1) || (mytls_vars->quickResponse != TRUE)) + { +- if (((*dophase2)(thisint, tlsptr, (insize-tlsindex), outframe, ++ if (((*dophase2)(thisint, (u_char *) tlsptr, (insize-tlsindex), outframe, + outsize)) != XENONE) + { + debug_printf(DEBUG_NORMAL, "Phase 2 failure!\n"); +@@ -578,7 +578,7 @@ + } + } + } else { +- rtnVal = tls_funcs_parse(thisint, tlsptr, (insize-tlsindex), outframe, outsize, chunksize); ++ rtnVal = tls_funcs_parse(thisint, (u_char *) tlsptr, (insize-tlsindex), outframe, outsize, chunksize); + if (rtnVal < 0) + { + debug_printf(DEBUG_NORMAL, "Couldn't parse TLS data.\n"); +@@ -642,7 +642,7 @@ + + if ((mytls_vars->resuming != 1) || (mytls_vars->quickResponse != TRUE)) + { +- if ((*dophase2)(thisint, tlsptr, (insize-tlsindex), ++ if ((*dophase2)(thisint, (u_char *) tlsptr, (insize-tlsindex), + outframe, outsize) != XENONE) + { + debug_printf(DEBUG_NORMAL, "Phase 2 Failure.\n"); +@@ -1083,32 +1083,32 @@ + /* P_MD5 */ + hash = EVP_md5(); + /* Initialize A_MD5 */ +- HMAC(hash, S1, L_S1, P_seed, P_seed_len, A_MD5, &hashed_len); ++ HMAC(hash, S1, L_S1, P_seed, P_seed_len, A_MD5, (u_int *) &hashed_len); + + for (i = 0; i < MD5_iterations; i++) { + HMAC_Init(&ctx, S1, L_S1, hash); + HMAC_Update(&ctx, A_MD5, MD5_DIGEST_LENGTH); + HMAC_Update(&ctx, P_seed, P_seed_len); +- HMAC_Final(&ctx, P_MD5_buf + i*(MD5_DIGEST_LENGTH), &hashed_len); ++ HMAC_Final(&ctx, P_MD5_buf + i*(MD5_DIGEST_LENGTH), (u_int *) &hashed_len); + HMAC_cleanup(&ctx); + HMAC(hash, S1, L_S1, A_MD5, MD5_DIGEST_LENGTH, +- A_MD5, &hashed_len); ++ A_MD5, (u_int *) &hashed_len); + } + + + /* do P_SHA1 */ + hash = EVP_sha1(); + /* Initialize A_SHA1 */ +- HMAC(hash, S2, L_S2, P_seed, P_seed_len, A_SHA1, &hashed_len); ++ HMAC(hash, S2, L_S2, P_seed, P_seed_len, A_SHA1, (u_int *) &hashed_len); + + for (i = 0; i < SHA1_iterations; i++) { + HMAC_Init(&ctx, S2, L_S2, hash); + HMAC_Update(&ctx, A_SHA1, SHA_DIGEST_LENGTH); + HMAC_Update(&ctx, P_seed, P_seed_len); +- HMAC_Final(&ctx, P_SHA1_buf + i*(SHA_DIGEST_LENGTH), &hashed_len); ++ HMAC_Final(&ctx, P_SHA1_buf + i*(SHA_DIGEST_LENGTH), (u_int *) &hashed_len); + HMAC_cleanup(&ctx); + HMAC(hash, S2, L_S2, A_SHA1, SHA_DIGEST_LENGTH, +- A_SHA1, &hashed_len); ++ A_SHA1, (u_int *) &hashed_len); + } + /* XOR Them for the answer */ + for (i = 0; i < outlen; i++) { +--- xsupplicant-1.2.1/src/eap_types/tls/tls_crypt.c.BAD 2005-09-03 16:58:16.000000000 -0500 ++++ xsupplicant-1.2.1/src/eap_types/tls/tls_crypt.c 2005-09-03 16:58:35.000000000 -0500 +@@ -72,7 +72,7 @@ + memcpy(p, mytls_vars->ssl->s3->server_random, SSL3_RANDOM_SIZE); + tls_funcs_PRF(SSL_get_session(mytls_vars->ssl)->master_key, + SSL_get_session(mytls_vars->ssl)->master_key_length, +- sesskey, sesskeylen, seed, ++ (u_char *) sesskey, sesskeylen, seed, + SSL3_RANDOM_SIZE * 2, retblock, + TLS_SESSION_KEY_SIZE); + +--- xsupplicant-1.2.1/src/eap_types/tls/eaptls.c.BAD 2005-09-03 16:33:36.000000000 -0500 ++++ xsupplicant-1.2.1/src/eap_types/tls/eaptls.c 2005-09-03 16:36:48.000000000 -0500 +@@ -192,7 +192,7 @@ + // Make sure we have something to process... + if (dataoffs == NULL) return XENONE; + +- retVal=tls_funcs_decode_packet(thisint, dataoffs, insize, outframe, outsize, ++ retVal=tls_funcs_decode_packet(thisint, (char *) dataoffs, insize, (char *) outframe, outsize, + NULL, userdata->chunk_size); + + return retVal; +@@ -222,7 +222,7 @@ + free(thisint->keyingMaterial); + } + +- thisint->keyingMaterial = tls_funcs_gen_keyblock(network_data->activemethod); ++ thisint->keyingMaterial = (u_char *) tls_funcs_gen_keyblock(network_data->activemethod); + thisint->keyingLength = 32; + + if (thisint->keyingMaterial == NULL) return -1; +--- xsupplicant-1.2.1/src/eap_types/peap/eappeap.c.BAD 2005-09-03 17:16:00.000000000 -0500 ++++ xsupplicant-1.2.1/src/eap_types/peap/eappeap.c 2005-09-03 17:16:47.000000000 -0500 +@@ -239,7 +239,7 @@ + set_peap_version(p2d, peap_version); // Tell PEAP what version we want to use. + dataoffs[0] = ((uint8_t)dataoffs[0] & 0xfc); // Mask out the version bits. + +- if (tls_funcs_decode_packet(thisint, dataoffs, insize, outframe, outsize, ++ if (tls_funcs_decode_packet(thisint, (char *) dataoffs, insize, (char *) outframe, outsize, + (phase2_call)peap_do_phase2, + userdata->chunk_size) != XENONE) + { +@@ -335,7 +335,7 @@ + { + free(thisint->keyingMaterial); + } +- thisint->keyingMaterial = tls_funcs_gen_keyblock(network_data->activemethod); ++ thisint->keyingMaterial = (u_char *) tls_funcs_gen_keyblock(network_data->activemethod); + thisint->keyingLength = 32; + + if (thisint->keyingMaterial == NULL) return -1; +--- xsupplicant-1.2.1/src/eap_types/peap/peap_phase2.c.BAD 2005-09-03 17:17:38.000000000 -0500 ++++ xsupplicant-1.2.1/src/eap_types/peap/peap_phase2.c 2005-09-03 17:21:23.000000000 -0500 +@@ -160,7 +160,7 @@ + switch ((uint8_t)eapvalue) + { + case EAP_REQUEST: +- eap_request_id(thisint->eapdata->identity, eapid, out, out_size); ++ eap_request_id(thisint->eapdata->identity, eapid, (char *) out, out_size); + break; + + case EAP_SUCCESS: +@@ -192,7 +192,7 @@ + return; + } + eap_request_auth(thisint->activemethod, thisint->eapdata->eap_conf_data, +- in, in_size, out, out_size); ++ (char *) in, in_size, (char *) out, out_size); + break; + } + free(new_frame); +@@ -249,7 +249,7 @@ + + if (eframe != 1) + { +- peap_pad_frame(in, in_size, padded_frame, &padded_size); ++ peap_pad_frame(in, in_size, (u_char *) padded_frame, &padded_size); + } + + new_frame = (char *)malloc(1024); +@@ -259,12 +259,12 @@ + return; + } + +- do_peap_version1(thisint, padded_frame, padded_size, new_frame, ++ do_peap_version1(thisint, (u_char *) padded_frame, padded_size, (u_char *) new_frame, + &new_frame_size); + free(padded_frame); + if (eframe !=1) + { +- peap_unpad_frame(new_frame, new_frame_size, out, out_size); ++ peap_unpad_frame((u_char *) new_frame, new_frame_size, out, out_size); + } else { + memcpy(out, new_frame, new_frame_size); + *out_size = new_frame_size; +@@ -330,14 +330,14 @@ + p2d->eapdata->identity = peapconf->identity; + p2d->eapdata->ias_quirk = peapconf->ias_quirk; + +- decr_data = (char *)malloc(1550); ++ decr_data = (u_char *)malloc(1550); + if (decr_data == NULL) + { + debug_printf(DEBUG_NORMAL, "Couldn't allocate memory for decryption buffer!\n"); + return XEMALLOC; + } + +- encr_data = (char *)malloc(1550); ++ encr_data = (u_char *)malloc(1550); + if (encr_data == NULL) + { + debug_printf(DEBUG_NORMAL, "Couldn't allocate memory for encryption buffer!\n"); +--- xsupplicant-1.2.1/src/eap_types/mschapv2/eapmschapv2.c.BAD 2005-09-03 17:09:07.000000000 -0500 ++++ xsupplicant-1.2.1/src/eap_types/mschapv2/eapmschapv2.c 2005-09-03 17:15:29.000000000 -0500 +@@ -153,13 +153,13 @@ + myvars->AuthenticatorChallenge = NULL; + } + +- myvars->AuthenticatorChallenge = (u_char *)malloc(16); ++ myvars->AuthenticatorChallenge = (char *)malloc(16); + if (myvars->AuthenticatorChallenge == NULL) return XEMALLOC; + + memcpy(myvars->AuthenticatorChallenge, &challenge->Challenge, 16); + + debug_printf(DEBUG_AUTHTYPES, "Authenticator Challenge : "); +- debug_hex_printf(DEBUG_AUTHTYPES, myvars->AuthenticatorChallenge, 16); ++ debug_hex_printf(DEBUG_AUTHTYPES, (u_char *) myvars->AuthenticatorChallenge, 16); + + if (myvars->PeerChallenge != NULL) + { +@@ -168,13 +168,13 @@ + } + + // Ignore the RADIUS host, we probably don't care. +- myvars->PeerChallenge = (u_char *)malloc(16); ++ myvars->PeerChallenge = (char *)malloc(16); + if (myvars->PeerChallenge == NULL) return XEMALLOC; + +- RAND_bytes(myvars->PeerChallenge, 16); ++ RAND_bytes((u_char *) myvars->PeerChallenge, 16); + + debug_printf(DEBUG_AUTHTYPES, "Generated PeerChallenge : "); +- debug_hex_printf(DEBUG_AUTHTYPES, myvars->PeerChallenge,16); ++ debug_hex_printf(DEBUG_AUTHTYPES, (u_char *) myvars->PeerChallenge,16); + + if (myvars->NtResponse != NULL) + { +@@ -182,14 +182,14 @@ + myvars->NtResponse = NULL; + } + +- myvars->NtResponse = (u_char *)malloc(24); ++ myvars->NtResponse = (char *)malloc(24); + if (myvars->NtResponse == NULL) return XEMALLOC; + + GenerateNTResponse(myvars->AuthenticatorChallenge, myvars->PeerChallenge, + username, userdata->password, myvars->NtResponse); + + debug_printf(DEBUG_AUTHTYPES, "myvars->NtResponse = "); +- debug_hex_printf(DEBUG_AUTHTYPES, myvars->NtResponse, 24); ++ debug_hex_printf(DEBUG_AUTHTYPES, (u_char *) myvars->NtResponse, 24); + + response->OpCode = MS_CHAPV2_RESPONSE; + response->MS_CHAPv2_ID = challenge->MS_CHAPv2_ID; +@@ -219,7 +219,7 @@ + CheckAuthenticatorResponse(userdata->password, + myvars->NtResponse, myvars->PeerChallenge, + myvars->AuthenticatorChallenge, +- username, (u_char *)&recv[0], &respOk); ++ username, (char *)&recv[0], &respOk); + + if (respOk == 1) + { +@@ -227,15 +227,15 @@ + outframe[0] = MS_CHAPV2_SUCCESS; + + // We were successful, so generate keying material. +- NtPasswordHash(userdata->password, (u_char *)&NtHash); +- HashNtPasswordHash((u_char *)&NtHash, (u_char *)&NtHashHash); +- GetMasterKey((u_char *)&NtHashHash, myvars->NtResponse, (u_char *)&MasterKey); ++ NtPasswordHash(userdata->password, (char *)&NtHash); ++ HashNtPasswordHash((char *)&NtHash, (char *)&NtHashHash); ++ GetMasterKey((char *)&NtHashHash, myvars->NtResponse, (char *)&MasterKey); + + // Now, get the send key. +- GetAsymetricStartKey((u_char *)&MasterKey, (u_char *)&mppeSend, 16, TRUE, FALSE); ++ GetAsymetricStartKey((char *)&MasterKey, (char *)&mppeSend, 16, TRUE, FALSE); + + // And the recv key. +- GetAsymetricStartKey((u_char *)&MasterKey, (u_char *)&mppeRecv, 16, FALSE, FALSE); ++ GetAsymetricStartKey((char *)&MasterKey, (char *)&mppeRecv, 16, FALSE, FALSE); + + // Finally, populate our myvars->keyingMaterial. + if (myvars->keyingMaterial != NULL) +@@ -243,7 +243,7 @@ + free(myvars->keyingMaterial); + myvars->keyingMaterial = NULL; + } +- myvars->keyingMaterial = (u_char *)malloc(64); // 32 bytes each. ++ myvars->keyingMaterial = (char *)malloc(64); // 32 bytes each. + if (myvars->keyingMaterial == NULL) return XEMALLOC; + + bzero(myvars->keyingMaterial, 64); +@@ -294,7 +294,7 @@ + free(thisint->keyingMaterial); + } + +- thisint->keyingMaterial = (char *)malloc(64); ++ thisint->keyingMaterial = (u_char *)malloc(64); + if (thisint->keyingMaterial == NULL) return -1; + + memcpy(thisint->keyingMaterial, myconf->keyingMaterial, 64); +--- xsupplicant-1.2.1/src/eap_types/mschapv2/mschapv2.c.BAD 2005-09-03 17:01:58.000000000 -0500 ++++ xsupplicant-1.2.1/src/eap_types/mschapv2/mschapv2.c 2005-09-03 17:04:49.000000000 -0500 +@@ -46,7 +46,7 @@ + EVP_DigestUpdate(&cntx, PeerChallenge, 16); + EVP_DigestUpdate(&cntx, AuthenticatorChallenge, 16); + EVP_DigestUpdate(&cntx, UserName, strlen(UserName)); +- EVP_DigestFinal(&cntx, (char *)&Digest, &retLen); ++ EVP_DigestFinal(&cntx, (u_char *)&Digest, (u_int *) &retLen); + + memcpy(Challenge, Digest, 8); + } +@@ -96,7 +96,7 @@ + + EVP_DigestInit(&cntx, EVP_md4()); + EVP_DigestUpdate(&cntx, uniPassword, len); +- EVP_DigestFinal(&cntx, (char *)&retVal, (int *)&i); ++ EVP_DigestFinal(&cntx, (u_char *)&retVal, (u_int *)&i); + memcpy(PasswordHash, &retVal, 16); + free(uniPassword); + } +@@ -114,7 +114,7 @@ + + EVP_DigestInit(&cntx, EVP_md4()); + EVP_DigestUpdate(&cntx, PasswordHash, 16); +- EVP_DigestFinal(&cntx, PasswordHashHash, &i); ++ EVP_DigestFinal(&cntx, (u_char *) PasswordHashHash, (u_int *) &i); + } + + // Shamelessly take from the hostap code written by Jouni Malinen +@@ -231,7 +231,7 @@ + EVP_DigestUpdate(&context, &PasswordHashHash, 16); + EVP_DigestUpdate(&context, NTResponse, 24); + EVP_DigestUpdate(&context, Magic1, 39); +- EVP_DigestFinal(&context, (char *)&Digest, &Digest_len); ++ EVP_DigestFinal(&context, (u_char *)&Digest, (u_int *) &Digest_len); + + ChallengeHash(PeerChallenge, AuthenticatorChallenge, UserName, Challenge); + +@@ -239,7 +239,7 @@ + EVP_DigestUpdate(&context, &Digest, 20); + EVP_DigestUpdate(&context, &Challenge, 8); + EVP_DigestUpdate(&context, Magic2, 41); +- EVP_DigestFinal(&context, (char *)&Digest, &Digest_len); ++ EVP_DigestFinal(&context, (u_char *)&Digest, (u_int *) &Digest_len); + + memcpy(AuthenticatorResponse, &Digest, Digest_len); + } +@@ -287,12 +287,12 @@ + return; + } + +- des_encrypt(Challenge, PasswordHash, Response); +- des_encrypt(Challenge, PasswordHash + 7, Response+8); ++ des_encrypt((uint8_t *) Challenge, (uint8_t *) PasswordHash, (uint8_t *) Response); ++ des_encrypt((uint8_t *) Challenge, (uint8_t *) PasswordHash + 7, (uint8_t *) Response+8); + zpwd[0] = PasswordHash[14]; + zpwd[1] = PasswordHash[15]; + memset(zpwd + 2, 0, 5); +- des_encrypt(Challenge, zpwd, Response+16); ++ des_encrypt((uint8_t *) Challenge, zpwd, (uint8_t *) Response+16); + } + + void NtChallengeResponse(char *Challenge, char *Password, char *Response) +@@ -323,18 +323,18 @@ + + ChallengeHash(PeerChallenge, AuthenticatorChallenge, UserName, (char *)&Challenge); + debug_printf(DEBUG_AUTHTYPES, "PeerChallenge : "); +- debug_hex_printf(DEBUG_AUTHTYPES, PeerChallenge, 8); ++ debug_hex_printf(DEBUG_AUTHTYPES, (u_char *) PeerChallenge, 8); + debug_printf(DEBUG_AUTHTYPES, "AuthenticatorChallenge : "); +- debug_hex_printf(DEBUG_AUTHTYPES, AuthenticatorChallenge, 8); ++ debug_hex_printf(DEBUG_AUTHTYPES, (u_char *) AuthenticatorChallenge, 8); + debug_printf(DEBUG_AUTHTYPES, "Username : %s\n",UserName); + debug_printf(DEBUG_AUTHTYPES, "Challenge : "); +- debug_hex_printf(DEBUG_AUTHTYPES, Challenge, 8); ++ debug_hex_printf(DEBUG_AUTHTYPES, (u_char *) Challenge, 8); + NtPasswordHash(Password, (char *)&PasswordHash); + debug_printf(DEBUG_AUTHTYPES, "PasswordHash : "); +- debug_hex_printf(DEBUG_AUTHTYPES, PasswordHash, 16); ++ debug_hex_printf(DEBUG_AUTHTYPES, (u_char *) PasswordHash, 16); + ChallengeResponse(Challenge, (char *)&PasswordHash, Response); + debug_printf(DEBUG_AUTHTYPES, "Response : "); +- debug_hex_printf(DEBUG_AUTHTYPES, Response, 24); ++ debug_hex_printf(DEBUG_AUTHTYPES, (u_char *) Response, 24); + } + + void GetMasterKey(char *PasswordHashHash, char *NTResponse, char *MasterKey) +@@ -360,7 +360,7 @@ + EVP_DigestUpdate(&cntx, PasswordHashHash, 16); + EVP_DigestUpdate(&cntx, NTResponse, 24); + EVP_DigestUpdate(&cntx, (char *)&Magic1, 27); +- EVP_DigestFinal(&cntx, (char *)&Digest, &retLen); ++ EVP_DigestFinal(&cntx, (u_char *)&Digest, (u_int *) &retLen); + + memcpy(MasterKey, &Digest, 16); + } +@@ -386,7 +386,7 @@ + EVP_DigestUpdate(&cntx, APR, 24); + EVP_DigestUpdate(&cntx, PC, 8); + EVP_DigestUpdate(&cntx, PR, 24); +- EVP_DigestFinal(&cntx, (char *)&Digest, &retLen); ++ EVP_DigestFinal(&cntx, (u_char *)&Digest, (u_int *) &retLen); + + memcpy(MasterKey, &Digest, 16); + +@@ -461,7 +461,7 @@ + EVP_DigestUpdate(&cntx, SHSpad1, 40); + EVP_DigestUpdate(&cntx, (char *)&Magic, 84); + EVP_DigestUpdate(&cntx, SHSpad2, 40); +- EVP_DigestFinal(&cntx, (char *)&Digest, &retLen); ++ EVP_DigestFinal(&cntx, (u_char *)&Digest, (u_int *)&retLen); + + memcpy(SessionKey, &Digest, SessionKeyLength); + } +--- xsupplicant-1.2.1/src/eap_types/ttls/eapttls.c.BAD 2005-09-03 16:43:18.000000000 -0500 ++++ xsupplicant-1.2.1/src/eap_types/ttls/eapttls.c 2005-09-03 16:44:20.000000000 -0500 +@@ -215,7 +215,7 @@ + // Make sure we have a valid packet to process. + if (dataoffs == NULL) return XENONE; + +- result=tls_funcs_decode_packet(thisint, dataoffs, insize, outframe, outsize, ++ result=tls_funcs_decode_packet(thisint, (char *) dataoffs, insize, (char *) outframe, outsize, + (phase2_call)ttls_do_phase2, userdata->chunk_size); + + if (result != 0) +@@ -250,7 +250,7 @@ + free(thisint->keyingMaterial); + } + +- thisint->keyingMaterial = tls_funcs_gen_keyblock(network_data->activemethod); ++ thisint->keyingMaterial = (u_char *) tls_funcs_gen_keyblock(network_data->activemethod); + thisint->keyingLength = 32; + + if (thisint->keyingMaterial == NULL) return -1; +--- xsupplicant-1.2.1/src/eap_types/ttls/ttlsphase2.c.BAD 2005-09-03 16:45:26.000000000 -0500 ++++ xsupplicant-1.2.1/src/eap_types/ttls/ttlsphase2.c 2005-09-03 16:57:41.000000000 -0500 +@@ -184,7 +184,7 @@ + username_size = strlen(username); + + // Send the Username AVP +- build_avp(USER_NAME_AVP, 0, MANDITORY_FLAG, username, username_size, out_data, &avp_out_size); ++ build_avp(USER_NAME_AVP, 0, MANDITORY_FLAG, (uint8_t *) username, username_size, (uint8_t *) out_data, &avp_out_size); + + avp_offset = avp_out_size; + +@@ -200,7 +200,7 @@ + id = challenge[16]; + + // Send the MS-CHAP AVP +- build_avp(MS_CHAP_CHALLENGE, MS_VENDOR_ATTR, (MANDITORY_FLAG | VENDOR_FLAG), (char *)&mschap_challenge, 16, &out_data[avp_offset], &avp_out_size); ++ build_avp(MS_CHAP_CHALLENGE, MS_VENDOR_ATTR, (MANDITORY_FLAG | VENDOR_FLAG), (uint8_t *) &mschap_challenge, 16, (uint8_t *) &out_data[avp_offset], &avp_out_size); + + avp_offset+=avp_out_size; + +@@ -217,7 +217,7 @@ + memcpy(&mschap_answer[2], &mschap_challenge, 16); + memcpy(&mschap_answer[26], &mschap_result, 24); + +- build_avp(MS_CHAP2_RESPONSE, MS_VENDOR_ATTR, (MANDITORY_FLAG | VENDOR_FLAG), (char *)&mschap_answer, 50, &out_data[avp_offset], &avp_out_size); ++ build_avp(MS_CHAP2_RESPONSE, MS_VENDOR_ATTR, (MANDITORY_FLAG | VENDOR_FLAG), (uint8_t *) &mschap_answer, 50, (uint8_t *) &out_data[avp_offset], &avp_out_size); + avp_offset+=avp_out_size; + *out_size = avp_offset; + } +@@ -283,7 +283,7 @@ + username_size = strlen(username); + + // Send the Username AVP +- build_avp(USER_NAME_AVP, 0, MANDITORY_FLAG, username, username_size, out_data, &avp_out_size); ++ build_avp(USER_NAME_AVP, 0, MANDITORY_FLAG, (uint8_t *) username, username_size, (uint8_t *) out_data, &avp_out_size); + + avp_offset = avp_out_size; + +@@ -299,7 +299,7 @@ + id = challenge[8]; + + // Send the MS-CHAP AVP +- build_avp(MS_CHAP_CHALLENGE, MS_VENDOR_ATTR, (MANDITORY_FLAG | VENDOR_FLAG), (char *)&mschap_challenge, 8, &out_data[avp_offset], &avp_out_size); ++ build_avp(MS_CHAP_CHALLENGE, MS_VENDOR_ATTR, (MANDITORY_FLAG | VENDOR_FLAG), (uint8_t *) &mschap_challenge, 8, (uint8_t *) &out_data[avp_offset], &avp_out_size); + + avp_offset+=avp_out_size; + +@@ -313,7 +313,7 @@ + mschap_answer[1] = 1; // Use NT Style Passwords. + memcpy((char *)&mschap_answer[26], (char *)&mschap_result, 24); + +- build_avp(MS_CHAP_RESPONSE, MS_VENDOR_ATTR, (MANDITORY_FLAG | VENDOR_FLAG), (char *)&mschap_answer, 50, &out_data[avp_offset], &avp_out_size); ++ build_avp(MS_CHAP_RESPONSE, MS_VENDOR_ATTR, (MANDITORY_FLAG | VENDOR_FLAG), (uint8_t *) &mschap_answer, 50, (uint8_t *) &out_data[avp_offset], &avp_out_size); + avp_offset+=avp_out_size; + + *out_size = avp_offset; +@@ -386,12 +386,12 @@ + username = phase2data->username; + } + username_size = strlen(username); +- build_avp(USER_NAME_AVP, 0, MANDITORY_FLAG, username, username_size, out_data, &avp_out_size); ++ build_avp(USER_NAME_AVP, 0, MANDITORY_FLAG, (uint8_t *) username, username_size, (uint8_t *) out_data, &avp_out_size); + + avp_offset = avp_out_size; + + // Get the implicit challenge. +- challenge = implicit_challenge(thisint); ++ challenge = (u_char *) implicit_challenge(thisint); + if (challenge == NULL) + { + debug_printf(DEBUG_NORMAL, "Invalid implicit challenge in ttls_do_chap()!\n"); +@@ -409,9 +409,9 @@ + return; + } + +- user_passwd = phase2data->password; ++ user_passwd = (u_char *) phase2data->password; + +- tohash = (char *)malloc(1+16+strlen(user_passwd)); ++ tohash = (u_char *)malloc(1+16+strlen((char *) user_passwd)); + if (tohash == NULL) + { + debug_printf(DEBUG_NORMAL, "Error with malloc of \"tohash\" in ttls_do_chap().\n"); +@@ -419,13 +419,13 @@ + } + + tohash[0] = session_id; +- memcpy(&tohash[1], user_passwd, strlen(user_passwd)); +- memcpy(&tohash[1+strlen(user_passwd)], &chap_challenge, 16); +- hashlen = 1+strlen(user_passwd)+16; ++ memcpy(&tohash[1], user_passwd, strlen((char *) user_passwd)); ++ memcpy(&tohash[1+strlen((char *) user_passwd)], &chap_challenge, 16); ++ hashlen = 1+strlen((char *) user_passwd)+16; + + EVP_DigestInit(ctx, EVP_md5()); + EVP_DigestUpdate(ctx, tohash, hashlen); +- EVP_DigestFinal(ctx, (char *)&chap_hash[1], (int *)&md5_length); ++ EVP_DigestFinal(ctx, (u_char *)&chap_hash[1], (u_int *)&md5_length); + + if (md5_length != 16) // We didn't get back a valid hash! + { +@@ -433,11 +433,11 @@ + } + chap_hash[0]=session_id; + +- build_avp(CHAP_PASSWORD_AVP, 0, MANDITORY_FLAG, chap_hash, 17, &out_data[avp_offset], &avp_out_size); ++ build_avp(CHAP_PASSWORD_AVP, 0, MANDITORY_FLAG, chap_hash, 17, (uint8_t *) &out_data[avp_offset], &avp_out_size); + + avp_offset += avp_out_size; + +- build_avp(CHAP_CHALLENGE_AVP, 0, MANDITORY_FLAG, (char *)&chap_challenge, 16, &out_data[avp_offset], &avp_out_size); ++ build_avp(CHAP_CHALLENGE_AVP, 0, MANDITORY_FLAG, (uint8_t *) &chap_challenge, 16, (uint8_t *) &out_data[avp_offset], &avp_out_size); + + if (tohash != NULL) + { +@@ -518,8 +518,8 @@ + + avp_offset = 0; + +- build_avp(USER_NAME_AVP, 0, MANDITORY_FLAG, username, +- strlen(username), out_data, &avp_out_size); ++ build_avp(USER_NAME_AVP, 0, MANDITORY_FLAG, (uint8_t *) username, ++ strlen(username), (uint8_t *) out_data, &avp_out_size); + + avp_offset += avp_out_size; + +@@ -537,7 +537,7 @@ + bzero(tempbuf, passwd_size); + memcpy(tempbuf, phase2data->password, strlen(phase2data->password)); + +- build_avp(USER_PASSWORD_AVP, 0, MANDITORY_FLAG, tempbuf, passwd_size, &out_data[avp_offset], &avp_out_size); ++ build_avp(USER_PASSWORD_AVP, 0, MANDITORY_FLAG, (uint8_t *) tempbuf, passwd_size, (uint8_t *) &out_data[avp_offset], &avp_out_size); + + *out_size = avp_offset + avp_out_size; + +@@ -548,7 +548,7 @@ + } + + debug_printf(DEBUG_AUTHTYPES, "Returning from do_pap :\n"); +- debug_hex_dump(DEBUG_AUTHTYPES, out_data, *out_size); ++ debug_hex_dump(DEBUG_AUTHTYPES, (u_char *) out_data, *out_size); + } + + // We don't do anything with the "in" stuff for now.. +@@ -567,7 +567,7 @@ + } + + debug_printf(DEBUG_AUTHTYPES, "Encrypted Inner (%d) : \n", in_size); +- debug_hex_dump(DEBUG_AUTHTYPES, in, in_size); ++ debug_hex_dump(DEBUG_AUTHTYPES, (u_char *) in, in_size); + + userdata = (struct config_eap_ttls *)thisint->eap_conf_data; + +@@ -597,10 +597,10 @@ + if ((in_size > 0) && (in[0] != 0x14)) + { + // We have something to decrypt! +- tls_crypt_decrypt(thisint, in, in_size, decr_data, &decrsize); ++ tls_crypt_decrypt(thisint, (u_char *) in, in_size, (u_char *) decr_data, &decrsize); + + debug_printf(DEBUG_AUTHTYPES, "Decrypted Inner (%d) : \n", in_size); +- debug_hex_dump(DEBUG_AUTHTYPES, decr_data, decrsize); ++ debug_hex_dump(DEBUG_AUTHTYPES, (u_char *) decr_data, decrsize); + + if (decr_data[0] == 0x00) + { +@@ -638,11 +638,11 @@ + return XENONE; + } + +- tls_crypt_encrypt_nolen(thisint, toencout, toencsize, out, out_size); ++ tls_crypt_encrypt_nolen(thisint, (u_char *) toencout, toencsize, (u_char *) out, out_size); + free(toencout); + + debug_printf(DEBUG_AUTHTYPES, "Returning from (TTLS) do_phase2 : \n"); +- debug_hex_dump(DEBUG_AUTHTYPES, out, *out_size); ++ debug_hex_dump(DEBUG_AUTHTYPES, (u_char *) out, *out_size); + return XENONE; + } + +--- xsupplicant-1.2.1/src/eap_types/leap/eapleap.c.BAD 2005-09-03 17:22:01.000000000 -0500 ++++ xsupplicant-1.2.1/src/eap_types/leap/eapleap.c 2005-09-03 17:25:57.000000000 -0500 +@@ -50,7 +50,7 @@ + unicodePass[2 * i + 1] = 0; + } + /* Encrypt plain text password to a 16-byte MD4 hash */ +- md4_calc(MD4Hash, unicodePass, passLen * 2); ++ md4_calc(MD4Hash, (u_char *) unicodePass, passLen * 2); + } + + void leap_mschap(char * password, char * response) { +@@ -64,7 +64,7 @@ + + ntPwdHash(MD4Hash, password); + md4_calc(MD4HashHash, MD4Hash, 16); +- ChallengeResponse(leapchallenges->apc, MD4HashHash, response); ++ ChallengeResponse((char *) leapchallenges->apc, (char *) MD4HashHash, response); + } + + +@@ -199,7 +199,7 @@ + + // LEAP shouldn't be used as an inner type, so we should be able to get + // away with this. +- data = dataoffs-5; ++ data = (char *) dataoffs-5; + eapheader = (struct eap_header *)data; + + switch (eapheader->eap_code) { +@@ -279,7 +279,7 @@ + memset(chall_response, 0x0, 8); + NtChallengeResponse((char *)leaprequest->randval, userdata->password, (char *)&chall_response); + +- GenerateNTResponse((char *)leapchallenges->pr, (char *)leapchallenges->pc, username, userdata->password, chall_response); ++ GenerateNTResponse((char *)leapchallenges->pr, (char *)leapchallenges->pc, username, userdata->password, (char *) chall_response); + + // store Access Point Challenge + memcpy((uint8_t *)leapchallenges->apc, (char *)chall_response, 8); +@@ -337,7 +337,7 @@ + + leapresponse = (struct leap_responses *)dataoffs; + +- challenge_response_got = (char *)malloc(leapresponse->count+1); ++ challenge_response_got = (u_char *)malloc(leapresponse->count+1); + if (!challenge_response_got) { + debug_printf(DEBUG_NORMAL, "(EAP-LEAP) challenge_response_got is NULL after malloc!\n"); + } +@@ -350,7 +350,7 @@ + memset(challenge_response_expected, 0x0, 24); + + // Calculate the 24 bytes MS-CHAP Challenge Response +- leap_mschap(userdata->password, challenge_response_expected); ++ leap_mschap(userdata->password, (char *) challenge_response_expected); + + if (memcmp(challenge_response_got, challenge_response_expected, 24) == 0) { + debug_printf(DEBUG_AUTHTYPES, "(EAP-LEAP) AP ChallengeResponse got is valid.\n"); +@@ -386,7 +386,7 @@ + debug_printf(DEBUG_AUTHTYPES, "(EAP-LEAP) leapchallenges->apr : "); + debug_hex_printf(DEBUG_AUTHTYPES, (uint8_t *)leapchallenges->apr, 24); + +- GetMasterLEAPKey((char *)MD4HashHash, leapchallenges->apc, leapchallenges->apr, leapchallenges->pc, leapchallenges->pr, (char *)&MasterKey); ++ GetMasterLEAPKey((char *)MD4HashHash, (char *) leapchallenges->apc, (char *) leapchallenges->apr, (char *) leapchallenges->pc, (char *) leapchallenges->pr, (char *)&MasterKey); + debug_printf(DEBUG_AUTHTYPES, "MasterLEAPKey : "); + debug_hex_printf(DEBUG_AUTHTYPES, (unsigned char *)&MasterKey, 16); + +@@ -444,7 +444,7 @@ + mydata = (struct leap_data *)network_data->activemethod->eap_data; + + // Right now, we don't return anything from LEAP. +- thisint->keyingMaterial = mydata->keyingMaterial; ++ thisint->keyingMaterial = (u_char *) mydata->keyingMaterial; + thisint->keyingLength = 16; // We only use 16 bytes for this keying material! + + return 0; +--- xsupplicant-1.2.1/src/wpa_common.c.BAD 2005-09-03 08:42:16.000000000 -0500 ++++ xsupplicant-1.2.1/src/wpa_common.c 2005-09-03 08:42:30.000000000 -0500 +@@ -201,7 +201,7 @@ + // This is a little different than the reference implementation, + // because OpenSSL takes parameters in a different order. + HMAC(EVP_sha1(), key, key_len, input, total_len, &output[currentindex], +- &k); ++ (u_int *) &k); + currentindex += 20; + input[total_len-1]++; + } +--- xsupplicant-1.2.1/src/eapol_key_type1.c.BAD 2005-09-03 08:40:11.000000000 -0500 ++++ xsupplicant-1.2.1/src/eapol_key_type1.c 2005-09-03 08:41:54.000000000 -0500 +@@ -107,7 +107,7 @@ + if (calchmac == NULL) return XEMALLOC; + + HMAC(EVP_md5(), thisint->keyingMaterial+32, +- thisint->keyingLength, framecpy, framesize, calchmac, &outlen); ++ thisint->keyingLength, (u_char *) framecpy, framesize, (u_char *) calchmac, (u_int *) &outlen); + + // Now, we need to compare the calculated HMAC to the one sent to us. + keydata = (struct key_packet *)&inframe[4]; +--- xsupplicant-1.2.1/src/eapol.c.BAD 2005-09-03 08:30:37.000000000 -0500 ++++ xsupplicant-1.2.1/src/eapol.c 2005-09-03 08:30:45.000000000 -0500 +@@ -122,7 +122,7 @@ + // an EAP request that is valid. If we don't have any config informtion, + // we should just bail here, and not return an error. + +- inframe = (u_char *)&workint->recvframe; ++ inframe = (char *)&workint->recvframe; + + temp = (struct eapol_header *)&inframe[OFFSET_PAST_MAC]; + +--- xsupplicant-1.2.1/src/statemachine.c.BAD 2005-09-03 08:32:13.000000000 -0500 ++++ xsupplicant-1.2.1/src/statemachine.c 2005-09-03 08:33:13.000000000 -0500 +@@ -619,7 +619,7 @@ + } + } + +- eapol_build_header(EAPOL_LOGOFF, 0, eapolver, thisint->sendframe); ++ eapol_build_header(EAPOL_LOGOFF, 0, eapolver, (char *) thisint->sendframe); + thisint->send_size = OFFSET_TO_EAP; + + snmp_dot1xSuppEapolLogoffFramesTx(); +@@ -664,7 +664,7 @@ + } + + eapol_build_header(EAPOL_START, 0, network_data->force_eapol_ver, +- thisint->sendframe); ++ (char *) thisint->sendframe); + thisint->send_size = OFFSET_TO_EAP; + + snmp_dot1xSuppEapolStartFramesTx(); +--- xsupplicant-1.2.1/src/config_ssid.c.BAD 2005-09-03 08:30:08.000000000 -0500 ++++ xsupplicant-1.2.1/src/config_ssid.c 2005-09-03 08:30:24.000000000 -0500 +@@ -151,7 +151,7 @@ + + if (wpa_ie != NULL) + { +- cur->wpa_ie = (char *)malloc(wpa_ie_len); ++ cur->wpa_ie = (unsigned char *)malloc(wpa_ie_len); + if (cur->wpa_ie == NULL) + { + debug_printf(DEBUG_NORMAL, "Couldn't allocate memory for wpa_ie! " +@@ -168,7 +168,7 @@ + + if (rsn_ie != NULL) + { +- cur->rsn_ie = (char *)malloc(rsn_ie_len); ++ cur->rsn_ie = (unsigned char *)malloc(rsn_ie_len); + if (cur->rsn_ie == NULL) + { + debug_printf(DEBUG_NORMAL, "Couldn't allocate memory for rsn_ie! " +--- xsupplicant-1.2.1/src/xsup_ipc.c.BAD 2005-09-03 17:27:32.000000000 -0500 ++++ xsupplicant-1.2.1/src/xsup_ipc.c 2005-09-03 17:29:17.000000000 -0500 +@@ -144,7 +144,7 @@ + } + + debug_printf(DEBUG_INT, "(IPC) Sending : \n"); +- debug_hex_dump(DEBUG_INT, tosend, tolen); ++ debug_hex_dump(DEBUG_INT, (u_char *) tosend, tolen); + + err = send(skfd, tosend, tolen, 0); + if (err < 0) +@@ -194,7 +194,7 @@ + *outsize = 0; + } else { + debug_printf(DEBUG_INT, "(IPC) Got : \n"); +- debug_hex_dump(DEBUG_INT, outbuf, readStat); ++ debug_hex_dump(DEBUG_INT, (u_char *) outbuf, readStat); + // Verify that the packet we got is valid. + + *outsize = readStat; +@@ -355,7 +355,7 @@ + debug_printf(DEBUG_NORMAL, "Error getting working interface " + "dumping current packet: \n"); + +- debug_hex_dump(DEBUG_NORMAL, buffer, bufsize); ++ debug_hex_dump(DEBUG_NORMAL, (u_char *) buffer, bufsize); + + debug_printf(DEBUG_NORMAL, "Ignoring remaining parts of packet!\n"); + bufptr = bufsize+1; +@@ -419,7 +419,7 @@ + { + // We got a request for a new IPC client connection. + debug_printf(DEBUG_INT, "Got a request to connect a new client.\n"); +- newsock = accept(ipc_sock, (struct sockaddr *)&sa, &len); ++ newsock = accept(ipc_sock, (struct sockaddr *)&sa, (u_int *) &len); + if (newsock <= 0) + { + debug_printf(DEBUG_NORMAL, "Got a request for a new IPC client " +@@ -514,7 +514,7 @@ + ipc_callout_request_password(intidx, &bufptr, (char *)&packet[0], 512, + eapType, challenge); + debug_printf(DEBUG_AUTHTYPES, "Sending : \n"); +- debug_hex_dump(DEBUG_AUTHTYPES, packet, bufptr); ++ debug_hex_dump(DEBUG_AUTHTYPES, (u_char *) packet, bufptr); + + xsup_ipc_send_all((char *)&packet, bufptr); + +--- xsupplicant-1.2.1/src/eapol_key_type254.c.BAD 2005-09-03 09:05:02.000000000 -0500 ++++ xsupplicant-1.2.1/src/eapol_key_type254.c 2005-09-03 09:21:09.000000000 -0500 +@@ -192,12 +192,12 @@ + } + + debug_printf(DEBUG_INT, "PMK : "); +- debug_hex_printf(DEBUG_INT, intdata->statemachine->PMK, 32); +- wpa_PRF(intdata->statemachine->PMK, 32, "Pairwise key expansion", 22, +- (char *)&prfdata, 76, retval, 64); ++ debug_hex_printf(DEBUG_INT, (u_char *) intdata->statemachine->PMK, 32); ++ wpa_PRF((u_char *) intdata->statemachine->PMK, 32, (u_char *) "Pairwise key expansion", 22, ++ (u_char *)&prfdata, 76, (u_char *) retval, 64); + + debug_printf(DEBUG_INT, "PTK : "); +- debug_hex_printf(DEBUG_INT, retval, 64); ++ debug_hex_printf(DEBUG_INT, (u_char *) retval, 64); + + return retval; + } +@@ -264,10 +264,10 @@ + eapolver = snmp_get_dot1xSuppLastEapolFrameVersion(); + + eapol_build_header(EAPOL_KEY, (intdata->send_size-OFFSET_TO_EAPOL-4), +- eapolver, intdata->sendframe); ++ eapolver, (char *) intdata->sendframe); + + memcpy(key, intdata->statemachine->PTK, 16); +- mic_wpa_populate(intdata->sendframe, intdata->send_size+4, key, 16); ++ mic_wpa_populate((char *) intdata->sendframe, intdata->send_size+4, key, 16); + + cardif_sendframe(intdata); + intdata->statemachine->eapolEap = FALSE; +@@ -351,21 +351,21 @@ + bzero(rc4_ek, 32); + memcpy(rc4_ek, inkeydata->key_iv, 16); + memcpy(&rc4_ek[16], &intdata->statemachine->PTK[16], 16); +- rc4_skip(rc4_ek, 32, 256, keydata, value16); ++ rc4_skip((u_char *) rc4_ek, 32, 256, keydata, value16); + + wpa_common_swap_rx_tx_mic(keydata); +- cardif_set_tkip_key(intdata, allfs, keyindex, FALSE, inkeydata->key_rsc, +- 6, keydata, value16); ++ cardif_set_tkip_key(intdata, (char *) allfs, keyindex, FALSE, (char *) inkeydata->key_rsc, ++ 6, (char *) keydata, value16); + break; + + case 2: + // First, decrypt the GTK + bzero(key, 16); +- aes_unwrap(&intdata->statemachine->PTK[16], (value16-8)/8, keydata, +- key); ++ aes_unwrap((u_char *) &intdata->statemachine->PTK[16], (value16-8)/8, keydata, ++ (u_char *) key); + + wpa_common_swap_rx_tx_mic(keydata); +- cardif_set_ccmp_key(intdata, NULL, keyindex, FALSE, inkeydata->key_rsc, ++ cardif_set_ccmp_key(intdata, NULL, keyindex, FALSE, (char *) inkeydata->key_rsc, + 6, key, (value16-8)); + break; + } +@@ -391,13 +391,13 @@ + eapolver = snmp_get_dot1xSuppLastEapolFrameVersion(); + + eapol_build_header(EAPOL_KEY, (intdata->send_size-OFFSET_TO_EAPOL-4), +- eapolver, intdata->sendframe); ++ eapolver, (char *) intdata->sendframe); + + memcpy(key, intdata->statemachine->PTK, 16); +- mic_wpa_populate(intdata->sendframe, intdata->send_size+4, key, 16); ++ mic_wpa_populate((char *) intdata->sendframe, intdata->send_size+4, key, 16); + + // Dump what we built. +- eapol_key_type254_dump(intdata->sendframe); ++ eapol_key_type254_dump((char *) intdata->sendframe); + + if (network_data->methods->method_num == WPA_PSK) + { +@@ -504,13 +504,13 @@ + eapolver = snmp_get_dot1xSuppLastEapolFrameVersion(); + + eapol_build_header(EAPOL_KEY, (intdata->send_size-OFFSET_TO_EAPOL-4), +- eapolver, intdata->sendframe); ++ eapolver, (char *) intdata->sendframe); + + memcpy(key, intdata->statemachine->PTK, 16); +- mic_wpa_populate(intdata->sendframe, intdata->send_size+4, key, 16); ++ mic_wpa_populate((char *) intdata->sendframe, intdata->send_size+4, key, 16); + + // Dump what we built. +- eapol_key_type254_dump(intdata->sendframe); ++ eapol_key_type254_dump((char *) intdata->sendframe); + } + + /******************************************************** +@@ -586,20 +586,20 @@ + eapolver = snmp_get_dot1xSuppLastEapolFrameVersion(); + + eapol_build_header(EAPOL_KEY, (intdata->send_size-OFFSET_TO_EAPOL-4), +- eapolver, intdata->sendframe); ++ eapolver, (char *) intdata->sendframe); + + memcpy(key, intdata->statemachine->PTK, 16); +- mic_wpa_populate(intdata->sendframe, intdata->send_size+4, key, 16); ++ mic_wpa_populate((char *) intdata->sendframe, intdata->send_size+4, key, 16); + + // Dump what we built. +- eapol_key_type254_dump(intdata->sendframe); ++ eapol_key_type254_dump((char *) intdata->sendframe); + + // Get TK1 + value16 = ntohs(inkeydata->key_length); + memcpy(key, (char *)&intdata->statemachine->PTK[32], value16); + + debug_printf(DEBUG_INT, "TK1 : "); +- debug_hex_printf(DEBUG_INT, key, value16); ++ debug_hex_printf(DEBUG_INT, (u_char *) key, value16); + + cardif_sendframe(intdata); + intdata->statemachine->eapolEap = FALSE; +@@ -612,14 +612,14 @@ + case 1: + // We need to swap the TX/RX MIC values since we are the supplicant. + // (Thanks to Jouni Malinen for pointing this out!) +- wpa_common_swap_rx_tx_mic(key); ++ wpa_common_swap_rx_tx_mic((u_char *) key); + cardif_set_tkip_key(intdata, intdata->dest_mac, keyindex, TRUE, +- inkeydata->key_rsc, 6, key, value16); ++ (char *) inkeydata->key_rsc, 6, key, value16); + break; + + case 2: + cardif_set_ccmp_key(intdata, intdata->dest_mac, keyindex, TRUE, +- inkeydata->key_rsc, 6, key, value16); ++ (char *) inkeydata->key_rsc, 6, key, value16); + break; + } + } +@@ -646,7 +646,7 @@ + + if (keyflags & WPA_KEY_MIC_FLAG) + { +- if (mic_wpa_validate(intdata->recvframe, intdata->recv_size, ++ if (mic_wpa_validate((char *) intdata->recvframe, intdata->recv_size, + intdata->statemachine->PTK, 16) == FALSE) + { + intdata->statemachine->MICVerified = TRUE; +@@ -688,7 +688,7 @@ + eapolver = snmp_get_dot1xSuppLastEapolFrameVersion(); + + eapol_build_header(EAPOL_KEY, (intdata->recv_size-OFFSET_TO_EAPOL-4), +- eapolver, intdata->recvframe); ++ eapolver, (char *) intdata->recvframe); + cardif_sendframe(intdata); + intdata->statemachine->eapolEap = FALSE; + } +@@ -757,8 +757,8 @@ + } + + // We have an ASCII password, so calculate it. +- if (psk_wpa_pbkdf2(psk->key, intdata->cur_essid, +- strlen(intdata->cur_essid), (char *)&tpmk) ++ if (psk_wpa_pbkdf2(psk->key, (u_char *) intdata->cur_essid, ++ strlen(intdata->cur_essid), (u_char *)&tpmk) + == TRUE) + { + intdata->statemachine->PMK = (char *)malloc(32); +@@ -798,7 +798,7 @@ + } + } + +- eapol_key_type254_dump(inframe); ++ eapol_key_type254_dump((char *) inframe); + + eapol_key_type254_determine_key(intdata); + +--- xsupplicant-1.2.1/src/config_grammar.y.BAD 2005-09-03 17:31:51.000000000 -0500 ++++ xsupplicant-1.2.1/src/config_grammar.y 2005-09-03 17:34:56.000000000 -0500 +@@ -829,8 +829,9 @@ + } + else { + int tmp_dst_mac[CONFIG_MAC_LEN]; ++ int retval; + SET_FLAG(tmp_network->flags, CONFIG_NET_DEST_MAC); +- sscanf($3, "%2x:%2x:%2x:%2x:%2x:%2x", ++ retval = sscanf($3, "%2x:%2x:%2x:%2x:%2x:%2x", + &tmp_dst_mac[0], + &tmp_dst_mac[1], + &tmp_dst_mac[2], +@@ -1035,25 +1036,25 @@ + set_current_static_wep(); + parameter_debug("Static Key 1 : %s\n", $3); + if (!tmp_static_wep->key[1]) +- tmp_static_wep->key[1] = $3; ++ tmp_static_wep->key[1] = (u_char *) $3; + } + | TK_STATIC_KEY2 '=' TK_QUOTED_STR { + set_current_static_wep(); + parameter_debug("Static Key 2 : %s\n", $3); + if (!tmp_static_wep->key[2]) +- tmp_static_wep->key[2] = $3; ++ tmp_static_wep->key[2] = (u_char *) $3; + } + | TK_STATIC_KEY3 '=' TK_QUOTED_STR { + set_current_static_wep(); + parameter_debug("Static Key 3 : %s\n", $3); + if (!tmp_static_wep->key[3]) +- tmp_static_wep->key[3] = $3; ++ tmp_static_wep->key[3] = (u_char *) $3; + } + | TK_STATIC_KEY4 '=' TK_QUOTED_STR { + set_current_static_wep(); + parameter_debug("Static Key 4 : %s\n", $3); + if (!tmp_static_wep->key[4]) +- tmp_static_wep->key[4] = $3; ++ tmp_static_wep->key[4] = (u_char *) $3; + } + | TK_WEP_TX_KEY '=' TK_NUMBER { + set_current_static_wep(); diff --git a/xsupplicant-1.2.2-buf.patch b/xsupplicant-1.2.2-buf.patch new file mode 100644 index 0000000..65d3727 --- /dev/null +++ b/xsupplicant-1.2.2-buf.patch @@ -0,0 +1,13 @@ +--- xsupplicant-1.2.2/src/cardif/linux/cardif_linux.c.buf 2006-01-03 08:38:37.000000000 +0100 ++++ xsupplicant-1.2.2/src/cardif/linux/cardif_linux.c 2006-01-03 08:40:18.000000000 +0100 +@@ -806,7 +806,9 @@ + sockData = thisint->sockData; + + errno = 0; +- resultsize = 1550; ++ resultsize = 1520; /* was 1550 but this can cause a bufoverflow, upstream ++ has changed this to 1520 in CVS, so we fix this ++ the same way */ + + newsize = recvfrom(sockData->sockInt, resultframe, resultsize, 0, 0, 0); + if (newsize <= 0) diff --git a/xsupplicant-1.2.2-compilefix.patch b/xsupplicant-1.2.2-compilefix.patch new file mode 100644 index 0000000..fcf5db8 --- /dev/null +++ b/xsupplicant-1.2.2-compilefix.patch @@ -0,0 +1,21 @@ +--- xsupplicant-1.2.2/configure.in.BAD 2005-11-15 09:26:02.000000000 -0600 ++++ xsupplicant-1.2.2/configure.in 2005-11-15 09:27:02.000000000 -0600 +@@ -104,7 +105,8 @@ + *linux*) + AC_MSG_RESULT(linux) + AC_DEFINE(LINUX_FRAMER) + MORELIBS="${MORELIBS} -lm" ++ MOREDEFS="${MOREDEFS} -DHEADERS_KERNEL" + FRAMER="linux" + ;; + *freebsd*) +--- xsupplicant-1.2.2/src/psk.c.BAD 2005-11-15 11:52:29.000000000 -0600 ++++ xsupplicant-1.2.2/src/psk.c 2005-11-15 11:52:50.000000000 -0600 +@@ -24,6 +24,7 @@ + + #include + #include ++#include + #include + #include + diff --git a/xsupplicant-1.2.2-docsfix.patch b/xsupplicant-1.2.2-docsfix.patch new file mode 100644 index 0000000..e51c16a --- /dev/null +++ b/xsupplicant-1.2.2-docsfix.patch @@ -0,0 +1,10 @@ +--- xsupplicant-1.2.2/doc/xml-userguide/userguide.xml.BAD 2005-09-04 10:28:44.000000000 -0500 ++++ xsupplicant-1.2.2/doc/xml-userguide/userguide.xml 2005-09-04 10:28:53.000000000 -0500 +@@ -1,6 +1,6 @@ + + + diff --git a/xsupplicant-1.2.3-fixincludes.patch b/xsupplicant-1.2.3-fixincludes.patch new file mode 100644 index 0000000..b378be5 --- /dev/null +++ b/xsupplicant-1.2.3-fixincludes.patch @@ -0,0 +1,55 @@ +--- xsupplicant-1.2.3/src/cardif/linux/cardif_linux_wext.c.BAD 2006-02-28 19:52:32.000000000 -0600 ++++ xsupplicant-1.2.3/src/cardif/linux/cardif_linux_wext.c 2006-02-28 19:52:40.000000000 -0600 +@@ -91,7 +91,7 @@ + #include + #include + #include +-#include ++#include "v19wireless.h" + #include + #include + #include +--- xsupplicant-1.2.3/src/cardif/linux/cardif_linux.c.BAD 2006-02-28 19:52:16.000000000 -0600 ++++ xsupplicant-1.2.3/src/cardif/linux/cardif_linux.c 2006-02-28 19:52:26.000000000 -0600 +@@ -102,7 +102,7 @@ + #include + #include + #include +-#include ++#include "v19wireless.h" + #include + #include + #include +--- xsupplicant-1.2.3/src/cardif/linux/cardif_atmel_driver.c.BAD 2006-02-28 19:51:18.000000000 -0600 ++++ xsupplicant-1.2.3/src/cardif/linux/cardif_atmel_driver.c 2006-02-28 19:51:32.000000000 -0600 +@@ -74,7 +74,7 @@ + #include + #include + #include +-#include ++#include "v19wireless.h" + #include + #include + #include +--- xsupplicant-1.2.3/src/cardif/linux/cardif_linux_rtnetlink.c.BAD 2006-02-28 19:52:54.000000000 -0600 ++++ xsupplicant-1.2.3/src/cardif/linux/cardif_linux_rtnetlink.c 2006-02-28 19:53:03.000000000 -0600 +@@ -119,7 +119,7 @@ + #include + #include + #include +-#include ++#include "v19wireless.h" + #include + #include + #include +--- xsupplicant-1.2.3/src/cardif/linux/cardif_madwifi_driver.c.BAD 2006-02-28 19:52:01.000000000 -0600 ++++ xsupplicant-1.2.3/src/cardif/linux/cardif_madwifi_driver.c 2006-02-28 19:52:08.000000000 -0600 +@@ -81,7 +81,7 @@ + #include + #include + #include +-#include ++#include "v19wireless.h" + #include + #include + #include diff --git a/xsupplicant-1.2.6-fixincludes.patch b/xsupplicant-1.2.6-fixincludes.patch new file mode 100644 index 0000000..471d370 --- /dev/null +++ b/xsupplicant-1.2.6-fixincludes.patch @@ -0,0 +1,44 @@ +--- xsupplicant-1.2.3/src/cardif/linux/cardif_linux_wext.c.BAD 2006-02-28 19:52:32.000000000 -0600 ++++ xsupplicant-1.2.3/src/cardif/linux/cardif_linux_wext.c 2006-02-28 19:52:40.000000000 -0600 +@@ -91,7 +91,7 @@ + #include + #include + #include +-#include ++#include "v19wireless.h" + #include + #include + #include +--- xsupplicant-1.2.3/src/cardif/linux/cardif_linux.c.BAD 2006-02-28 19:52:16.000000000 -0600 ++++ xsupplicant-1.2.3/src/cardif/linux/cardif_linux.c 2006-02-28 19:52:26.000000000 -0600 +@@ -102,7 +102,7 @@ + #include + #include + #include +-#include ++#include "v19wireless.h" + #include + #include + #include +--- xsupplicant-1.2.3/src/cardif/linux/cardif_atmel_driver.c.BAD 2006-02-28 19:51:18.000000000 -0600 ++++ xsupplicant-1.2.3/src/cardif/linux/cardif_atmel_driver.c 2006-02-28 19:51:32.000000000 -0600 +@@ -74,7 +74,7 @@ + #include + #include + #include +-#include ++#include "v19wireless.h" + #include + #include + #include +--- xsupplicant-1.2.3/src/cardif/linux/cardif_linux_rtnetlink.c.BAD 2006-02-28 19:52:54.000000000 -0600 ++++ xsupplicant-1.2.3/src/cardif/linux/cardif_linux_rtnetlink.c 2006-02-28 19:53:03.000000000 -0600 +@@ -119,7 +119,7 @@ + #include + #include + #include +-#include ++#include "v19wireless.h" + #include + #include + #include diff --git a/xsupplicant-1.2.6-nocompilerh-systemheaders.patch b/xsupplicant-1.2.6-nocompilerh-systemheaders.patch new file mode 100644 index 0000000..3332e15 --- /dev/null +++ b/xsupplicant-1.2.6-nocompilerh-systemheaders.patch @@ -0,0 +1,40 @@ +--- xsupplicant-1.2.6/src/cardif/linux/cardif_linux_wext.c.BAD 2006-07-07 11:13:16.000000000 -0500 ++++ xsupplicant-1.2.6/src/cardif/linux/cardif_linux_wext.c 2006-07-07 11:13:20.000000000 -0500 +@@ -169,7 +169,6 @@ + #include + #include + #include +-#include + #include + #include + #include +--- xsupplicant-1.2.6/src/cardif/linux/cardif_linux.c.BAD 2006-07-07 11:12:09.000000000 -0500 ++++ xsupplicant-1.2.6/src/cardif/linux/cardif_linux.c 2006-07-07 11:12:20.000000000 -0500 +@@ -153,7 +153,6 @@ + #include + #include + #include +-#include + #include + #include + #include +--- xsupplicant-1.2.6/src/cardif/linux/cardif_atmel_driver.c.BAD 2006-07-07 11:12:56.000000000 -0500 ++++ xsupplicant-1.2.6/src/cardif/linux/cardif_atmel_driver.c 2006-07-07 11:13:01.000000000 -0500 +@@ -88,7 +88,6 @@ + #include + #include + #include +-#include + #include + #include + #include +--- xsupplicant-1.2.6/src/cardif/linux/cardif_linux_rtnetlink.c.BAD 2006-07-07 11:12:39.000000000 -0500 ++++ xsupplicant-1.2.6/src/cardif/linux/cardif_linux_rtnetlink.c 2006-07-07 11:12:44.000000000 -0500 +@@ -167,7 +167,6 @@ + + #include + #include +-#include + #include + #include + #include diff --git a/xsupplicant-1.2.7-ducttapefixes.patch b/xsupplicant-1.2.7-ducttapefixes.patch new file mode 100644 index 0000000..aa3dcfd --- /dev/null +++ b/xsupplicant-1.2.7-ducttapefixes.patch @@ -0,0 +1,22 @@ +--- xsupplicant-1.2.7/src/cardif/cardif.h.BAD 2006-09-04 00:39:00.000000000 -0500 ++++ xsupplicant-1.2.7/src/cardif/cardif.h 2006-09-04 00:39:36.000000000 -0500 +@@ -58,7 +58,7 @@ + #define DOES_TKIP 0x00000010 + #define DOES_CCMP 0x00000020 + +-#ifndef IF_OPER_DORMANT ++#if ! defined IF_OPER_DORMANT && ! defined _LINUX_IF_H + /* RFC 2863 operational status */ + enum { + IF_OPER_UNKNOWN, +--- xsupplicant-1.2.7/src/cardif/linux/wireless_copy.h.BAD 2006-09-04 00:42:58.000000000 -0500 ++++ xsupplicant-1.2.7/src/cardif/linux/wireless_copy.h 2006-09-04 00:43:08.000000000 -0500 +@@ -642,7 +642,7 @@ + */ + struct iw_point + { +- void __user *pointer; /* Pointer to the data (in user space) */ ++ void *pointer; /* Pointer to the data (in user space) */ + __u16 length; /* number of fields or size in bytes */ + __u16 flags; /* Optional params */ + }; diff --git a/xsupplicant-1.2.7-nocompilerh-systemheaders.patch b/xsupplicant-1.2.7-nocompilerh-systemheaders.patch new file mode 100644 index 0000000..4d2264e --- /dev/null +++ b/xsupplicant-1.2.7-nocompilerh-systemheaders.patch @@ -0,0 +1,40 @@ +--- xsupplicant-1.2.7/src/cardif/linux/cardif_linux.c.orig 2006-08-27 23:31:54.000000000 -0500 ++++ xsupplicant-1.2.7/src/cardif/linux/cardif_linux.c 2006-09-04 00:35:33.000000000 -0500 +@@ -171,7 +171,6 @@ + #include + #include + #include +-#include + #include + #include + #include +--- xsupplicant-1.2.7/src/cardif/linux/cardif_atmel_driver.c.orig 2006-08-28 10:59:31.000000000 -0500 ++++ xsupplicant-1.2.7/src/cardif/linux/cardif_atmel_driver.c 2006-09-04 00:35:57.000000000 -0500 +@@ -100,7 +100,6 @@ + #include + #include + #include +-#include + #include + #include + #include +--- xsupplicant-1.2.7/src/cardif/linux/cardif_linux_wext.c.orig 2006-08-27 23:31:54.000000000 -0500 ++++ xsupplicant-1.2.7/src/cardif/linux/cardif_linux_wext.c 2006-09-04 00:35:11.000000000 -0500 +@@ -184,7 +184,6 @@ + #include + #include + #include +-#include + #include "wireless_copy.h" + #include + #include +--- xsupplicant-1.2.7/src/cardif/linux/cardif_linux_rtnetlink.c.orig 2006-08-28 10:59:31.000000000 -0500 ++++ xsupplicant-1.2.7/src/cardif/linux/cardif_linux_rtnetlink.c 2006-09-04 00:36:15.000000000 -0500 +@@ -191,7 +191,6 @@ + + #include + #include +-#include + #include + #include + #include "netlink.h" diff --git a/xsupplicant-1.2.8-iwlibfix.patch b/xsupplicant-1.2.8-iwlibfix.patch new file mode 100644 index 0000000..0bb244c --- /dev/null +++ b/xsupplicant-1.2.8-iwlibfix.patch @@ -0,0 +1,73 @@ +diff -up xsupplicant-1.2.8/configure.iwlib xsupplicant-1.2.8/configure +--- xsupplicant-1.2.8/configure.iwlib 2008-07-08 16:27:02.000000000 -0400 ++++ xsupplicant-1.2.8/configure 2008-07-08 16:27:02.000000000 -0400 +@@ -4759,7 +4759,7 @@ cat >>conftest.$ac_ext <<_ACEOF + #ifndef __user + #define __user + #endif +- #include ++ /* #include */ + + #include <$ac_header> + _ACEOF +@@ -4823,7 +4823,7 @@ cat >>conftest.$ac_ext <<_ACEOF + #ifndef __user + #define __user + #endif +- #include ++ /* #include */ + #include + int + main () +diff -up xsupplicant-1.2.8/src/cardif/linux/cardif_atmel_driver.c.iwlib xsupplicant-1.2.8/src/cardif/linux/cardif_atmel_driver.c +--- xsupplicant-1.2.8/src/cardif/linux/cardif_atmel_driver.c.iwlib 2008-07-08 16:27:02.000000000 -0400 ++++ xsupplicant-1.2.8/src/cardif/linux/cardif_atmel_driver.c 2008-07-08 16:27:02.000000000 -0400 +@@ -109,7 +109,7 @@ + #include + #include + #include +-#include ++// #include + + #ifdef USE_EFENCE + #include +diff -up xsupplicant-1.2.8/src/cardif/linux/cardif_linux.c.iwlib xsupplicant-1.2.8/src/cardif/linux/cardif_linux.c +--- xsupplicant-1.2.8/src/cardif/linux/cardif_linux.c.iwlib 2008-07-08 16:27:02.000000000 -0400 ++++ xsupplicant-1.2.8/src/cardif/linux/cardif_linux.c 2008-07-08 16:27:02.000000000 -0400 +@@ -180,7 +180,7 @@ + #include + #include + #include +-#include ++// #include + + #include "xsupconfig.h" + #include "profile.h" +diff -up xsupplicant-1.2.8/src/cardif/linux/cardif_linux_rtnetlink.c.iwlib xsupplicant-1.2.8/src/cardif/linux/cardif_linux_rtnetlink.c +--- xsupplicant-1.2.8/src/cardif/linux/cardif_linux_rtnetlink.c.iwlib 2008-07-08 16:27:02.000000000 -0400 ++++ xsupplicant-1.2.8/src/cardif/linux/cardif_linux_rtnetlink.c 2008-07-08 16:28:05.000000000 -0400 +@@ -207,10 +207,10 @@ + #include + #include "netlink.h" + #include "rtnetlink.h" +-#include ++// #include + #include + #include +-#include ++// #include + + #include "profile.h" + #include "xsupconfig.h" +diff -up xsupplicant-1.2.8/src/cardif/linux/cardif_linux_wext.c.iwlib xsupplicant-1.2.8/src/cardif/linux/cardif_linux_wext.c +--- xsupplicant-1.2.8/src/cardif/linux/cardif_linux_wext.c.iwlib 2008-07-08 16:27:02.000000000 -0400 ++++ xsupplicant-1.2.8/src/cardif/linux/cardif_linux_wext.c 2008-07-08 16:27:02.000000000 -0400 +@@ -203,7 +203,7 @@ + #include + #include + #include +-#include ++// #include + #include + #include + #include diff --git a/xsupplicant-1.2.8-nocompilerh-systemheaders.patch b/xsupplicant-1.2.8-nocompilerh-systemheaders.patch new file mode 100644 index 0000000..bd5215e --- /dev/null +++ b/xsupplicant-1.2.8-nocompilerh-systemheaders.patch @@ -0,0 +1,48 @@ +diff -ur xsupplicant-1.2.8/src/cardif/linux/cardif_atmel_driver.c xsupplicant-1.2.8.sal/src/cardif/linux/cardif_atmel_driver.c +--- xsupplicant-1.2.8/src/cardif/linux/cardif_atmel_driver.c 2006-10-08 05:42:53.000000000 +0200 ++++ xsupplicant-1.2.8.sal/src/cardif/linux/cardif_atmel_driver.c 2006-11-21 10:11:17.000000000 +0100 +@@ -103,7 +103,6 @@ + #include + #include + #include +-#include + #include + #include + #include +Only in xsupplicant-1.2.8.sal/src/cardif/linux: cardif_atmel_driver.c~ +diff -ur xsupplicant-1.2.8/src/cardif/linux/cardif_linux.c xsupplicant-1.2.8.sal/src/cardif/linux/cardif_linux.c +--- xsupplicant-1.2.8/src/cardif/linux/cardif_linux.c 2006-10-08 05:42:53.000000000 +0200 ++++ xsupplicant-1.2.8.sal/src/cardif/linux/cardif_linux.c 2006-11-21 10:11:08.000000000 +0100 +@@ -174,7 +174,6 @@ + #include + #include + #include +-#include + #include + #include + #include +Only in xsupplicant-1.2.8.sal/src/cardif/linux: cardif_linux.c~ +diff -ur xsupplicant-1.2.8/src/cardif/linux/cardif_linux_rtnetlink.c xsupplicant-1.2.8.sal/src/cardif/linux/cardif_linux_rtnetlink.c +--- xsupplicant-1.2.8/src/cardif/linux/cardif_linux_rtnetlink.c 2006-10-08 05:42:53.000000000 +0200 ++++ xsupplicant-1.2.8.sal/src/cardif/linux/cardif_linux_rtnetlink.c 2006-11-21 10:11:37.000000000 +0100 +@@ -203,7 +203,6 @@ + + #include + #include +-#include + #include + #include + #include "netlink.h" +Only in xsupplicant-1.2.8.sal/src/cardif/linux: cardif_linux_rtnetlink.c~ +diff -ur xsupplicant-1.2.8/src/cardif/linux/cardif_linux_wext.c xsupplicant-1.2.8.sal/src/cardif/linux/cardif_linux_wext.c +--- xsupplicant-1.2.8/src/cardif/linux/cardif_linux_wext.c 2006-10-08 05:42:53.000000000 +0200 ++++ xsupplicant-1.2.8.sal/src/cardif/linux/cardif_linux_wext.c 2006-11-21 10:11:28.000000000 +0100 +@@ -203,7 +203,6 @@ + #include + #include + #include +-#include + #include + #include + #include +Only in xsupplicant-1.2.8.sal/src/cardif/linux: cardif_linux_wext.c~ diff --git a/xsupplicant-2.1.8-ui-Fedora.patch b/xsupplicant-2.1.8-ui-Fedora.patch new file mode 100644 index 0000000..dd7639d --- /dev/null +++ b/xsupplicant-2.1.8-ui-Fedora.patch @@ -0,0 +1,12 @@ +diff -up XSupplicant-2.1.8-src/xsupplicant-ui/xsupptray/FormLoader.cpp.Fedora XSupplicant-2.1.8-src/xsupplicant-ui/xsupptray/FormLoader.cpp +--- XSupplicant-2.1.8-src/xsupplicant-ui/xsupptray/FormLoader.cpp.Fedora 2009-04-22 01:13:04.000000000 -0400 ++++ XSupplicant-2.1.8-src/xsupplicant-ui/xsupptray/FormLoader.cpp 2009-09-02 12:40:38.329916230 -0400 +@@ -82,7 +82,7 @@ QString FormLoader::skinpath() + #ifdef __APPLE__ + return QString("/Library/Application Support/XSupplicant") + QString("/Skins/Default/"); + #else +- return QApplication::applicationDirPath() + QString("/Skins/Default/"); ++ return QString("/usr/share/xsupplicant/Skins/Default/"); + #endif // __APPLE__ + } + diff --git a/xsupplicant-2.1.9-force-release.patch b/xsupplicant-2.1.9-force-release.patch new file mode 100644 index 0000000..c8b0f33 --- /dev/null +++ b/xsupplicant-2.1.9-force-release.patch @@ -0,0 +1,35 @@ +diff -up xsupplicant-src-2.1.9.709/xsupplicant-ui/xsupptray/XSupplicantUI-unix.pro.BAD xsupplicant-src-2.1.9.709/xsupplicant-ui/xsupptray/XSupplicantUI-unix.pro +--- xsupplicant-src-2.1.9.709/xsupplicant-ui/xsupptray/XSupplicantUI-unix.pro.BAD 2010-01-13 11:50:15.939273096 -0500 ++++ xsupplicant-src-2.1.9.709/xsupplicant-ui/xsupptray/XSupplicantUI-unix.pro 2010-01-13 11:50:53.312370639 -0500 +@@ -5,9 +5,9 @@ + + TEMPLATE = app + TARGET = XSupplicantUI +-DESTDIR = ../build-debug ++DESTDIR = ../build-release + QT += xml +-CONFIG += debug ++CONFIG += release + INCLUDEPATH += ./../../xsupplicant/src/eap_types/tnc \ + ./../../xsupplicant/lib \ + ./../../xsupplicant/lib/libsupdetect \ +@@ -18,7 +18,7 @@ INCLUDEPATH += ./../../xsupplicant/src/e + /usr/include/libxml2 \ + /usr/local/include \ + . \ +- ./debug \ ++ ./release \ + ./GeneratedFiles + LIBS += -L"./../../xsupplicant/lib/libsupdetect" \ + -L"./../../xsupplicant/lib/libxsupconfig" \ +@@ -36,8 +36,8 @@ LIBS += -L"./../../xsupplicant/lib/libsu + -lxsupconfcheck \ + -lsupdetect + DEPENDPATH += . +-MOC_DIR += debug +-OBJECTS_DIR += debug ++MOC_DIR += release ++OBJECTS_DIR += release + UI_DIR += ./GeneratedFiles + RCC_DIR += ./release + diff --git a/xsupplicant-2.2.0-fix-tmp-naming.patch b/xsupplicant-2.2.0-fix-tmp-naming.patch new file mode 100644 index 0000000..ceced59 --- /dev/null +++ b/xsupplicant-2.2.0-fix-tmp-naming.patch @@ -0,0 +1,108 @@ +diff -up XSupplicant-2.2.0-src/xsupplicant/lib/libxsupgui/xsupgui_ud.c.fix-tmp-naming XSupplicant-2.2.0-src/xsupplicant/lib/libxsupgui/xsupgui_ud.c +--- XSupplicant-2.2.0-src/xsupplicant/lib/libxsupgui/xsupgui_ud.c.fix-tmp-naming 2015-10-30 11:47:26.114239089 -0400 ++++ XSupplicant-2.2.0-src/xsupplicant/lib/libxsupgui/xsupgui_ud.c 2015-10-30 11:52:12.336377183 -0400 +@@ -34,8 +34,8 @@ + #include + #endif + +-#define XSUP_SOCKET "/tmp/xsupplicant.sock" +-#define XSUP_CTRL_SOCK "/tmp/xsupplicant_control.sock" ++#define XSUP_SOCKET "/tmp/xsupplicant.sock-XXXXXX" ++#define XSUP_CTRL_SOCK "/tmp/xsupplicant_control.sock-XXXXXX" + + #define DEBUG 0 + +@@ -54,7 +54,7 @@ xmlDocPtr xmlrecvmsg = NULL; ///< XML Do + **/ + int xsupgui_ud_connect() + { +- int sockErr; ++ int sockErr, tfd; + struct sockaddr_un sa; + + ipc_sock = socket(PF_UNIX, SOCK_STREAM, 0); +@@ -68,6 +68,12 @@ int xsupgui_ud_connect() + memset(&sa, 0x00, sizeof(sa)); + Strncpy(sa.sun_path, sizeof(sa.sun_path), XSUP_CTRL_SOCK, + sizeof(sa.sun_path)); ++ tfd = mkstemp(sa.sun_path); ++ if (tfd < 0) { ++ printf ("%s: cannot generate temp file name\n", __FUNCTION__); ++ return -1; ++ } ++ close(tfd); + + sa.sun_family = AF_LOCAL; + +@@ -96,6 +102,7 @@ int xsupgui_ud_connect() + int xsupgui_ud_connect_event_listener() + { + int sockErr = 0; ++ int tfd; + struct sockaddr_un sa; + + ipc_event_sock = socket(PF_UNIX, SOCK_STREAM, 0); +@@ -109,6 +116,12 @@ int xsupgui_ud_connect_event_listener() + memset(&sa, 0x00, sizeof(sa)); + Strncpy(sa.sun_path, sizeof(sa.sun_path), XSUP_SOCKET, + sizeof(sa.sun_path)); ++ tfd = mkstemp(sa.sun_path); ++ if (tfd < 0) { ++ printf ("%s: cannot generate temp file name\n", __FUNCTION__); ++ return -1; ++ } ++ close(tfd); + + sa.sun_family = AF_LOCAL; + +diff -up XSupplicant-2.2.0-src/xsupplicant/src/xsup_ipc.c.fix-tmp-naming XSupplicant-2.2.0-src/xsupplicant/src/xsup_ipc.c +--- XSupplicant-2.2.0-src/xsupplicant/src/xsup_ipc.c.fix-tmp-naming 2015-10-30 11:02:07.363669106 -0400 ++++ XSupplicant-2.2.0-src/xsupplicant/src/xsup_ipc.c 2015-10-30 11:46:24.789638012 -0400 +@@ -46,8 +46,8 @@ + #include + #endif + +-#define XSUP_SOCKET "/tmp/xsupplicant.sock" +-#define XSUP_CTRL_SOCK "/tmp/xsupplicant_control.sock" ++#define XSUP_SOCKET "/tmp/xsupplicant.sock-XXXXXX" ++#define XSUP_CTRL_SOCK "/tmp/xsupplicant_control.sock-XXXXXX" + + #define INSTANCES 5 ///< Maximum # of IPC sockets we will allow connected. + #define BUFSIZE 4096 +@@ -143,7 +143,7 @@ int xsup_ipc_init() + char *error = NULL; + struct sockaddr_un sa, sb; + struct config_globals *globals = NULL; +- int i; ++ int i, tfda, tfdb; + mode_t chmod_settings = 0; + + globals = config_get_globals(); +@@ -157,6 +157,13 @@ int xsup_ipc_init() + Strncpy(socknamestr, sizeof(socknamestr), XSUP_SOCKET, 256); + Strncpy(sa.sun_path, sizeof(socknamestr), socknamestr, + sizeof(sa.sun_path)); ++ tfda = mkstemp(sa.sun_path); ++ if (tfda < 0) ++ { ++ printf ("%s: cannot generate temp file name\n", __FUNCTION__); ++ exit (1); ++ } ++ close(tfda); + + memset(&sb, 0x0, sizeof(struct sockaddr_un)); + sb.sun_family = AF_LOCAL; +@@ -164,6 +171,13 @@ int xsup_ipc_init() + Strncpy(ctrlsocknamestr, sizeof(ctrlsocknamestr), XSUP_CTRL_SOCK, 256); + Strncpy(sb.sun_path, sizeof(ctrlsocknamestr), ctrlsocknamestr, + sizeof(sb.sun_path)); ++ tfdb = mkstemp(sb.sun_path); ++ if (tfdb < 0) ++ { ++ printf ("%s: cannot generate temp file name\n", __FUNCTION__); ++ exit (1); ++ } ++ close(tfdb); + + // We need to clear the socket file if it exists. + diff --git a/xsupplicant-2.2.0-gcc47.patch b/xsupplicant-2.2.0-gcc47.patch new file mode 100644 index 0000000..5749d2e --- /dev/null +++ b/xsupplicant-2.2.0-gcc47.patch @@ -0,0 +1,12 @@ +diff -up XSupplicant-2.2.0-src/xsupplicant-ui/xsupptray/main.cpp.gcc47 XSupplicant-2.2.0-src/xsupplicant-ui/xsupptray/main.cpp +--- XSupplicant-2.2.0-src/xsupplicant-ui/xsupptray/main.cpp.gcc47 2012-01-05 15:45:39.227669265 -0500 ++++ XSupplicant-2.2.0-src/xsupplicant-ui/xsupptray/main.cpp 2012-01-05 15:45:47.510593833 -0500 +@@ -30,6 +30,8 @@ + * Nortel Networks for an OEM Commercial License. + **/ + ++#include ++ + #include "stdafx.h" + + extern "C" { diff --git a/xsupplicant-2.2.0-implicit-DSO.patch b/xsupplicant-2.2.0-implicit-DSO.patch new file mode 100644 index 0000000..6c6328f --- /dev/null +++ b/xsupplicant-2.2.0-implicit-DSO.patch @@ -0,0 +1,13 @@ +diff -up XSupplicant-2.2.0-src/xsupplicant/configure.ac.DSO XSupplicant-2.2.0-src/xsupplicant/configure.ac +--- XSupplicant-2.2.0-src/xsupplicant/configure.ac.DSO 2009-06-18 13:20:09.000000000 -0400 ++++ XSupplicant-2.2.0-src/xsupplicant/configure.ac 2010-02-10 16:05:30.374641077 -0500 +@@ -361,6 +361,9 @@ case "$host_os" in + AC_CHECK_HEADER(sys/socket.h, [], [AC_MSG_ERROR([header file \ + is required for Xsupplicant.])]) + ++ AC_CHECK_LIB(dl, dladdr) ++ AC_CHECK_LIB(z, deflate) ++ + AS_IF([test "$enable_static_iwlib" != yes], + [AC_CHECK_HEADER([iwlib.h], + [MORELIBS="${MORELIBS} -liw"], [AC_MSG_ERROR([header file is required for XSupplicant.])])], diff --git a/xsupplicant.spec b/xsupplicant.spec new file mode 100644 index 0000000..918a5e3 --- /dev/null +++ b/xsupplicant.spec @@ -0,0 +1,316 @@ +Name: xsupplicant +Summary: Open Source Implementation of IEEE 802.1x +Version: 2.2.0 +Release: 13%{?dist} +License: GPLv2+ or BSD with advertising +Group: System Environment/Base +URL: http://www.open1x.org/ +Source0: http://downloads.sourceforge.net/open1x/XSupplicant-%{version}-src.tar.gz +Source1: XSupplicantUI.desktop +Patch2: xsupplicant-2.1.8-ui-Fedora.patch +Patch3: XSupplicant-2.1.8-ppc-fix.patch +Patch4: xsupplicant-2.1.9-force-release.patch +Patch5: xsupplicant-2.2.0-implicit-DSO.patch +Patch6: xsupplicant-2.2.0-gcc47.patch +Patch7: xsupplicant-2.2.0-fix-tmp-naming.patch +# Needs arm specifics added to lib/libcrashdump/sigsegv.c +ExclusiveArch: %{ix86} x86_64 ppc %{power64} +BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n) +BuildRequires: libtool, dos2unix, libxml2-devel, pcsc-lite-devel, libtnc-devel +BuildRequires: openssl-devel, wireless-tools-devel +# UI BuildRequires: +BuildRequires: qt4-devel, desktop-file-utils + +%description +This software allows a GNU/Linux or BSD workstation to authenticate with +a RADIUS server using 802.1x and various EAP protocols. The intended +use is for computers with wireless LAN connections to complete a strong +authentication before joining the network. + +%package devel +Summary: Development files for xsupplicant +Group: Development/Libraries +Requires: %{name} = %{version}-%{release} + +%description devel +Development libraries and headers for xsupplicant. + +%package ui +Summary: Graphical User Interface for xsupplicant +Group: System Environment/Base +License: GPLv2 +Requires: %{name} = %{version}-%{release} + +%description ui +QT User Interface for XSupplicant. + +%prep +%setup -q -n XSupplicant-%{version}-src +# Find UI files in a sane system location +%patch2 -p1 -b .Fedora +# Fix PPC (enough to get it building, not run-tested) +%patch3 -p1 -b .ppc +# Force the UI bits to be built as "release", not "debug" +%patch4 -p1 -b .release +# Fix implicit linking issues +%patch5 -p1 -b .DSO +# Fix gcc 4.7 issues +%patch6 -p1 -b .gcc47 +# Fix tmp file naming issue +%patch7 -p1 -b .fix-tmp-naming + +cd xsupplicant +autoreconf -vfis + +%build +pushd xsupplicant +%configure --enable-tnc --enable-eap-fast --enable-eap-sim +make %{?_smp_mflags} +popd +pushd xsupplicant-ui/xsupptray +qmake-qt4 XSupplicantUI-unix.pro +make %{?_smp_mflags} +popd + +%install +rm -rf $RPM_BUILD_ROOT +pushd xsupplicant +make DESTDIR=$RPM_BUILD_ROOT install +popd + +mkdir -p $RPM_BUILD_ROOT%{_sysconfdir} +touch $RPM_BUILD_ROOT%{_sysconfdir}/xsupplicant.conf +touch $RPM_BUILD_ROOT%{_sysconfdir}/xsupplicant.user.conf + +rm -rf $RPM_BUILD_ROOT%{_libdir}/*.la +rm -rf $RPM_BUILD_ROOT%{_libdir}/*.a + +# ui bits +pushd xsupplicant-ui +mkdir -p $RPM_BUILD_ROOT%{_datadir}/%{name}/ +cp -a Skins $RPM_BUILD_ROOT%{_datadir}/%{name}/ +install -p build-release/XSupplicantUI $RPM_BUILD_ROOT%{_bindir} +popd + +mkdir -p $RPM_BUILD_ROOT%{_datadir}/applications +desktop-file-install --dir $RPM_BUILD_ROOT%{_datadir}/applications %{SOURCE1} +mkdir -p $RPM_BUILD_ROOT%{_datadir}/pixmaps/ +cp xsupplicant-ui/Skins/Default/icons/prod_color.png $RPM_BUILD_ROOT%{_datadir}/pixmaps/XSupplicantUI.png + +%clean +rm -rf $RPM_BUILD_ROOT + +%files +%defattr(-,root,root,-) +%doc xsupplicant/AUTHORS xsupplicant/COPYING +%doc xsupplicant/LICENSE xsupplicant/README +%doc xsupplicant/doc/README* +%doc xsupplicant/doc/extending_* +%doc xsupplicant/doc/xsupplicant_eap* +%doc xsupplicant/doc/Xsupplicant-wireless-cards.html +%doc xsupplicant/etc/*.conf +%config(noreplace) %ghost %{_sysconfdir}/xsupplicant.conf +%config(noreplace) %ghost %{_sysconfdir}/xsupplicant.user.conf +%{_bindir}/connect-tool +%{_bindir}/config-parser +%{_bindir}/ipcevents +%{_bindir}/ipctest +%{_bindir}/xsup_ntpwdhash +%{_sbindir}/xsupplicant +%{_libdir}/libbirddog.so.* +%{_libdir}/libsoftsim*.so.* + +%files devel +%defattr(-,root,root,-) +%doc xsupplicant/doc/standards/ +%{_includedir}/xsupconfcheck.h +%{_includedir}/xsupconfig.h +%{_includedir}/xsupgui.h +%{_includedir}/xsupgui_events.h +%{_includedir}/xsupgui_events_state.h +%{_libdir}/libbirddog.so +%{_libdir}/libsoftsim*.so + +%files ui +%defattr(-,root,root,-) +%doc xsupplicant-ui/Doc/*.odt xsupplicant-ui/Doc/*.pdf xsupplicant-ui/Doc/*.txt +%{_bindir}/XSupplicantUI +%{_datadir}/applications/*.desktop +%{_datadir}/pixmaps/XSupplicantUI.png +%{_datadir}/%{name}/ + +%changelog +* Fri Oct 30 2015 Tom Callaway - 2.2.0-13 +- fix tmp file naming issues + +* Fri Jun 19 2015 Fedora Release Engineering - 2.2.0-12 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_23_Mass_Rebuild + +* Sat May 02 2015 Kalev Lember - 2.2.0-11 +- Rebuilt for GCC 5 C++11 ABI change + +* Mon Aug 18 2014 Fedora Release Engineering - 2.2.0-10 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_21_22_Mass_Rebuild + +* Sun Jun 08 2014 Fedora Release Engineering - 2.2.0-9 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_21_Mass_Rebuild + +* Tue Jun 3 2014 Tom Callaway - 2.2.0-8 +- set ExclusiveArch to reflect the arches with support in lib/libcrashdump/sigsegv.c + +* Sun Aug 04 2013 Fedora Release Engineering - 2.2.0-7 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_20_Mass_Rebuild + +* Fri Feb 15 2013 Fedora Release Engineering - 2.2.0-6 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_19_Mass_Rebuild + +* Sun Jul 22 2012 Fedora Release Engineering - 2.2.0-5 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_18_Mass_Rebuild + +* Thu Jan 5 2012 Tom Callaway - 2.2.0-4 +- fix compile with gcc 4.7 + +* Tue Feb 08 2011 Fedora Release Engineering - 2.2.0-3 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_15_Mass_Rebuild + +* Wed Feb 10 2010 Tom "spot" Callaway - 2.2.0-2 +- fix implicit DSO linking issue with libdl + +* Fri Jan 29 2010 Tom "spot" Callaway - 2.2.0-1 +- update to 2.2.0 + +* Wed Jan 13 2010 Tom "spot" Callaway - 2.1.9-1 +- update to 2.1.9 +- force UI bits to be built with release, not debug + +* Wed Sep 2 2009 Tom "spot" Callaway - 2.1.8-2 +- duct tape fix for ppc/ppc64, not run-tested + +* Wed Sep 2 2009 Tom "spot" Callaway - 2.1.8-1 +- update to 2.1.8 + +* Fri Aug 21 2009 Tomas Mraz - 2.1.7-3 +- rebuilt with new openssl + +* Mon Jul 27 2009 Fedora Release Engineering - 2.1.7-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_12_Mass_Rebuild + +* Thu May 14 2009 Tom "spot" Callaway - 2.1.7-1 +- update to 2.1.7, drop static libs, add ui package + +* Thu Feb 26 2009 Fedora Release Engineering - 1.2.8-10 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_11_Mass_Rebuild + +* Sun Jan 18 2009 Tomas Mraz - 1.2.8-9 +- rebuild with new openssl + +* Tue Jul 8 2008 Tom "spot" Callaway - 1.2.8-8 +- fix iwlib handling + +* Thu Jun 5 2008 Tom "spot" Callaway - 1.2.8-7 +- rebuild against fixed kernel headers + +* Tue Feb 19 2008 Fedora Release Engineering - 1.2.8-6.2 +- Autorebuild for GCC 4.3 + +* Tue Dec 11 2007 Tom "spot" Callaway - 1.2.8-5.2 +- give up on trying to build the docs + +* Tue Dec 11 2007 Tom "spot" Callaway - 1.2.8-5.1 +- Fix docs patch so docs regenerate + +* Thu Dec 06 2007 Release Engineering - 1.2.8-5 +- Rebuild for deps + +* Mon Oct 29 2007 Tom "spot" Callaway 1.2.8-4.4 +- fix it again! + +* Mon Oct 29 2007 Tom "spot" Callaway 1.2.8-4.3 +- fix docs patch + +* Mon Oct 29 2007 Tom "spot" Callaway 1.2.8-4.2 +- multilib fix (bz 228395) + +* Tue Aug 28 2007 Tom "spot" Callaway 1.2.8-4.1 +- fix iwlibpatch in devel + +* Tue Aug 28 2007 Tom "spot" Callaway 1.2.8-4 +- rebuild for BuildID + +* Mon Aug 6 2007 Tom "spot" Callaway 1.2.8-3 +- fix xsupplicant to compile in devel (needs linux/if.h) +- fix doc generation +- fix license + +* Wed May 23 2007 Christopher Aillon 1.2.8-2 +- Rebuild against newer libiw.so + +* Tue Nov 21 2006 Tom "spot" Callaway 1.2.8-1 +- everyone gets 1.2.8, close out bz 212700 + +* Tue Nov 21 2006 Jan ONDREJ (SAL) 1.2.8-0 +- update to 1.2.8 +- removed xsupplicant-1.2.7-ducttapefixes.patch +- updated nocompilerh patch for latest version + +* Sun Sep 10 2006 Tom "spot" Callaway 1.2.7-3 +- fix ducttape patch for FC-4/FC-5 + +* Mon Sep 4 2006 Tom "spot" Callaway 1.2.7-2 +- fix typo in FC-5 spec + +* Mon Sep 4 2006 Tom "spot" Callaway 1.2.7-1 +- bump to 1.2.7 + +* Fri Jul 7 2006 Tom "spot" Callaway 1.2.6-1 +- bump to 1.2.6 +- remove all includes for linux/compiler.h, its not needed (and not present on Fedora) +- remove hack for wireless.h for FC6+ + +* Fri Apr 7 2006 Tom "spot" Callaway 1.2.4-1 +- bump to 1.2.4 + +* Tue Feb 28 2006 Tom "spot" Callaway 1.2.3-2 +- whoops. missed a file. + +* Tue Feb 28 2006 Tom "spot" Callaway 1.2.3-1 +- bump to 1.2.3 +- split package into main and devel + +* Tue Jan 3 2006 Hans de Goede 1.2.2-7 +- fix a possible bufferoverflow bz 170045 + +* Tue Nov 5 2005 Tom "spot" Callaway 1.2.2-6 +- compile fix + +* Mon Oct 24 2005 Tom "spot" Callaway 1.2.2-3 +- still need half of the docsfix patch + +* Mon Oct 24 2005 Tom "spot" Callaway 1.2.2-2 +- needs wireless tools to build + +* Mon Oct 24 2005 Tom "spot" Callaway 1.2.2-1 +- bump to 1.2.2, should resolve bz 167467 +- all patches obsoleted by upstream cleanups + +* Fri Sep 16 2005 Tom "spot" Callaway 1.2.1-5 +- patch to try to resolve bz 167467 + +* Sun Sep 4 2005 Tom "spot" Callaway 1.2.1-4 +- use lynx instead of elinks + +* Sun Sep 4 2005 Tom "spot" Callaway 1.2.1-3 +- BR: docbook-dtds, docbook-style-dsssl +- patch to use local docbookx.dtd + +* Sun Sep 4 2005 Tom "spot" Callaway 1.2.1-2 +- the new doc generation tool has some new BR: openjade, elinks, jadetex + +* Sat Sep 3 2005 Tom "spot" Callaway 1.2.1-1 +- bump to 1.2.1 release + +* Fri Aug 19 2005 Tom "spot" Callaway 1.2-1 +- bump to 1.2 final + +* Sat Aug 13 2005 Tom "spot" Callaway 1.2-0.1.pre1 +- initial package for Fedora Extras