X-Git-Url: http://git.samba.org/?a=blobdiff_plain;f=airpcap_loader.c;h=f20a88d401733e5c4fa3bc1ec9069f871394f2c6;hb=bd42162bfe726bc77d074adc6faf941c998c3cfc;hp=411df70c8eee782dd057980972719c2eb7b8fde5;hpb=9c89cdaaa3eccfe74d4e17705f38508c640b5047;p=metze%2Fwireshark%2Fwip.git diff --git a/airpcap_loader.c b/airpcap_loader.c index 411df70c8e..f20a88d401 100644 --- a/airpcap_loader.c +++ b/airpcap_loader.c @@ -24,7 +24,6 @@ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ -#ifdef _WIN32 #ifdef HAVE_CONFIG_H # include "config.h" #endif @@ -48,21 +47,13 @@ #include #include #include "capture_ui_utils.h" +#include -#include "simple_dialog.h" +#include "ui/simple_dialog.h" #include #include "airpcap_loader.h" -#ifdef NEED_G_ASCII_STRCASECMP_H -#include "g_ascii_strcasecmp.h" -#endif - -/* - * We load dynamically the dag library in order link it only when - * it's present on the system - */ -static HMODULE AirpcapLib = NULL; /* * Set to TRUE if the DLL was successfully loaded AND all functions @@ -70,15 +61,14 @@ static HMODULE AirpcapLib = NULL; */ static gboolean AirpcapLoaded = FALSE; -static int AirpcapVersion = 3; +#ifdef _WIN32 +/* + * We load dynamically the dag library in order link it only when + * it's present on the system + */ +static void * AirpcapLib = NULL; static AirpcapGetLastErrorHandler g_PAirpcapGetLastError; -static AirpcapGetDeviceListHandler g_PAirpcapGetDeviceList; -static AirpcapFreeDeviceListHandler g_PAirpcapFreeDeviceList; -static AirpcapOpenHandler g_PAirpcapOpen; -static AirpcapCloseHandler g_PAirpcapClose; -static AirpcapGetLinkTypeHandler g_PAirpcapGetLinkType; -static AirpcapSetLinkTypeHandler g_PAirpcapSetLinkType; static AirpcapSetKernelBufferHandler g_PAirpcapSetKernelBuffer; static AirpcapSetFilterHandler g_PAirpcapSetFilter; static AirpcapGetMacAddressHandler g_PAirpcapGetMacAddress; @@ -86,6 +76,16 @@ static AirpcapSetMinToCopyHandler g_PAirpcapSetMinToCopy; static AirpcapGetReadEventHandler g_PAirpcapGetReadEvent; static AirpcapReadHandler g_PAirpcapRead; static AirpcapGetStatsHandler g_PAirpcapGetStats; +#endif + +static int AirpcapVersion = 3; + +static AirpcapGetDeviceListHandler g_PAirpcapGetDeviceList; +static AirpcapFreeDeviceListHandler g_PAirpcapFreeDeviceList; +static AirpcapOpenHandler g_PAirpcapOpen; +static AirpcapCloseHandler g_PAirpcapClose; +static AirpcapGetLinkTypeHandler g_PAirpcapGetLinkType; +static AirpcapSetLinkTypeHandler g_PAirpcapSetLinkType; static AirpcapTurnLedOnHandler g_PAirpcapTurnLedOn; static AirpcapTurnLedOffHandler g_PAirpcapTurnLedOff; static AirpcapGetDeviceChannelHandler g_PAirpcapGetDeviceChannel; @@ -121,7 +121,7 @@ airpcap_if_info_t *airpcap_if_active = NULL; module_t *wlan_prefs = NULL; Dot11Channel *pSupportedChannels; -ULONG numSupportedChannels; +guint numSupportedChannels; static AirpcapChannelInfo LegacyChannels[] = { @@ -141,15 +141,16 @@ static AirpcapChannelInfo LegacyChannels[] = {2484, 0, {0,0,0}}, }; -static ULONG num_legacy_channels = 14; +static guint num_legacy_channels = 14; /* * Callback used by the load_wlan_keys() routine in order to read a WEP decryption key */ static guint -get_wep_key(pref_t *pref, gpointer ud _U_) +get_wep_key(pref_t *pref, gpointer ud) { - gchar *my_string = NULL; + gchar *key_string = NULL; + guint8 key_type = AIRPDCAP_KEY_TYPE_WEP; keys_cb_data_t* user_data; decryption_key_t* new_key; @@ -159,18 +160,33 @@ get_wep_key(pref_t *pref, gpointer ud _U_) if (g_ascii_strncasecmp(pref->name, "wep_key", 7) == 0 && pref->type == PREF_STRING) { - my_string = g_strdup(*pref->varp.string); + /* strip out key type */ + if (g_ascii_strncasecmp(*pref->varp.string, STRING_KEY_TYPE_WEP ":", 4) == 0) { + key_string = (gchar*)(*pref->varp.string)+4; + } + else if (g_ascii_strncasecmp(*pref->varp.string, STRING_KEY_TYPE_WPA_PWD ":", 8) == 0) { + key_string = (gchar*)(*pref->varp.string)+8; + key_type = AIRPDCAP_KEY_TYPE_WPA_PWD; + } + else if (g_ascii_strncasecmp(*pref->varp.string, STRING_KEY_TYPE_WPA_PSK ":", 8) == 0) { + key_string = (gchar*)(*pref->varp.string)+8; + key_type = AIRPDCAP_KEY_TYPE_WPA_PSK; + } + else { + key_type = AIRPDCAP_KEY_TYPE_WEP; + key_string = (gchar*)*pref->varp.string; + } /* Here we have the string describing the key... */ - new_key = parse_key_string(my_string); + new_key = parse_key_string(key_string, key_type); - if( new_key != NULL) - { - /* Key is added only if not null ... */ - user_data->list = g_list_append(user_data->list,new_key); - user_data->number_of_keys++; - user_data->current_index++; - } + if( new_key != NULL) + { + /* Key is added only if not null ... */ + user_data->list = g_list_append(user_data->list,new_key); + user_data->number_of_keys++; + user_data->current_index++; + } } return 0; } @@ -265,12 +281,11 @@ set_wep_key(pref_t *pref, gpointer ud _U_) * Function used to read the Decryption Keys from the preferences and store them * properly into the airpcap adapter. */ -BOOL -load_wlan_driver_wep_keys() +gboolean +load_wlan_driver_wep_keys(void) { keys_cb_data_t* user_data; guint i; - gchar *tmp = NULL; /* Retrieve the wlan preferences */ wlan_prefs = prefs_find_module("wlan"); @@ -320,25 +335,20 @@ load_wlan_driver_wep_keys() * This function will tell the airpcap driver the key list to use * This will be stored into the registry... */ -BOOL +gboolean write_wlan_wep_keys_to_registry(airpcap_if_info_t* info_if, GList* key_list) { - UINT i,j; + guint i,j; GString *new_key; gchar s[3]; PAirpcapKeysCollection KeysCollection; - ULONG KeysCollectionSize; - UCHAR KeyByte; - UINT keys_in_list = 0; + guint KeysCollectionSize; + guint8 KeyByte; + guint keys_in_list = 0; decryption_key_t* key_item = NULL; keys_in_list = g_list_length(key_list); - /* - * Save the encryption keys, if we have any of them - */ - KeysCollectionSize = 0; - /* * Calculate the size of the keys collection */ @@ -366,7 +376,7 @@ write_wlan_wep_keys_to_registry(airpcap_if_info_t* info_if, GList* key_list) key_item = (decryption_key_t*)g_list_nth_data(key_list,i); new_key = g_string_new(key_item->key->str); - KeysCollection->Keys[i].KeyLen = new_key->len / 2; + KeysCollection->Keys[i].KeyLen = (guint) new_key->len / 2; memset(&KeysCollection->Keys[i].KeyData, 0, sizeof(KeysCollection->Keys[i].KeyData)); for(j = 0 ; j < new_key->len; j += 2) @@ -374,7 +384,7 @@ write_wlan_wep_keys_to_registry(airpcap_if_info_t* info_if, GList* key_list) s[0] = new_key->str[j]; s[1] = new_key->str[j+1]; s[2] = '\0'; - KeyByte = (UCHAR)strtol(s, NULL, 16); + KeyByte = (guint8)strtol(s, NULL, 16); KeysCollection->Keys[i].KeyData[j / 2] = KeyByte; } @@ -410,16 +420,16 @@ write_wlan_wep_keys_to_registry(airpcap_if_info_t* info_if, GList* key_list) * This function will tell the airpcap driver the key list to use * This will be stored into the registry... */ -BOOL +gboolean write_wlan_driver_wep_keys_to_registry(GList* key_list) { - UINT i,j,k,n,y; + guint i,j,k,n,y; GString *new_key; gchar s[3]; PAirpcapKeysCollection KeysCollection; - ULONG KeysCollectionSize; - UCHAR KeyByte; - UINT keys_in_list = 0; + guint KeysCollectionSize; + guint8 KeyByte; + guint keys_in_list = 0; decryption_key_t* key_item = NULL; airpcap_if_info_t* fake_info_if = NULL; @@ -438,11 +448,6 @@ write_wlan_driver_wep_keys_to_registry(GList* key_list) if(((decryption_key_t*)g_list_nth_data(key_list,k))->type == AIRPDCAP_KEY_TYPE_WEP) keys_in_list++; - /* - * Save the encryption keys, if we have any of them - */ - KeysCollectionSize = 0; - /* * Calculate the size of the keys collection */ @@ -476,10 +481,10 @@ write_wlan_driver_wep_keys_to_registry(GList* key_list) key_item = (decryption_key_t*)g_list_nth_data(key_list,i); /* - * XXX - The AIRPDCAP_KEY_TYPE_WEP is the only supportd right now! + * XXX - The AIRPDCAP_KEY_TYPE_WEP is the only supported right now! * We will have to modify the AirpcapKey structure in order to * support the other two types! What happens now, is that simply the - * not supported keys will just be discarded (they will be saved in wireshark though) + * not supported keys will just be discarded (they will be saved in Wireshark though) */ if(key_item->type == AIRPDCAP_KEY_TYPE_WEP) { @@ -487,7 +492,7 @@ write_wlan_driver_wep_keys_to_registry(GList* key_list) new_key = g_string_new(key_item->key->str); - KeysCollection->Keys[y].KeyLen = new_key->len / 2; + KeysCollection->Keys[y].KeyLen = (guint) new_key->len / 2; memset(&KeysCollection->Keys[y].KeyData, 0, sizeof(KeysCollection->Keys[y].KeyData)); for(j = 0 ; j < new_key->len; j += 2) @@ -495,7 +500,7 @@ write_wlan_driver_wep_keys_to_registry(GList* key_list) s[0] = new_key->str[j]; s[1] = new_key->str[j+1]; s[2] = '\0'; - KeyByte = (UCHAR)strtol(s, NULL, 16); + KeyByte = (guint8)strtol(s, NULL, 16); KeysCollection->Keys[y].KeyData[j / 2] = KeyByte; } /* XXX - Change when WPA will be supported!!! */ @@ -543,7 +548,7 @@ write_wlan_driver_wep_keys_to_registry(GList* key_list) * Function used to save to the preference file the Decryption Keys. */ int -save_wlan_driver_wep_keys() +save_wlan_driver_wep_keys(void) { GList* key_list = NULL; char* tmp_key = NULL; @@ -555,7 +560,7 @@ save_wlan_driver_wep_keys() fake_info_if = airpcap_driver_fake_if_info_new(); if(fake_info_if == NULL) - return FALSE; + return 0; /* Retrieve the wlan preferences */ wlan_prefs = prefs_find_module("wlan"); @@ -563,7 +568,6 @@ save_wlan_driver_wep_keys() /* Allocate a structure used to keep infos between the callbacks */ user_data = (keys_cb_data_t*)g_malloc(sizeof(keys_cb_data_t)); - /* Number of keys in key list */ /* Number of keys in key list */ if(fake_info_if->keysCollectionSize != 0) keys_in_list = (guint)(fake_info_if->keysCollectionSize - sizeof(AirpcapKeysCollection))/sizeof(AirpcapKey); @@ -627,10 +631,8 @@ int save_wlan_wireshark_wep_keys(GList* key_ls) { GList* key_list = NULL; - char* tmp_key = NULL; guint keys_in_list,i; keys_cb_data_t* user_data; - airpcap_if_info_t* fake_info_if = NULL; decryption_key_t* tmp_dk; /* Retrieve the wlan preferences */ @@ -692,7 +694,7 @@ cant_get_airpcap_if_list_error_message(const char *err_str) /* * Airpcap wrapper, used to store the current settings for the selected adapter */ -BOOL +gboolean airpcap_if_store_cur_config_as_adapter_default(PAirpcapHandle ah) { if (!AirpcapLoaded) return FALSE; @@ -703,7 +705,7 @@ airpcap_if_store_cur_config_as_adapter_default(PAirpcapHandle ah) * Airpcap wrapper, used to open an airpcap adapter */ PAirpcapHandle -airpcap_if_open(PCHAR name, PCHAR err) +airpcap_if_open(gchar * name, gchar * err) { if (!AirpcapLoaded) return NULL; if (name == NULL) return NULL; @@ -713,7 +715,7 @@ airpcap_if_open(PCHAR name, PCHAR err) /* * Airpcap wrapper, used to close an airpcap adapter */ -VOID +void airpcap_if_close(PAirpcapHandle handle) { if (!AirpcapLoaded) return; @@ -724,7 +726,7 @@ airpcap_if_close(PAirpcapHandle handle) * Retrieve the state of the Airpcap DLL */ int -airpcap_get_dll_state() +airpcap_get_dll_state(void) { return AirpcapVersion; } @@ -732,8 +734,8 @@ airpcap_get_dll_state() /* * Airpcap wrapper, used to turn on the led of an airpcap adapter */ -BOOL -airpcap_if_turn_led_on(PAirpcapHandle AdapterHandle, UINT LedNumber) +gboolean +airpcap_if_turn_led_on(PAirpcapHandle AdapterHandle, guint LedNumber) { if (!AirpcapLoaded) return FALSE; return g_PAirpcapTurnLedOn(AdapterHandle,LedNumber); @@ -742,8 +744,8 @@ airpcap_if_turn_led_on(PAirpcapHandle AdapterHandle, UINT LedNumber) /* * Airpcap wrapper, used to turn off the led of an airpcap adapter */ -BOOL -airpcap_if_turn_led_off(PAirpcapHandle AdapterHandle, UINT LedNumber) +gboolean +airpcap_if_turn_led_off(PAirpcapHandle AdapterHandle, guint LedNumber) { if (!AirpcapLoaded) return FALSE; return g_PAirpcapTurnLedOff(AdapterHandle,LedNumber); @@ -752,8 +754,8 @@ airpcap_if_turn_led_off(PAirpcapHandle AdapterHandle, UINT LedNumber) /* * Airpcap wrapper, used to get the channel of an airpcap adapter */ -BOOL -airpcap_if_get_device_channel(PAirpcapHandle ah, PUINT ch) +gboolean +airpcap_if_get_device_channel(PAirpcapHandle ah, guint * ch) { if (!AirpcapLoaded) return FALSE; return g_PAirpcapGetDeviceChannel(ah,ch); @@ -762,8 +764,8 @@ airpcap_if_get_device_channel(PAirpcapHandle ah, PUINT ch) /* * Airpcap wrapper, used to get the supported channels of an airpcap adapter */ -BOOL -airpcap_if_get_device_supported_channels(PAirpcapHandle ah, AirpcapChannelInfo **cInfo, PULONG nInfo) +gboolean +airpcap_if_get_device_supported_channels(PAirpcapHandle ah, AirpcapChannelInfo **cInfo, guint * nInfo) { if (!AirpcapLoaded) return FALSE; if (airpcap_get_dll_state() == AIRPCAP_DLL_OLD){ @@ -781,13 +783,13 @@ airpcap_if_get_device_supported_channels(PAirpcapHandle ah, AirpcapChannelInfo * * Airpcap wrapper, used to get the supported channels of an airpcap adapter */ Dot11Channel* -airpcap_if_get_device_supported_channels_array(PAirpcapHandle ah, PULONG pNumSupportedChannels) +airpcap_if_get_device_supported_channels_array(PAirpcapHandle ah, guint * pNumSupportedChannels) { AirpcapChannelInfo *chanInfo; - ULONG i=0, j=0, numInfo = 0; + guint i=0, j=0, numInfo = 0; if (!AirpcapLoaded) - return FALSE; + return NULL; if (airpcap_if_get_device_supported_channels(ah, &chanInfo, &numInfo) == FALSE) return NULL; numSupportedChannels = 0; @@ -798,11 +800,11 @@ airpcap_if_get_device_supported_channels_array(PAirpcapHandle ah, PULONG pNumSup if (numInfo == 0) return NULL; - pSupportedChannels = malloc(numInfo * (sizeof *pSupportedChannels)); + pSupportedChannels = g_malloc(numInfo * (sizeof *pSupportedChannels)); for (i = 0; i < numInfo; i++) { - ULONG supportedChannel = 0xFFFFFFFF; + guint supportedChannel = G_MAXUINT; /* * search if we have it already @@ -816,7 +818,7 @@ airpcap_if_get_device_supported_channels_array(PAirpcapHandle ah, PULONG pNumSup } } - if (supportedChannel == 0xFFFFFFFF) + if (supportedChannel == G_MAXUINT) { /* * not found, create a new item @@ -826,10 +828,10 @@ airpcap_if_get_device_supported_channels_array(PAirpcapHandle ah, PULONG pNumSup switch(chanInfo[i].ExtChannel) { case -1: - pSupportedChannels[numSupportedChannels].Flags = FLAG_CAN_BE_HIGH; + pSupportedChannels[numSupportedChannels].Flags = FLAG_CAN_BE_LOW; break; case +1: - pSupportedChannels[numSupportedChannels].Flags = FLAG_CAN_BE_LOW; + pSupportedChannels[numSupportedChannels].Flags = FLAG_CAN_BE_HIGH; break; case 0: default: @@ -855,10 +857,10 @@ airpcap_if_get_device_supported_channels_array(PAirpcapHandle ah, PULONG pNumSup switch(chanInfo[i].ExtChannel) { case -1: - pSupportedChannels[supportedChannel].Flags |= FLAG_CAN_BE_HIGH; + pSupportedChannels[supportedChannel].Flags |= FLAG_CAN_BE_LOW; break; case +1: - pSupportedChannels[supportedChannel].Flags |= FLAG_CAN_BE_LOW; + pSupportedChannels[supportedChannel].Flags |= FLAG_CAN_BE_HIGH; break; case 0: default: @@ -892,8 +894,8 @@ airpcap_if_get_device_supported_channels_array(PAirpcapHandle ah, PULONG pNumSup /* * Airpcap wrapper, used to set the channel of an airpcap adapter */ -BOOL -airpcap_if_set_device_channel(PAirpcapHandle ah, UINT ch) +gboolean +airpcap_if_set_device_channel(PAirpcapHandle ah, guint ch) { if (!AirpcapLoaded) return FALSE; return g_PAirpcapSetDeviceChannel(ah,ch); @@ -902,12 +904,12 @@ airpcap_if_set_device_channel(PAirpcapHandle ah, UINT ch) /* * Airpcap wrapper, used to set the frequency of an airpcap adapter */ -BOOL +gboolean airpcap_if_set_device_channel_ex(PAirpcapHandle ah, AirpcapChannelInfo ChannelInfo) { if (!AirpcapLoaded) return FALSE; if (airpcap_get_dll_state() == AIRPCAP_DLL_OLD){ - guint channel = 0; + gint channel = 0; channel = ieee80211_mhz_to_chan(ChannelInfo.Frequency); if (channel < 0){ @@ -925,7 +927,7 @@ airpcap_if_set_device_channel_ex(PAirpcapHandle ah, AirpcapChannelInfo ChannelIn /* * Airpcap wrapper, used to get the frequency of an airpcap adapter */ -BOOL +gboolean airpcap_if_get_device_channel_ex(PAirpcapHandle ah, PAirpcapChannelInfo pChannelInfo) { if (!AirpcapLoaded) return FALSE; @@ -938,7 +940,7 @@ airpcap_if_get_device_channel_ex(PAirpcapHandle ah, PAirpcapChannelInfo pChannel if (airpcap_get_dll_state() == AIRPCAP_DLL_OLD){ guint channel = 0; - ULONG chan_freq = 0; + guint chan_freq = 0; if (!airpcap_if_get_device_channel(ah, &channel)) return FALSE; @@ -956,7 +958,7 @@ airpcap_if_get_device_channel_ex(PAirpcapHandle ah, PAirpcapChannelInfo pChannel /* * Airpcap wrapper, used to get the link type of an airpcap adapter */ -BOOL +gboolean airpcap_if_get_link_type(PAirpcapHandle ah, PAirpcapLinkType lt) { if (!AirpcapLoaded) return FALSE; @@ -966,7 +968,7 @@ airpcap_if_get_link_type(PAirpcapHandle ah, PAirpcapLinkType lt) /* * Airpcap wrapper, used to set the link type of an airpcap adapter */ -BOOL +gboolean airpcap_if_set_link_type(PAirpcapHandle ah, AirpcapLinkType lt) { if (!AirpcapLoaded) return FALSE; @@ -976,8 +978,8 @@ airpcap_if_set_link_type(PAirpcapHandle ah, AirpcapLinkType lt) /* * Airpcap wrapper, used to get the fcs presence of an airpcap adapter */ -BOOL -airpcap_if_get_fcs_presence(PAirpcapHandle ah, PBOOL fcs) +gboolean +airpcap_if_get_fcs_presence(PAirpcapHandle ah, gboolean * fcs) { if (!AirpcapLoaded) return FALSE; return g_PAirpcapGetFcsPresence(ah,fcs); @@ -986,8 +988,8 @@ airpcap_if_get_fcs_presence(PAirpcapHandle ah, PBOOL fcs) /* * Airpcap wrapper, used to set the fcs presence of an airpcap adapter */ -BOOL -airpcap_if_set_fcs_presence(PAirpcapHandle ah, BOOL fcs) +gboolean +airpcap_if_set_fcs_presence(PAirpcapHandle ah, gboolean fcs) { if (!AirpcapLoaded) return FALSE; return g_PAirpcapSetFcsPresence(ah,fcs); @@ -996,7 +998,7 @@ airpcap_if_set_fcs_presence(PAirpcapHandle ah, BOOL fcs) /* * Airpcap wrapper, used to get the decryption enabling of an airpcap adapter */ -BOOL +gboolean airpcap_if_get_decryption_state(PAirpcapHandle ah, PAirpcapDecryptionState PEnable) { if (!AirpcapLoaded) return FALSE; @@ -1006,7 +1008,7 @@ airpcap_if_get_decryption_state(PAirpcapHandle ah, PAirpcapDecryptionState PEnab /* * Airpcap wrapper, used to set the decryption enabling of an airpcap adapter */ -BOOL +gboolean airpcap_if_set_decryption_state(PAirpcapHandle ah, AirpcapDecryptionState Enable) { if (!AirpcapLoaded) return FALSE; @@ -1016,7 +1018,7 @@ airpcap_if_set_decryption_state(PAirpcapHandle ah, AirpcapDecryptionState Enable /* * Airpcap wrapper, used to get the decryption enabling of an airpcap driver */ -BOOL +gboolean airpcap_if_get_driver_decryption_state(PAirpcapHandle ah, PAirpcapDecryptionState PEnable) { if (!AirpcapLoaded || (g_PAirpcapGetDriverDecryptionState==NULL)) return FALSE; @@ -1026,7 +1028,7 @@ airpcap_if_get_driver_decryption_state(PAirpcapHandle ah, PAirpcapDecryptionStat /* * Airpcap wrapper, used to set the decryption enabling of an airpcap driver */ -BOOL +gboolean airpcap_if_set_driver_decryption_state(PAirpcapHandle ah, AirpcapDecryptionState Enable) { if (!AirpcapLoaded || (g_PAirpcapSetDriverDecryptionState==NULL)) return FALSE; @@ -1036,7 +1038,7 @@ airpcap_if_set_driver_decryption_state(PAirpcapHandle ah, AirpcapDecryptionState /* * Airpcap wrapper, used to get the fcs validation of an airpcap adapter */ -BOOL +gboolean airpcap_if_get_fcs_validation(PAirpcapHandle ah, PAirpcapValidationType val) { if (!AirpcapLoaded) return FALSE; @@ -1046,7 +1048,7 @@ airpcap_if_get_fcs_validation(PAirpcapHandle ah, PAirpcapValidationType val) /* * Airpcap wrapper, used to set the fcs validation of an airpcap adapter */ -BOOL +gboolean airpcap_if_set_fcs_validation(PAirpcapHandle ah, AirpcapValidationType val) { if (!AirpcapLoaded) return FALSE; @@ -1056,7 +1058,7 @@ airpcap_if_set_fcs_validation(PAirpcapHandle ah, AirpcapValidationType val) /* * Airpcap wrapper, used to save the settings for the selected_if */ -BOOL +gboolean airpcap_if_set_device_keys(PAirpcapHandle AdapterHandle, PAirpcapKeysCollection KeysCollection) { if (!AirpcapLoaded) return FALSE; @@ -1066,8 +1068,8 @@ airpcap_if_set_device_keys(PAirpcapHandle AdapterHandle, PAirpcapKeysCollection /* * Airpcap wrapper, used to save the settings for the selected_if */ -BOOL -airpcap_if_get_device_keys(PAirpcapHandle AdapterHandle, PAirpcapKeysCollection KeysCollection, PUINT PKeysCollectionSize) +gboolean +airpcap_if_get_device_keys(PAirpcapHandle AdapterHandle, PAirpcapKeysCollection KeysCollection, guint * PKeysCollectionSize) { if (!AirpcapLoaded) return FALSE; return g_PAirpcapGetDeviceKeys(AdapterHandle,KeysCollection,PKeysCollectionSize); @@ -1076,7 +1078,7 @@ airpcap_if_get_device_keys(PAirpcapHandle AdapterHandle, PAirpcapKeysCollection /* * Airpcap wrapper, used to save the driver's set of keys */ -BOOL +gboolean airpcap_if_set_driver_keys(PAirpcapHandle AdapterHandle, PAirpcapKeysCollection KeysCollection) { if (!AirpcapLoaded || (g_PAirpcapSetDriverKeys==NULL)) return FALSE; @@ -1086,8 +1088,8 @@ airpcap_if_set_driver_keys(PAirpcapHandle AdapterHandle, PAirpcapKeysCollection /* * Airpcap wrapper, used to load the driver's set of keys */ -BOOL -airpcap_if_get_driver_keys(PAirpcapHandle AdapterHandle, PAirpcapKeysCollection KeysCollection, PUINT PKeysCollectionSize) +gboolean +airpcap_if_get_driver_keys(PAirpcapHandle AdapterHandle, PAirpcapKeysCollection KeysCollection, guint * PKeysCollectionSize) { if (!AirpcapLoaded || (g_PAirpcapGetDriverKeys==NULL)) return FALSE; return g_PAirpcapGetDriverKeys(AdapterHandle,KeysCollection,PKeysCollectionSize); @@ -1108,7 +1110,7 @@ airpcap_if_info_new(char *name, char *description) ad = airpcap_if_open(name, ebuf); if(ad) { - if_info = g_malloc(sizeof (airpcap_if_info_t)); + if_info = g_malloc0(sizeof (airpcap_if_info_t)); if_info->name = g_strdup(name); if (description == NULL){ if_info->description = NULL; @@ -1142,7 +1144,7 @@ airpcap_if_info_new(char *name, char *description) * This function will create a new fake drivers' interface, to load global keys... */ airpcap_if_info_t* -airpcap_driver_fake_if_info_new() +airpcap_driver_fake_if_info_new(void) { PAirpcapHandle ad; gchar ebuf[AIRPCAP_ERRBUF_SIZE]; @@ -1220,14 +1222,14 @@ airpcap_if_info_print(airpcap_if_info_t* if_info) g_print(" LINKTYPE: %d\n",if_info->linkType); g_print(" LOOPBACK: %s\n",if_info->loopback ? "YES" : "NO"); g_print(" (GTK) TAG: %d\n",if_info->tag); - g_print("SUPPORTED CHANNELS POINTER: %lu\n",if_info->pSupportedChannels); - g_print(" NUM SUPPORTED CHANNELS: %lu\n",if_info->numSupportedChannels); + g_print("SUPPORTED CHANNELS POINTER: %p\n",if_info->pSupportedChannels); + g_print(" NUM SUPPORTED CHANNELS: %u\n",if_info->numSupportedChannels); for(i=0; i<(if_info->numSupportedChannels); i++){ g_print("\n SUPPORTED CHANNEL #%u\n",i+1); g_print(" CHANNEL: %u\n",if_info->pSupportedChannels[i].Channel); - g_print(" FREQUENCY: %lu\n",if_info->pSupportedChannels[i].Frequency); - g_print(" FLAGS: %lu\n",if_info->pSupportedChannels[i].Flags); + g_print(" FREQUENCY: %u\n",if_info->pSupportedChannels[i].Frequency); + g_print(" FLAGS: %u\n",if_info->pSupportedChannels[i].Flags); } g_print("\n\n"); } @@ -1235,7 +1237,7 @@ airpcap_if_info_print(airpcap_if_info_t* if_info) /* * Function used to load the WEP keys for a selected interface */ -BOOL +gboolean airpcap_if_load_keys(PAirpcapHandle ad, airpcap_if_info_t *if_info) { if(!if_info) return FALSE; @@ -1272,7 +1274,7 @@ airpcap_if_load_keys(PAirpcapHandle ad, airpcap_if_info_t *if_info) /* * Function used to load the WEP keys for a selected interface */ -BOOL +gboolean airpcap_if_load_driver_keys(PAirpcapHandle ad, airpcap_if_info_t *if_info) { if_info->keysCollectionSize = 0; @@ -1334,6 +1336,9 @@ free_airpcap_if_cb(gpointer data, gpointer user_data _U_) { airpcap_if_info_t *if_info = data; + if (NULL == if_info) + return; + if (if_info->name != NULL) g_free(if_info->name); @@ -1350,8 +1355,7 @@ free_airpcap_if_cb(gpointer data, gpointer user_data _U_) if(if_info->ip_addr != NULL) g_slist_free(if_info->ip_addr); - if(if_info != NULL) - g_free(if_info); + g_free(if_info); } /* @@ -1374,9 +1378,11 @@ get_airpcap_interface_list(int *err, char **err_str) { GList *il = NULL; airpcap_if_info_t *if_info; - int i, n_adapts; + int n_adapts; AirpcapDeviceDescription *devsList, *adListEntry; - char errbuf[PCAP_ERRBUF_SIZE]; + char errbuf[AIRPCAP_ERRBUF_SIZE]; + + *err = 0; if (!AirpcapLoaded) { @@ -1418,19 +1424,18 @@ get_airpcap_interface_list(int *err, char **err_str) * Insert the adapters in our list */ adListEntry = devsList; - for(i = 0; i < n_adapts; i++) + while(adListEntry) { if_info = airpcap_if_info_new(adListEntry->Name, adListEntry->Description); - if (if_info != NULL){ - il = g_list_append(il, if_info); - } + if (if_info != NULL){ + il = g_list_append(il, if_info); + } adListEntry = adListEntry->next; } g_PAirpcapFreeDeviceList(devsList); - *err = 0; return il; } @@ -1440,31 +1445,16 @@ get_airpcap_interface_list(int *err, char **err_str) */ airpcap_if_info_t* get_airpcap_if_from_name(GList* if_list, const gchar* name) { - unsigned int ifn; - GList* curr; - airpcap_if_info_t* if_info; + GList* curr; + airpcap_if_info_t* if_info; - ifn = 0; - if(if_list != NULL) - { - while( ifn < g_list_length(if_list) ) - { - curr = g_list_nth(if_list, ifn); - - if_info = NULL; - if(curr != NULL) - if_info = curr->data; - if(if_info != NULL) - { - if ( g_ascii_strcasecmp(if_info->name,name) == 0) - { - return if_info; + for (curr = g_list_first(if_list); curr; curr = g_list_next(curr)) { + if_info = (airpcap_if_info_t *)curr->data; + if (if_info && (g_ascii_strcasecmp(if_info->name, name) == 0)) { + return (if_info); } - } - ifn++; } - } - return NULL; + return (NULL); } /* @@ -1474,7 +1464,6 @@ gchar* airpcap_get_key_string(AirpcapKey key) { unsigned int j = 0; - unsigned int l = 0; gchar *dst,*src; dst = NULL; @@ -1491,11 +1480,11 @@ airpcap_get_key_string(AirpcapKey key) for(j = 0; j < key.KeyLen; j++) { - src = g_strdup_printf("%.2x\0", key.KeyData[j]); + src = g_strdup_printf("%.2x", key.KeyData[j]); /* * XXX - use g_strconcat() or GStrings instead ??? */ - l = g_strlcat(dst,src,WEP_KEY_MAX_CHAR_SIZE+1); + g_strlcat(dst, src, WEP_KEY_MAX_CHAR_SIZE+1); } g_free(src); } @@ -1561,7 +1550,7 @@ airpcap_get_if_string_number(airpcap_if_info_t* if_info) } else { - number = g_strdup_printf("%.2u\0",n); + number = g_strdup_printf("%.2u",n); } return number; @@ -1593,10 +1582,6 @@ airpcap_get_if_string_number_from_description(gchar* description) airpcap_if_info_t* airpcap_get_default_if(GList* airpcap_if_list) { - int ifn = 0; - GList* popdown_if_list = NULL; - GList* curr = NULL; - gchar* s; airpcap_if_info_t* if_info = NULL; @@ -1624,7 +1609,7 @@ airpcap_load_selected_if_configuration(airpcap_if_info_t* if_info) if(ad) { - /* Stop blinking (if it was blinkig!)*/ + /* Stop blinking (if it was blinking!)*/ if(if_info->blinking) { /* Turn on the light (if it was off) */ @@ -1665,7 +1650,7 @@ airpcap_save_selected_if_configuration(airpcap_if_info_t* if_info) if(ad) { - /* Stop blinking (if it was blinkig!)*/ + /* Stop blinking (if it was blinking!)*/ if(if_info->blinking) { /* Turn on the light (if it was off) */ @@ -1813,7 +1798,7 @@ get_airpcap_device_keys(airpcap_if_info_t* info_if) g_free(tmp_key); /* BITS */ - new_key->bits = new_key->key->len *4; /* every char is 4 bits in WEP keys (it is an exadecimal number) */ + new_key->bits = (guint) new_key->key->len *4; /* every char is 4 bits in WEP keys (it is an hexadecimal number) */ /* SSID not used in WEP keys */ new_key->ssid = NULL; @@ -1842,7 +1827,7 @@ get_airpcap_device_keys(airpcap_if_info_t* info_if) * keys for the global AirPcap driver... returns NULL if no keys are found. */ GList* -get_airpcap_driver_keys() +get_airpcap_driver_keys(void) { /* tmp vars */ char* tmp_key = NULL; @@ -1885,7 +1870,7 @@ get_airpcap_driver_keys() if(tmp_key != NULL) g_free(tmp_key); /* BITS */ - new_key->bits = new_key->key->len *4; /* every char is 4 bits in WEP keys (it is an exadecimal number) */ + new_key->bits = (guint) new_key->key->len *4; /* every char is 4 bits in WEP keys (it is an hexadecimal number) */ /* SSID not used in WEP keys */ new_key->ssid = NULL; @@ -1916,12 +1901,10 @@ get_airpcap_driver_keys() * no key is found */ GList* -get_wireshark_keys() +get_wireshark_keys(void) { keys_cb_data_t* wep_user_data = NULL; - gchar *tmp = NULL; - GList* final_list = NULL; GList* wep_final_list = NULL; @@ -1941,7 +1924,7 @@ get_wireshark_keys() prefs_pref_foreach(wlan_prefs, get_wep_key, (gpointer)wep_user_data); /* Copy the list field in the user data structure pointer into the final_list */ - if(wep_user_data != NULL) wep_final_list = wep_user_data->list; + wep_final_list = wep_user_data->list; /* XXX - Merge the three lists!!!!! */ final_list = wep_final_list; @@ -1975,7 +1958,6 @@ merge_key_list(GList* list1, GList* list2) if(list1 == NULL) { - n1 = 0; n2 = g_list_length(list2); for(i=0;iname, "enable_decryption", 17) == 0 && pref->type == PREF_BOOL) { - number = *pref->varp.boolp; - g_free((void *)*pref->varp.boolp); if(*is_on) *pref->varp.boolp = TRUE; else @@ -2454,13 +2432,14 @@ set_airpcap_decryption(gboolean on_off) */ int load_airpcap(void) { - BOOL base_functions = TRUE; - BOOL eleven_n_functions = TRUE; +#ifdef _WIN32 + gboolean base_functions = TRUE; + gboolean eleven_n_functions = TRUE; - if((AirpcapLib = LoadLibrary(TEXT("airpcap.dll"))) == NULL) + if((AirpcapLib = ws_load_library("airpcap.dll")) == NULL) { /* Report the error but go on */ - AirpcapVersion = AIRPCAP_DLL_NOT_FOUND; + AirpcapVersion = AIRPCAP_DLL_NOT_FOUND; return AirpcapVersion; } else @@ -2492,30 +2471,33 @@ int load_airpcap(void) if((g_PAirpcapGetDecryptionState = (AirpcapGetDecryptionStateHandler) GetProcAddress(AirpcapLib, "AirpcapGetDecryptionState")) == NULL) base_functions = FALSE; if((g_PAirpcapSetDecryptionState = (AirpcapSetDecryptionStateHandler) GetProcAddress(AirpcapLib, "AirpcapSetDecryptionState")) == NULL) base_functions = FALSE; if((g_PAirpcapStoreCurConfigAsAdapterDefault = (AirpcapStoreCurConfigAsAdapterDefaultHandler) GetProcAddress(AirpcapLib, "AirpcapStoreCurConfigAsAdapterDefault")) == NULL) base_functions = FALSE; - if((g_PAirpcapGetVersion = (AirpcapGetVersionHandler) GetProcAddress(AirpcapLib, "AirpcapGetVersion")) == NULL) base_functions = FALSE; - if((g_PAirpcapGetDriverDecryptionState = (AirpcapGetDriverDecryptionStateHandler) GetProcAddress(AirpcapLib, "AirpcapGetDriverDecryptionState")) == NULL) base_functions = FALSE; + if((g_PAirpcapGetVersion = (AirpcapGetVersionHandler) GetProcAddress(AirpcapLib, "AirpcapGetVersion")) == NULL) base_functions = FALSE; + if((g_PAirpcapGetDriverDecryptionState = (AirpcapGetDriverDecryptionStateHandler) GetProcAddress(AirpcapLib, "AirpcapGetDriverDecryptionState")) == NULL) base_functions = FALSE; if((g_PAirpcapSetDriverDecryptionState = (AirpcapSetDriverDecryptionStateHandler) GetProcAddress(AirpcapLib, "AirpcapSetDriverDecryptionState")) == NULL) base_functions = FALSE; - if((g_PAirpcapGetDriverKeys = (AirpcapGetDriverKeysHandler) GetProcAddress(AirpcapLib, "AirpcapGetDriverKeys")) == NULL) base_functions = FALSE; + if((g_PAirpcapGetDriverKeys = (AirpcapGetDriverKeysHandler) GetProcAddress(AirpcapLib, "AirpcapGetDriverKeys")) == NULL) base_functions = FALSE; if((g_PAirpcapSetDriverKeys = (AirpcapSetDriverKeysHandler) GetProcAddress(AirpcapLib, "AirpcapSetDriverKeys")) == NULL) base_functions = FALSE; /* TEST IF AIRPCAP SUPPORTS 11N */ if((g_PAirpcapSetDeviceChannelEx = (AirpcapSetDeviceChannelExHandler) GetProcAddress(AirpcapLib, "AirpcapSetDeviceChannelEx")) == NULL) eleven_n_functions = FALSE; - if((g_PAirpcapGetDeviceChannelEx = (AirpcapGetDeviceChannelExHandler) GetProcAddress(AirpcapLib, "AirpcapGetDeviceChannelEx")) == NULL) eleven_n_functions = FALSE; + if((g_PAirpcapGetDeviceChannelEx = (AirpcapGetDeviceChannelExHandler) GetProcAddress(AirpcapLib, "AirpcapGetDeviceChannelEx")) == NULL) eleven_n_functions = FALSE; if((g_PAirpcapGetDeviceSupportedChannels = (AirpcapGetDeviceSupportedChannelsHandler) GetProcAddress(AirpcapLib, "AirpcapGetDeviceSupportedChannels")) == NULL) eleven_n_functions = FALSE; if(base_functions && eleven_n_functions){ AirpcapLoaded = TRUE; - AirpcapVersion = AIRPCAP_DLL_OK; + AirpcapVersion = AIRPCAP_DLL_OK; }else if(base_functions){ AirpcapLoaded = TRUE; AirpcapVersion = AIRPCAP_DLL_OLD; - return AIRPCAP_DLL_OK; + return AIRPCAP_DLL_OK; }else{ AirpcapLoaded = FALSE; AirpcapVersion = AIRPCAP_DLL_ERROR; } } return AirpcapVersion; +#else /* _WIN32 */ + return AIRPCAP_DLL_NOT_FOUND; +#endif /* _WIN32 */ } /* @@ -2542,8 +2524,7 @@ get_runtime_airpcap_version(GString *str) } g_PAirpcapGetVersion(&vmaj, &vmin, &vrev, &build); - g_string_sprintfa(str, "with AirPcap %d.%d.%d build %d", vmaj, vmin, + g_string_append_printf(str, "with AirPcap %d.%d.%d build %d", vmaj, vmin, vrev, build); } #endif /* HAVE_AIRPCAP */ -#endif /* _WIN32 */