nameres.hosts_file_handling shouldn't affect loading the profile "hosts"

file. That should be loaded no matter what if we have name resolution
enabled.

Add a name resolution test suite. Currently disabled until I can test it
on Windows.

svn path=/trunk/; revision=49657
This commit is contained in:
Gerald Combs 2013-05-31 21:40:26 +00:00
parent 6974bcecb1
commit bfe9967fc8
7 changed files with 229 additions and 7 deletions

View File

@ -2470,15 +2470,13 @@ host_name_lookup_init(void) {
}
/*
* Load the user's hosts file, if they have one.
* Load the user's hosts file no matter what, if they have one.
*/
if(!gbl_resolv_flags.load_hosts_file_from_profile_only){
hostspath = get_persconffile_path(ENAME_HOSTS, TRUE);
if (!read_hosts_file(hostspath) && errno != ENOENT) {
report_open_failure(hostspath, errno, FALSE);
}
g_free(hostspath);
hostspath = get_persconffile_path(ENAME_HOSTS, TRUE);
if (!read_hosts_file(hostspath) && errno != ENOENT) {
report_open_failure(hostspath, errno, FALSE);
}
g_free(hostspath);
/*
* Load the global hosts file, if we have one.
*/

Binary file not shown.

5
test/hosts.custom Normal file
View File

@ -0,0 +1,5 @@
# Custom profile hosts
# Matches addresses in dns+icmp.pcapng.gz
# $Id$
4.2.2.2 custom-4-2-2-2
174.137.42.65 custom-174-137-42-65

5
test/hosts.global Normal file
View File

@ -0,0 +1,5 @@
# Global hosts
# Matches addresses in dns+icmp.pcapng.gz
# $Id$
8.8.8.8 global-8-8-8-8
8.8.4.4 global-8-8-4-4

5
test/hosts.personal Normal file
View File

@ -0,0 +1,5 @@
# Default profile / personal hosts
# Matches addresses in dns+icmp.pcapng.gz
# $Id$
8.8.4.4 personal-8-8-4-4
4.2.2.2 personal-4-2-2-2

203
test/suite-nameres.sh Executable file
View File

@ -0,0 +1,203 @@
#!/bin/bash
#
# Test for correct name resolution behavior
#
# $Id$
#
# Wireshark - Network traffic analyzer
# By Gerald Combs <gerald@wireshark.org>
# Copyright 2005 Ulf Lamping
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License
# as published by the Free Software Foundation; either version 2
# of the License, or (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
#
# common exit status values
EXIT_OK=0
EXIT_COMMAND_LINE=1
EXIT_ERROR=2
TEST_KEYS_DIR="$PWD/keys/"
if [ "$WS_SYSTEM" == "Windows" ] ; then
TEST_KEYS_DIR="`cygpath -w $TEST_KEYS_DIR`"
fi
#TS_ARGS="-Tfields -e frame.number -e frame.time_epoch -e frame.time_delta"
TS_NR_ARGS="-r captures/dns+icmp.pcapng.gz"
TS_NR_ENV="WIRESHARK_RUN_FROM_BUILD_DIRECTORY=1 ${HOME_ENV}=${TEST_HOME}"
DIFF_OUT=./diff-output.txt
if [ "$WS_SYSTEM" == "Windows" ] ; then
CONF_PATH="fakehome/Wireshark"
else
CONF_PATH="fakehome/.wireshark"
fi
CUSTOM_PROFILE_NAME="Custom-$$"
CUSTOM_PROFILE_PATH="$CONF_PATH/profiles/$CUSTOM_PROFILE_NAME"
# nameres.network_name: True
# nameres.use_external_name_resolver: False
# nameres.hosts_file_handling: False
# Profile: Default
name_resolution_net_t_ext_f_hosts_f_global() {
env $TS_NR_ENV $TSHARK $TS_NR_ARGS \
-o "nameres.network_name: TRUE" \
-o "nameres.use_external_name_resolver: FALSE" \
-o "nameres.hosts_file_handling: FALSE" \
| grep global-8-8-8-8 > /dev/null 2>&1
RETURNVALUE=$?
if [ ! $RETURNVALUE -eq $EXIT_OK ]; then
test_step_failed "Failed to resolve 8.8.8.8 using global hosts file."
return
fi
test_step_ok
}
# nameres.network_name: True
# nameres.use_external_name_resolver: False
# nameres.hosts_file_handling: False
# Profile: Default
name_resolution_net_t_ext_f_hosts_f_personal() {
env $TS_NR_ENV $TSHARK $TS_NR_ARGS \
-o "nameres.network_name: TRUE" \
-o "nameres.use_external_name_resolver: FALSE" \
-o "nameres.hosts_file_handling: FALSE" \
| grep personal-8-8-4-4 > /dev/null 2>&1
RETURNVALUE=$?
if [ ! $RETURNVALUE -eq $EXIT_OK ]; then
test_step_failed "Failed to resolve 8.8.4.4 using personal hosts file."
return
fi
test_step_ok
}
# nameres.network_name: True
# nameres_use_external_name_resolver: False
# nameres.hosts_file_handling: False
# Profile: Custom
name_resolution_net_t_ext_f_hosts_f_custom() {
env $TS_NR_ENV $TSHARK $TS_NR_ARGS \
-o "nameres.network_name: TRUE" \
-o "nameres.use_external_name_resolver: FALSE" \
-o "nameres.hosts_file_handling: FALSE" \
-C "$CUSTOM_PROFILE_NAME" \
| grep custom-4-2-2-2 > /dev/null 2>&1
RETURNVALUE=$?
if [ ! $RETURNVALUE -eq $EXIT_OK ]; then
test_step_failed "Failed to resolve 4.2.2.2 using profile $CUSTOM_PROFILE_NAME."
return
fi
test_step_ok
}
# nameres.network_name: True
# nameres.use_external_name_resolver: False
# nameres.hosts_file_handling: True
# Profile: Default
name_resolution_net_t_ext_f_hosts_t_global() {
env $TS_NR_ENV $TSHARK $TS_NR_ARGS \
-o "nameres.network_name: TRUE" \
-o "nameres.use_external_name_resolver: FALSE" \
-o "nameres.hosts_file_handling: TRUE" \
| grep global-8-8-8-8 > /dev/null 2>&1
RETURNVALUE=$?
if [ ! $RETURNVALUE -ne $EXIT_OK ]; then
test_step_failed "Global hosts information showed up when it shouldn't."
return
fi
test_step_ok
}
# nameres.network_name: True
# nameres.use_external_name_resolver: False
# nameres.hosts_file_handling: True
# Profile: Default
name_resolution_net_t_ext_f_hosts_t_personal() {
env $TS_NR_ENV $TSHARK $TS_NR_ARGS \
-o "nameres.network_name: TRUE" \
-o "nameres.use_external_name_resolver: FALSE" \
-o "nameres.hosts_file_handling: TRUE" \
| grep personal-8-8-4-4 > /dev/null 2>&1
RETURNVALUE=$?
if [ ! $RETURNVALUE -eq $EXIT_OK ]; then
test_step_failed "Personal hosts information showed up when it shouldn't."
return
fi
test_step_ok
}
# nameres.network_name: True
# nameres_use_external_name_resolver: False
# nameres.hosts_file_handling: True
# Profile: Custom
name_resolution_net_t_ext_f_hosts_t_custom() {
env $TS_NR_ENV $TSHARK $TS_NR_ARGS \
-o "nameres.network_name: TRUE" \
-o "nameres.use_external_name_resolver: FALSE" \
-o "nameres.hosts_file_handling: TRUE" \
-C "$CUSTOM_PROFILE_NAME" \
| grep custom-4-2-2-2 > /dev/null 2>&1
RETURNVALUE=$?
if [ ! $RETURNVALUE -eq $EXIT_OK ]; then
test_step_failed "Failed to resolve 4.2.2.2 using profile $CUSTOM_PROFILE_NAME."
return
fi
test_step_ok
}
tshark_name_resolution_suite() {
test_step_add "Name resolution, no external, no profile hosts, global profile" name_resolution_net_t_ext_f_hosts_f_global
test_step_add "Name resolution, no external, no profile hosts, personal profile" name_resolution_net_t_ext_f_hosts_f_personal
test_step_add "Name resolution, no external, no profile hosts, custom profile" name_resolution_net_t_ext_f_hosts_f_custom
test_step_add "Name resolution, no external, profile hosts, global profile" name_resolution_net_t_ext_f_hosts_t_global
test_step_add "Name resolution, no external, profile hosts, personal profile" name_resolution_net_t_ext_f_hosts_t_personal
test_step_add "Name resolution, no external, profile hosts, custom profile" name_resolution_net_t_ext_f_hosts_t_custom
}
name_resolution_cleanup_step() {
rm -rf fakehome
rm -f ../hosts
}
name_resolution_prep_step() {
name_resolution_cleanup_step
mkdir -p "$CUSTOM_PROFILE_PATH"
cp hosts.global ../hosts
cp hosts.personal "$CONF_PATH/hosts"
cp hosts.custom "$CUSTOM_PROFILE_PATH/hosts"
}
name_resolution_suite() {
test_step_set_pre name_resolution_prep_step
test_step_set_post name_resolution_cleanup_step
test_suite_add "TShark name resolution" tshark_name_resolution_suite
}
#
# Editor modelines - http://www.wireshark.org/tools/modelines.html
#
# Local variables:
# c-basic-offset: 8
# tab-width: 8
# indent-tabs-mode: t
# End:
#
# vi: set shiftwidth=8 tabstop=8 noexpandtab:
# :indentSize=8:tabSize=8:noTabs=false:
#

View File

@ -55,6 +55,7 @@ Usage: $THIS [-c] [-h] [-s <suite>]
decryption
fileformats
io
nameres
prerequisites
unittests
FIN
@ -70,6 +71,7 @@ source suite-capture.sh
source suite-unittests.sh
source suite-fileformats.sh
source suite-decryption.sh
source suite-nameres.sh
#check prerequisites
@ -116,6 +118,7 @@ test_suite() {
test_suite_add "Unit tests" unittests_suite
test_suite_add "File formats" fileformats_suite
test_suite_add "Decryption" decryption_suite
# test_suite_add "Name Resolution" name_resolution_suite
}
@ -152,6 +155,9 @@ if [ -n "$RUN_SUITE" ] ; then
"io")
test_suite_run "File I/O" io_suite
exit $? ;;
"nameres")
test_suite_run "Name Resolution" name_resolution_suite
exit $? ;;
"prerequisites")
test_suite_run "Prerequisites" prerequisites_suite
exit $? ;;