diff options
Diffstat (limited to 'airpcap_loader.c')
-rw-r--r-- | airpcap_loader.c | 23 |
1 files changed, 14 insertions, 9 deletions
diff --git a/airpcap_loader.c b/airpcap_loader.c index 52614f7ca6..1c63b20d1b 100644 --- a/airpcap_loader.c +++ b/airpcap_loader.c @@ -649,7 +649,7 @@ save_wlan_wireshark_wep_keys(GList* key_ls) * Get an error message string for a CANT_GET_INTERFACE_LIST error from * "get_airpcap_interface_list()". */ -gchar * +static gchar * cant_get_airpcap_if_list_error_message(const char *err_str) { return g_strdup_printf("Can't get list of Wireless interfaces: %s", err_str); @@ -1125,19 +1125,20 @@ free_airpcap_interface_list(GList *if_list) * Will return null if no device is found. */ GList* -get_airpcap_interface_list(int *err, char *err_str) +get_airpcap_interface_list(int *err, char **err_str) { GList *il = NULL; airpcap_if_info_t *if_info; int i, n_adapts; AirpcapDeviceDescription *devsList, *adListEntry; + char errbuf[PCAP_ERRBUF_SIZE]; - if (err) - *err = NO_AIRPCAP_INTERFACES_FOUND; - - if(!AirpcapLoaded || !g_PAirpcapGetDeviceList(&devsList, err_str)) + if(!AirpcapLoaded || !g_PAirpcapGetDeviceList(&devsList, errbuf)) { /* No interfaces, return il = NULL; */ + *err = CANT_GET_AIRPCAP_INTERFACE_LIST; + if (err_str != NULL) + *err_str = cant_get_airpcap_if_list_error_message(errbuf); return il; } @@ -1156,6 +1157,9 @@ get_airpcap_interface_list(int *err, char *err_str) { /* No interfaces, return il= NULL */ g_PAirpcapFreeDeviceList(devsList); + *err = NO_AIRPCAP_INTERFACES_FOUND; + if (err_str != NULL) + *err_str = NULL; return il; } @@ -1165,14 +1169,15 @@ get_airpcap_interface_list(int *err, char *err_str) adListEntry = devsList; for(i = 0; i < n_adapts; i++) { - if_info = airpcap_if_info_new(adListEntry->Name, adListEntry->Description); - il = g_list_append(il, if_info); + if_info = airpcap_if_info_new(adListEntry->Name, adListEntry->Description); + il = g_list_append(il, if_info); - adListEntry = adListEntry->next; + adListEntry = adListEntry->next; } g_PAirpcapFreeDeviceList(devsList); + *err = 0; return il; } |