From 2da56e7cf39aad9dfa82e41c37b4f626127461a0 Mon Sep 17 00:00:00 2001 From: Anoop Saldanha Date: Wed, 11 Jul 2012 15:33:38 +0530 Subject: [PATCH] bug 499 - update host os info enum map to use - instead of _ + add new unittests --- src/util-host-os-info.c | 1517 +++++++++++++++++++++++++++++++++-------------- 1 files changed, 1082 insertions(+), 435 deletions(-) diff --git a/src/util-host-os-info.c b/src/util-host-os-info.c index 2d02aae..d692f5d 100644 --- a/src/util-host-os-info.c +++ b/src/util-host-os-info.c @@ -41,10 +41,10 @@ SCEnumCharMap sc_hinfo_os_policy_map[ ] = { { "none", OS_POLICY_NONE }, { "bsd", OS_POLICY_BSD }, - { "bsd_right", OS_POLICY_BSD_RIGHT }, - { "old_linux", OS_POLICY_OLD_LINUX }, + { "bsd-right", OS_POLICY_BSD_RIGHT }, + { "old-linux", OS_POLICY_OLD_LINUX }, { "linux", OS_POLICY_LINUX }, - { "old_solaris", OS_POLICY_OLD_SOLARIS }, + { "old-solaris", OS_POLICY_OLD_SOLARIS }, { "solaris", OS_POLICY_SOLARIS }, { "hpux10", OS_POLICY_HPUX10 }, { "hpux11", OS_POLICY_HPUX11 }, @@ -58,6 +58,23 @@ SCEnumCharMap sc_hinfo_os_policy_map[ ] = { /** Radix tree that holds the host OS information */ static SCRadixTree *sc_hinfo_tree = NULL; +static SCRadixTree *sc_hinfo_tree_backup = NULL; + +static void SCHInfoCreateContextBackup(void) +{ + sc_hinfo_tree_backup = sc_hinfo_tree; + sc_hinfo_tree = NULL; + + return; +} + +static void SCHInfoRestoreContextBackup(void) +{ + sc_hinfo_tree = sc_hinfo_tree_backup; + sc_hinfo_tree_backup = NULL; + + return; +} /** * \brief Validates an IPV4 address and returns the network endian arranged @@ -437,34 +454,63 @@ void SCHInfoLoadFromConfig(void) */ int SCHInfoTestInvalidOSFlavour01(void) { - int result = 1; + SCHInfoCreateContextBackup(); + + int result = 0; - result &= (SCHInfoAddHostOSInfo("bamboo", "192.168.1.1", SC_HINFO_IS_IPV4) == - -1); - result &= (SCHInfoAddHostOSInfo("linux", "192.168.1.1", SC_HINFO_IS_IPV4) == - SCMapEnumNameToValue("linux", sc_hinfo_os_policy_map)); - result &= (SCHInfoAddHostOSInfo("windows", "192.168.1.1", SC_HINFO_IS_IPV4) == - SCMapEnumNameToValue("windows", sc_hinfo_os_policy_map)); - result &= (SCHInfoAddHostOSInfo("solaris", "192.168.1.1", SC_HINFO_IS_IPV4) == - SCMapEnumNameToValue("solaris", sc_hinfo_os_policy_map)); - result &= (SCHInfoAddHostOSInfo("hpux10", "192.168.1.1", SC_HINFO_IS_IPV4) == - SCMapEnumNameToValue("hpux10", sc_hinfo_os_policy_map)); - result &= (SCHInfoAddHostOSInfo("hpux11", "192.168.1.1", SC_HINFO_IS_IPV4) == - SCMapEnumNameToValue("hpux11", sc_hinfo_os_policy_map)); - result &= (SCHInfoAddHostOSInfo("irix", "192.168.1.1", SC_HINFO_IS_IPV4) == - SCMapEnumNameToValue("irix", sc_hinfo_os_policy_map)); - result &= (SCHInfoAddHostOSInfo("bsd", "192.168.1.1", SC_HINFO_IS_IPV4) == - SCMapEnumNameToValue("bsd", sc_hinfo_os_policy_map)); - result &= (SCHInfoAddHostOSInfo("old_linux", "192.168.1.1", SC_HINFO_IS_IPV4) == - SCMapEnumNameToValue("old_linux", sc_hinfo_os_policy_map)); - result &= (SCHInfoAddHostOSInfo("macos", "192.168.1.1", SC_HINFO_IS_IPV4) == - SCMapEnumNameToValue("macos", sc_hinfo_os_policy_map)); - result &= (SCHInfoAddHostOSInfo("vista", "192.168.1.1", SC_HINFO_IS_IPV4) == - SCMapEnumNameToValue("vista", sc_hinfo_os_policy_map)); - result &= (SCHInfoAddHostOSInfo("windows2k3", "192.168.1.1", SC_HINFO_IS_IPV4) == - SCMapEnumNameToValue("windows2k3", sc_hinfo_os_policy_map)); + if (SCHInfoAddHostOSInfo("bamboo", "192.168.1.1", SC_HINFO_IS_IPV4) != -1) { + goto end; + } + if (SCHInfoAddHostOSInfo("linux", "192.168.1.1", SC_HINFO_IS_IPV4) != + SCMapEnumNameToValue("linux", sc_hinfo_os_policy_map)) { + goto end; + } + if (SCHInfoAddHostOSInfo("windows", "192.168.1.1", SC_HINFO_IS_IPV4) != + SCMapEnumNameToValue("windows", sc_hinfo_os_policy_map)) { + goto end; + } + if (SCHInfoAddHostOSInfo("solaris", "192.168.1.1", SC_HINFO_IS_IPV4) != + SCMapEnumNameToValue("solaris", sc_hinfo_os_policy_map)) { + goto end; + } + if (SCHInfoAddHostOSInfo("hpux10", "192.168.1.1", SC_HINFO_IS_IPV4) != + SCMapEnumNameToValue("hpux10", sc_hinfo_os_policy_map)) { + goto end; + } + if (SCHInfoAddHostOSInfo("hpux11", "192.168.1.1", SC_HINFO_IS_IPV4) != + SCMapEnumNameToValue("hpux11", sc_hinfo_os_policy_map)) { + goto end; + } + if (SCHInfoAddHostOSInfo("irix", "192.168.1.1", SC_HINFO_IS_IPV4) != + SCMapEnumNameToValue("irix", sc_hinfo_os_policy_map)) { + goto end; + } + if (SCHInfoAddHostOSInfo("bsd", "192.168.1.1", SC_HINFO_IS_IPV4) != + SCMapEnumNameToValue("bsd", sc_hinfo_os_policy_map)) { + goto end; + } + if (SCHInfoAddHostOSInfo("old_linux", "192.168.1.1", SC_HINFO_IS_IPV4) != + SCMapEnumNameToValue("old_linux", sc_hinfo_os_policy_map)) { + goto end; + } + if (SCHInfoAddHostOSInfo("macos", "192.168.1.1", SC_HINFO_IS_IPV4) != + SCMapEnumNameToValue("macos", sc_hinfo_os_policy_map)) { + goto end; + } + if (SCHInfoAddHostOSInfo("vista", "192.168.1.1", SC_HINFO_IS_IPV4) != + SCMapEnumNameToValue("vista", sc_hinfo_os_policy_map)) { + goto end; + } + if (SCHInfoAddHostOSInfo("windows2k3", "192.168.1.1", SC_HINFO_IS_IPV4) != + SCMapEnumNameToValue("windows2k3", sc_hinfo_os_policy_map)) { + goto end; + } + result = 1; + + end: SCHInfoCleanResources(); + SCHInfoRestoreContextBackup(); return result; } @@ -475,20 +521,34 @@ int SCHInfoTestInvalidOSFlavour01(void) */ int SCHInfoTestInvalidIPV4Address02(void) { + SCHInfoCreateContextBackup(); + int result = 1; - result &= (SCHInfoAddHostOSInfo("linux", "192.168.1.566", SC_HINFO_IS_IPV4) == - -1); - result &= (SCHInfoAddHostOSInfo("linux", "192.168.1", SC_HINFO_IS_IPV4) == - -1); - result &= (SCHInfoAddHostOSInfo("linux", "192.", SC_HINFO_IS_IPV4) == -1); - result &= (SCHInfoAddHostOSInfo("linux", "192.168", SC_HINFO_IS_IPV4) == - -1); - result &= (SCHInfoAddHostOSInfo("linux", "", SC_HINFO_IS_IPV4) == -1); - result &= (SCHInfoAddHostOSInfo("linux", "192.168.1.1/33", SC_HINFO_IS_IPV4) == - -1); + if (SCHInfoAddHostOSInfo("linux", "192.168.1.566", SC_HINFO_IS_IPV4) != -1) { + goto end; + } + if (SCHInfoAddHostOSInfo("linux", "192.168.1", SC_HINFO_IS_IPV4 != -1)) { + goto end; + } + if (SCHInfoAddHostOSInfo("linux", "192.", SC_HINFO_IS_IPV4) != -1) { + goto end; + } + if (SCHInfoAddHostOSInfo("linux", "192.168", SC_HINFO_IS_IPV4) != -1) { + goto end; + } + if (SCHInfoAddHostOSInfo("linux", "", SC_HINFO_IS_IPV4) != -1) { + goto end; + } + if (SCHInfoAddHostOSInfo("linux", "192.168.1.1/33", SC_HINFO_IS_IPV4) != -1) { + goto end; + } + + result = 1; + end: SCHInfoCleanResources(); + SCHInfoRestoreContextBackup(); return result; } @@ -499,20 +559,36 @@ int SCHInfoTestInvalidIPV4Address02(void) */ int SCHInfoTestInvalidIPV6Address03(void) { + SCHInfoCreateContextBackup(); + int result = 1; - result &= (SCHInfoAddHostOSInfo("linux", "2362:7322", SC_HINFO_IS_IPV6) == - -1); - result &= (SCHInfoAddHostOSInfo("linux", "19YW:", SC_HINFO_IS_IPV6) == -1); - result &= (SCHInfoAddHostOSInfo("linux", "1235", SC_HINFO_IS_IPV6) == -1); - result &= (SCHInfoAddHostOSInfo("linux", "1922:236115:", SC_HINFO_IS_IPV6) == - -1); - result &= (SCHInfoAddHostOSInfo("linux", "", SC_HINFO_IS_IPV6) == -1); - result &= (SCHInfoAddHostOSInfo("linux", - "1921.6311:6241:6422:7352:ABBB:DDDD:EEEE/129", - SC_HINFO_IS_IPV6) == -1); + if (SCHInfoAddHostOSInfo("linux", "2362:7322", SC_HINFO_IS_IPV6) != -1) { + goto end; + } + if (SCHInfoAddHostOSInfo("linux", "19YW:", SC_HINFO_IS_IPV6) != -1) { + goto end; + } + if (SCHInfoAddHostOSInfo("linux", "1235", SC_HINFO_IS_IPV6) != -1) { + goto end; + } + if (SCHInfoAddHostOSInfo("linux", "1922:236115:", SC_HINFO_IS_IPV6) != -1) { + goto end; + } + if (SCHInfoAddHostOSInfo("linux", "", SC_HINFO_IS_IPV6) != -1) { + goto end; + } + if (SCHInfoAddHostOSInfo("linux", + "1921.6311:6241:6422:7352:ABBB:DDDD:EEEE/129", + SC_HINFO_IS_IPV6) != -1) { + goto end; + } + + result = 1; + end: SCHInfoCleanResources(); + SCHInfoRestoreContextBackup(); return result; } @@ -525,60 +601,106 @@ int SCHInfoTestInvalidIPV6Address03(void) */ int SCHInfoTestValidIPV4Address04(void) { + SCHInfoCreateContextBackup(); + int result = 1; - result &= (SCHInfoAddHostOSInfo("linux", "192.168.1.1", SC_HINFO_IS_IPV4) != - -1); - result &= (SCHInfoAddHostOSInfo("windows", "192.192.1.2", SC_HINFO_IS_IPV4) != - -1); - result &= (SCHInfoAddHostOSInfo("solaris", "192.168.1.100", SC_HINFO_IS_IPV4) != - -1); - result &= (SCHInfoAddHostOSInfo("hpux10", "192.168.2.4", SC_HINFO_IS_IPV4) != - -1); - result &= (SCHInfoAddHostOSInfo("linux", "192.192.1.5", SC_HINFO_IS_IPV4) != - -1); - result &= (SCHInfoAddHostOSInfo("vista", "192.168.10.20", SC_HINFO_IS_IPV4) != - -1); - result &= (SCHInfoAddHostOSInfo("solaris", "111.163.151.62", SC_HINFO_IS_IPV4) != - -1); - result &= (SCHInfoAddHostOSInfo("solaris", "11.1.120.210", SC_HINFO_IS_IPV4) != - -1); - result &= (SCHInfoAddHostOSInfo("linux", "19.18.110.210", SC_HINFO_IS_IPV4) != - -1); - result &= (SCHInfoAddHostOSInfo("windows", "19.18.120.110", SC_HINFO_IS_IPV4) != - -1); - result &= (SCHInfoAddHostOSInfo("hpux11", "191.168.11.128", SC_HINFO_IS_IPV4) != - -1); - result &= (SCHInfoAddHostOSInfo("vista", "191.168.11.192", SC_HINFO_IS_IPV4) != - -1); - - result &= (SCHInfoGetHostOSFlavour("192.168.1.1") == - SCMapEnumNameToValue("linux", sc_hinfo_os_policy_map)); - result &= (SCHInfoGetHostOSFlavour("192.168.1.2") == -1); - result &= (SCHInfoGetHostOSFlavour("192.168.1.100") == - SCMapEnumNameToValue("solaris", sc_hinfo_os_policy_map)); - result &= (SCHInfoGetHostOSFlavour("192.192.2.4") == -1); - result &= (SCHInfoGetHostOSFlavour("192.168.2.4") == - SCMapEnumNameToValue("hpux10", sc_hinfo_os_policy_map)); - result &= (SCHInfoGetHostOSFlavour("192.192.1.5") == - SCMapEnumNameToValue("linux", sc_hinfo_os_policy_map)); - result &= (SCHInfoGetHostOSFlavour("192.168.10.20") == - SCMapEnumNameToValue("vista", sc_hinfo_os_policy_map)); - result &= (SCHInfoGetHostOSFlavour("111.163.151.62") == - SCMapEnumNameToValue("solaris", sc_hinfo_os_policy_map)); - result &= (SCHInfoGetHostOSFlavour("11.1.120.210") == - SCMapEnumNameToValue("solaris", sc_hinfo_os_policy_map)); - result &= (SCHInfoGetHostOSFlavour("19.18.110.210") == - SCMapEnumNameToValue("linux", sc_hinfo_os_policy_map)); - result &= (SCHInfoGetHostOSFlavour("19.18.120.110") == - SCMapEnumNameToValue("windows", sc_hinfo_os_policy_map)); - result &= (SCHInfoGetHostOSFlavour("191.168.11.128") == - SCMapEnumNameToValue("hpux11", sc_hinfo_os_policy_map)); - result &= (SCHInfoGetHostOSFlavour("191.168.11.192") == - SCMapEnumNameToValue("vista", sc_hinfo_os_policy_map)); - result &= (SCHInfoGetHostOSFlavour("191.168.11.224") == -1); + if (SCHInfoAddHostOSInfo("linux", "192.168.1.1", SC_HINFO_IS_IPV4) == -1) { + goto end; + } + if (SCHInfoAddHostOSInfo("windows", "192.192.1.2", SC_HINFO_IS_IPV4) == -1) { + goto end; + } + if (SCHInfoAddHostOSInfo("solaris", "192.168.1.100", SC_HINFO_IS_IPV4) == -1) { + goto end; + } + if (SCHInfoAddHostOSInfo("hpux10", "192.168.2.4", SC_HINFO_IS_IPV4) == -1) { + goto end; + } + if (SCHInfoAddHostOSInfo("linux", "192.192.1.5", SC_HINFO_IS_IPV4) == -1) { + goto end; + } + if (SCHInfoAddHostOSInfo("vista", "192.168.10.20", SC_HINFO_IS_IPV4) == -1) { + goto end; + } + if (SCHInfoAddHostOSInfo("solaris", "111.163.151.62", SC_HINFO_IS_IPV4) == -1) { + goto end; + } + if (SCHInfoAddHostOSInfo("solaris", "11.1.120.210", SC_HINFO_IS_IPV4) == -1) { + goto end; + } + if (SCHInfoAddHostOSInfo("linux", "19.18.110.210", SC_HINFO_IS_IPV4) == -1) { + goto end; + } + if (SCHInfoAddHostOSInfo("windows", "19.18.120.110", SC_HINFO_IS_IPV4) == -1) { + goto end; + } + if (SCHInfoAddHostOSInfo("hpux11", "191.168.11.128", SC_HINFO_IS_IPV4) == -1) { + goto end; + } + if (SCHInfoAddHostOSInfo("vista", "191.168.11.192", SC_HINFO_IS_IPV4) == -1) { + goto end; + } + + if (SCHInfoGetHostOSFlavour("192.168.1.1") != + SCMapEnumNameToValue("linux", sc_hinfo_os_policy_map)) { + goto end; + } + if (SCHInfoGetHostOSFlavour("192.168.1.2") != -1) { + goto end; + } + if (SCHInfoGetHostOSFlavour("192.168.1.100") != + SCMapEnumNameToValue("solaris", sc_hinfo_os_policy_map)) { + goto end; + } + if (SCHInfoGetHostOSFlavour("192.192.2.4") != -1) { + goto end; + } + if (SCHInfoGetHostOSFlavour("192.168.2.4") != + SCMapEnumNameToValue("hpux10", sc_hinfo_os_policy_map)) { + goto end; + } + if (SCHInfoGetHostOSFlavour("192.192.1.5") != + SCMapEnumNameToValue("linux", sc_hinfo_os_policy_map)) { + goto end; + } + if (SCHInfoGetHostOSFlavour("192.168.10.20") != + SCMapEnumNameToValue("vista", sc_hinfo_os_policy_map)) { + goto end; + } + if (SCHInfoGetHostOSFlavour("111.163.151.62") != + SCMapEnumNameToValue("solaris", sc_hinfo_os_policy_map)) { + goto end; + } + if (SCHInfoGetHostOSFlavour("11.1.120.210") != + SCMapEnumNameToValue("solaris", sc_hinfo_os_policy_map)) { + goto end; + } + if (SCHInfoGetHostOSFlavour("19.18.110.210") != + SCMapEnumNameToValue("linux", sc_hinfo_os_policy_map)) { + goto end; + } + if (SCHInfoGetHostOSFlavour("19.18.120.110") != + SCMapEnumNameToValue("windows", sc_hinfo_os_policy_map)) { + goto end; + } + if (SCHInfoGetHostOSFlavour("191.168.11.128") != + SCMapEnumNameToValue("hpux11", sc_hinfo_os_policy_map)) { + goto end; + } + if (SCHInfoGetHostOSFlavour("191.168.11.192") != + SCMapEnumNameToValue("vista", sc_hinfo_os_policy_map)) { + goto end; + } + if (SCHInfoGetHostOSFlavour("191.168.11.224") != -1) { + goto end; + } + + result = 1; + end: SCHInfoCleanResources(); + SCHInfoRestoreContextBackup(); return result; } @@ -591,75 +713,135 @@ int SCHInfoTestValidIPV4Address04(void) */ int SCHInfoTestValidIPV4Address05(void) { + SCHInfoCreateContextBackup(); + struct in_addr in; int result = 1; - result &= (SCHInfoAddHostOSInfo("linux", "192.168.1.1", SC_HINFO_IS_IPV4) != - -1); - result &= (SCHInfoAddHostOSInfo("windows", "192.192.1.2", SC_HINFO_IS_IPV4) != - -1); - result &= (SCHInfoAddHostOSInfo("solaris", "192.168.1.100", SC_HINFO_IS_IPV4) != - -1); - result &= (SCHInfoAddHostOSInfo("hpux10", "192.168.2.4", SC_HINFO_IS_IPV4) != - -1); - result &= (SCHInfoAddHostOSInfo("linux", "192.192.1.5", SC_HINFO_IS_IPV4) != - -1); - result &= (SCHInfoAddHostOSInfo("vista", "192.168.10.20", SC_HINFO_IS_IPV4) != - -1); - result &= (SCHInfoAddHostOSInfo("solaris", "111.163.151.62", SC_HINFO_IS_IPV4) != - -1); - result &= (SCHInfoAddHostOSInfo("hpux11", "111.162.208.124/20", SC_HINFO_IS_IPV4) != - -1); - result &= (SCHInfoAddHostOSInfo("windows", "111.162.240.1", SC_HINFO_IS_IPV4) != - -1); - result &= (SCHInfoAddHostOSInfo("solaris", "111.162.214.100", SC_HINFO_IS_IPV4) != - -1); - result &= (SCHInfoAddHostOSInfo("vista", "111.162.208.100", SC_HINFO_IS_IPV4) != - -1); - result &= (SCHInfoAddHostOSInfo("linux", "111.162.194.112", SC_HINFO_IS_IPV4) != - -1); - - result &= (SCHInfoGetHostOSFlavour("192.168.1.1") == - SCMapEnumNameToValue("linux", sc_hinfo_os_policy_map)); - result &= (SCHInfoGetHostOSFlavour("192.168.1.2") == -1); - result &= (SCHInfoGetHostOSFlavour("192.168.1.100") == - SCMapEnumNameToValue("solaris", sc_hinfo_os_policy_map)); - result &= (SCHInfoGetHostOSFlavour("192.192.2.4") == -1); - result &= (SCHInfoGetHostOSFlavour("192.168.2.4") == - SCMapEnumNameToValue("hpux10", sc_hinfo_os_policy_map)); - result &= (SCHInfoGetHostOSFlavour("192.192.1.5") == - SCMapEnumNameToValue("linux", sc_hinfo_os_policy_map)); - result &= (SCHInfoGetHostOSFlavour("192.168.10.20") == - SCMapEnumNameToValue("vista", sc_hinfo_os_policy_map)); - result &= (SCHInfoGetHostOSFlavour("111.163.151.62") == - SCMapEnumNameToValue("solaris", sc_hinfo_os_policy_map)); - result &= (SCHInfoGetHostOSFlavour("111.162.208.0") == - SCMapEnumNameToValue("hpux11", sc_hinfo_os_policy_map)); - result &= (SCHInfoGetHostOSFlavour("111.162.210.1") == - SCMapEnumNameToValue("hpux11", sc_hinfo_os_policy_map)); - result &= (SCHInfoGetHostOSFlavour("111.162.214.1") == - SCMapEnumNameToValue("hpux11", sc_hinfo_os_policy_map)); - result &= (SCHInfoGetHostOSFlavour("111.162.0.0") == -1); - result &= (SCHInfoGetHostOSFlavour("111.162.240.112") == -1); - result &= (SCHInfoGetHostOSFlavour("111.162.240.1") == - SCMapEnumNameToValue("windows", sc_hinfo_os_policy_map)); - result &= (SCHInfoGetHostOSFlavour("111.162.214.100") == - SCMapEnumNameToValue("solaris", sc_hinfo_os_policy_map)); - if (inet_pton(AF_INET, "111.162.208.100", &in) < 0) - result = 0; - result &= (SCHInfoGetIPv4HostOSFlavour((uint8_t *)&in) == - SCMapEnumNameToValue("vista", sc_hinfo_os_policy_map)); - result &= (SCHInfoGetHostOSFlavour("111.162.194.112") == - SCMapEnumNameToValue("linux", sc_hinfo_os_policy_map)); - result &= (SCHInfoGetHostOSFlavour("111.162.208.200") == - SCMapEnumNameToValue("hpux11", sc_hinfo_os_policy_map)); - if (inet_pton(AF_INET, "111.162.208.200", &in) < 0) - result = 0; - result &= (SCHInfoGetIPv4HostOSFlavour((uint8_t *)&in) == - SCMapEnumNameToValue("hpux11", sc_hinfo_os_policy_map)); - result &= (SCHInfoGetHostOSFlavour("111.162.200.201") == -1); + if (SCHInfoAddHostOSInfo("linux", "192.168.1.1", SC_HINFO_IS_IPV4) == -1) { + goto end; + } + if (SCHInfoAddHostOSInfo("windows", "192.192.1.2", SC_HINFO_IS_IPV4) == -1) { + goto end; + } + if (SCHInfoAddHostOSInfo("solaris", "192.168.1.100", SC_HINFO_IS_IPV4) == -1) { + goto end; + } + if (SCHInfoAddHostOSInfo("hpux10", "192.168.2.4", SC_HINFO_IS_IPV4) == -1) { + goto end; + } + if (SCHInfoAddHostOSInfo("linux", "192.192.1.5", SC_HINFO_IS_IPV4) == -1) { + goto end; + } + if (SCHInfoAddHostOSInfo("vista", "192.168.10.20", SC_HINFO_IS_IPV4) == -1) { + goto end; + } + if (SCHInfoAddHostOSInfo("solaris", "111.163.151.62", SC_HINFO_IS_IPV4) == -1) { + goto end; + } + if (SCHInfoAddHostOSInfo("hpux11", "111.162.208.124/20", SC_HINFO_IS_IPV4) == -1) { + goto end; + } + if (SCHInfoAddHostOSInfo("windows", "111.162.240.1", SC_HINFO_IS_IPV4) == -1) { + goto end; + } + if (SCHInfoAddHostOSInfo("solaris", "111.162.214.100", SC_HINFO_IS_IPV4) == -1) { + goto end; + } + if (SCHInfoAddHostOSInfo("vista", "111.162.208.100", SC_HINFO_IS_IPV4) == -1) { + goto end; + } + if (SCHInfoAddHostOSInfo("linux", "111.162.194.112", SC_HINFO_IS_IPV4) == -1) { + goto end; + } + if (SCHInfoGetHostOSFlavour("192.168.1.1") != + SCMapEnumNameToValue("linux", sc_hinfo_os_policy_map)) { + goto end; + } + if (SCHInfoGetHostOSFlavour("192.168.1.2") != -1) { + goto end; + } + if (SCHInfoGetHostOSFlavour("192.168.1.100") != + SCMapEnumNameToValue("solaris", sc_hinfo_os_policy_map)) { + goto end; + } + if (SCHInfoGetHostOSFlavour("192.192.2.4") != -1) { + goto end; + } + if (SCHInfoGetHostOSFlavour("192.168.2.4") != + SCMapEnumNameToValue("hpux10", sc_hinfo_os_policy_map)) { + goto end; + } + if (SCHInfoGetHostOSFlavour("192.192.1.5") != + SCMapEnumNameToValue("linux", sc_hinfo_os_policy_map)) { + goto end; + } + if (SCHInfoGetHostOSFlavour("192.168.10.20") != + SCMapEnumNameToValue("vista", sc_hinfo_os_policy_map)) { + goto end; + } + if (SCHInfoGetHostOSFlavour("111.163.151.62") != + SCMapEnumNameToValue("solaris", sc_hinfo_os_policy_map)) { + goto end; + } + if (SCHInfoGetHostOSFlavour("111.162.208.0") != + SCMapEnumNameToValue("hpux11", sc_hinfo_os_policy_map)) { + goto end; + } + if (SCHInfoGetHostOSFlavour("111.162.210.1") != + SCMapEnumNameToValue("hpux11", sc_hinfo_os_policy_map)) { + goto end; + } + if (SCHInfoGetHostOSFlavour("111.162.214.1") != + SCMapEnumNameToValue("hpux11", sc_hinfo_os_policy_map)) { + goto end; + } + if (SCHInfoGetHostOSFlavour("111.162.0.0") != -1) { + goto end; + } + if (SCHInfoGetHostOSFlavour("111.162.240.112") != -1) { + goto end; + } + if (SCHInfoGetHostOSFlavour("111.162.240.1") != + SCMapEnumNameToValue("windows", sc_hinfo_os_policy_map)) { + goto end; + } + if (SCHInfoGetHostOSFlavour("111.162.214.100") != + SCMapEnumNameToValue("solaris", sc_hinfo_os_policy_map)) { + goto end; + } + if (inet_pton(AF_INET, "111.162.208.100", &in) < 0) { + goto end; + } + if (SCHInfoGetIPv4HostOSFlavour((uint8_t *)&in) != + SCMapEnumNameToValue("vista", sc_hinfo_os_policy_map)) { + goto end; + } + if (SCHInfoGetHostOSFlavour("111.162.194.112") != + SCMapEnumNameToValue("linux", sc_hinfo_os_policy_map)) { + goto end; + } + if (SCHInfoGetHostOSFlavour("111.162.208.200") != + SCMapEnumNameToValue("hpux11", sc_hinfo_os_policy_map)) { + goto end; + } + if (inet_pton(AF_INET, "111.162.208.200", &in) < 0) { + goto end; + } + if (SCHInfoGetIPv4HostOSFlavour((uint8_t *)&in) != + SCMapEnumNameToValue("hpux11", sc_hinfo_os_policy_map)) { + goto end; + } + if (SCHInfoGetHostOSFlavour("111.162.200.201") != -1) { + goto end; + } + + result = 1; + + end: SCHInfoCleanResources(); + SCHInfoRestoreContextBackup(); return result; } @@ -672,75 +854,130 @@ int SCHInfoTestValidIPV4Address05(void) */ int SCHInfoTestValidIPV6Address06(void) { + SCHInfoCreateContextBackup(); + int result = 1; - result &= (SCHInfoAddHostOSInfo("linux", - "2351:2512:6211:6246:235A:6242:2352:62AD", - SC_HINFO_IS_IPV6) != -1); - result &= (SCHInfoAddHostOSInfo("windows", - "6961:6121:2132:6241:423A:2135:2461:621D", - SC_HINFO_IS_IPV6) != -1); - result &= (SCHInfoAddHostOSInfo("solaris", - "DD13:613D:F312:62DD:6213:421A:6212:2652", - SC_HINFO_IS_IPV6) != -1); - result &= (SCHInfoAddHostOSInfo("hpux10", - "9891:2131:2151:6426:1342:674D:622F:2342", - SC_HINFO_IS_IPV6) != -1); - result &= (SCHInfoAddHostOSInfo("linux", - "3525:2351:4223:6211:2311:2667:6242:2154", - SC_HINFO_IS_IPV6) != -1); - result &= (SCHInfoAddHostOSInfo("vista", - "1511:6211:6726:7777:1212:2333:6222:7722", - SC_HINFO_IS_IPV6) != -1); - result &= (SCHInfoAddHostOSInfo("solaris", - "2666:6222:7222:2335:6223:7722:3425:2362", - SC_HINFO_IS_IPV6) != -1); - result &= (SCHInfoAddHostOSInfo("solaris", - "8762:2352:6241:7245:EE23:21AD:2312:622C", - SC_HINFO_IS_IPV6) != -1); - result &= (SCHInfoAddHostOSInfo("linux", - "6422:EE1A:2621:34AD:2462:432D:642E:E13A", - SC_HINFO_IS_IPV6) != -1); - result &= (SCHInfoAddHostOSInfo("windows", - "3521:7622:6241:6242:7277:1234:2352:6234", - SC_HINFO_IS_IPV6) != -1); - result &= (SCHInfoAddHostOSInfo("hpux11", - "2141:6232:6252:2223:7734:2345:6245:6222", - SC_HINFO_IS_IPV6) != -1); - result &= (SCHInfoAddHostOSInfo("vista", - "5222:6432:6432:2322:6662:3423:4322:3245", - SC_HINFO_IS_IPV6) != -1); - - result &= (SCHInfoGetHostOSFlavour("2351:2512:6211:6246:235A:6242:2352:62AD") == - SCMapEnumNameToValue("linux", sc_hinfo_os_policy_map)); - result &= (SCHInfoGetHostOSFlavour("2351:2512:6211:6246:235A:6242:2352:6FFFE") == - -1); - result &= (SCHInfoGetHostOSFlavour("DD13:613D:F312:62DD:6213:421A:6212:2652") == - SCMapEnumNameToValue("solaris", sc_hinfo_os_policy_map)); - result &= (SCHInfoGetHostOSFlavour("DD13:613D:F312:62DD:6213:421A:6212:2222") == - -1); - result &= (SCHInfoGetHostOSFlavour("9891:2131:2151:6426:1342:674D:622F:2342") == - SCMapEnumNameToValue("hpux10", sc_hinfo_os_policy_map)); - result &= (SCHInfoGetHostOSFlavour("3525:2351:4223:6211:2311:2667:6242:2154") == - SCMapEnumNameToValue("linux", sc_hinfo_os_policy_map)); - result &= (SCHInfoGetHostOSFlavour("1511:6211:6726:7777:1212:2333:6222:7722") == - SCMapEnumNameToValue("vista", sc_hinfo_os_policy_map)); - result &= (SCHInfoGetHostOSFlavour("2666:6222:7222:2335:6223:7722:3425:2362") == - SCMapEnumNameToValue("solaris", sc_hinfo_os_policy_map)); - result &= (SCHInfoGetHostOSFlavour("8762:2352:6241:7245:EE23:21AD:2312:622C") == - SCMapEnumNameToValue("solaris", sc_hinfo_os_policy_map)); - result &= (SCHInfoGetHostOSFlavour("6422:EE1A:2621:34AD:2462:432D:642E:E13A") == - SCMapEnumNameToValue("linux", sc_hinfo_os_policy_map)); - result &= (SCHInfoGetHostOSFlavour("3521:7622:6241:6242:7277:1234:2352:6234") == - SCMapEnumNameToValue("windows", sc_hinfo_os_policy_map)); - result &= (SCHInfoGetHostOSFlavour("2141:6232:6252:2223:7734:2345:6245:6222") == - SCMapEnumNameToValue("hpux11", sc_hinfo_os_policy_map)); - result &= (SCHInfoGetHostOSFlavour("5222:6432:6432:2322:6662:3423:4322:3245") == - SCMapEnumNameToValue("vista", sc_hinfo_os_policy_map)); - result &= (SCHInfoGetHostOSFlavour("5222:6432:6432:2322:6662:3423:4322:DDDD") == - -1); + if (SCHInfoAddHostOSInfo("linux", + "2351:2512:6211:6246:235A:6242:2352:62AD", + SC_HINFO_IS_IPV6) == -1) { + goto end; + } + if (SCHInfoAddHostOSInfo("windows", + "6961:6121:2132:6241:423A:2135:2461:621D", + SC_HINFO_IS_IPV6) == -1) { + goto end; + } + if (SCHInfoAddHostOSInfo("solaris", + "DD13:613D:F312:62DD:6213:421A:6212:2652", + SC_HINFO_IS_IPV6) == -1) { + goto end; + } + if (SCHInfoAddHostOSInfo("hpux10", + "9891:2131:2151:6426:1342:674D:622F:2342", + SC_HINFO_IS_IPV6) == -1) { + goto end; + } + if (SCHInfoAddHostOSInfo("linux", + "3525:2351:4223:6211:2311:2667:6242:2154", + SC_HINFO_IS_IPV6) == -1) { + goto end; + } + if (SCHInfoAddHostOSInfo("vista", + "1511:6211:6726:7777:1212:2333:6222:7722", + SC_HINFO_IS_IPV6) == -1) { + goto end; + } + if (SCHInfoAddHostOSInfo("solaris", + "2666:6222:7222:2335:6223:7722:3425:2362", + SC_HINFO_IS_IPV6) == -1) { + goto end; + } + if (SCHInfoAddHostOSInfo("solaris", + "8762:2352:6241:7245:EE23:21AD:2312:622C", + SC_HINFO_IS_IPV6) == -1) { + goto end; + } + if (SCHInfoAddHostOSInfo("linux", + "6422:EE1A:2621:34AD:2462:432D:642E:E13A", + SC_HINFO_IS_IPV6) == -1) { + goto end; + } + if (SCHInfoAddHostOSInfo("windows", + "3521:7622:6241:6242:7277:1234:2352:6234", + SC_HINFO_IS_IPV6) == -1) { + goto end; + } + if (SCHInfoAddHostOSInfo("hpux11", + "2141:6232:6252:2223:7734:2345:6245:6222", + SC_HINFO_IS_IPV6) == -1) { + goto end; + } + if (SCHInfoAddHostOSInfo("vista", + "5222:6432:6432:2322:6662:3423:4322:3245", + SC_HINFO_IS_IPV6) == -1) { + goto end; + } + if (SCHInfoGetHostOSFlavour("2351:2512:6211:6246:235A:6242:2352:62AD") != + SCMapEnumNameToValue("linux", sc_hinfo_os_policy_map)) { + goto end; + } + if (SCHInfoGetHostOSFlavour("2351:2512:6211:6246:235A:6242:2352:6FFFE") != -1) { + goto end; + } + if (SCHInfoGetHostOSFlavour("DD13:613D:F312:62DD:6213:421A:6212:2652") != + SCMapEnumNameToValue("solaris", sc_hinfo_os_policy_map)) { + goto end; + } + if (SCHInfoGetHostOSFlavour("DD13:613D:F312:62DD:6213:421A:6212:2222") != -1) { + goto end; + } + if (SCHInfoGetHostOSFlavour("9891:2131:2151:6426:1342:674D:622F:2342") != + SCMapEnumNameToValue("hpux10", sc_hinfo_os_policy_map)) { + goto end; + } + if (SCHInfoGetHostOSFlavour("3525:2351:4223:6211:2311:2667:6242:2154") != + SCMapEnumNameToValue("linux", sc_hinfo_os_policy_map)) { + goto end; + } + if (SCHInfoGetHostOSFlavour("1511:6211:6726:7777:1212:2333:6222:7722") != + SCMapEnumNameToValue("vista", sc_hinfo_os_policy_map)) { + goto end; + } + if (SCHInfoGetHostOSFlavour("2666:6222:7222:2335:6223:7722:3425:2362") != + SCMapEnumNameToValue("solaris", sc_hinfo_os_policy_map)) { + goto end; + } + if (SCHInfoGetHostOSFlavour("8762:2352:6241:7245:EE23:21AD:2312:622C") != + SCMapEnumNameToValue("solaris", sc_hinfo_os_policy_map)) { + goto end; + } + if (SCHInfoGetHostOSFlavour("6422:EE1A:2621:34AD:2462:432D:642E:E13A") != + SCMapEnumNameToValue("linux", sc_hinfo_os_policy_map)) { + goto end; + } + if (SCHInfoGetHostOSFlavour("3521:7622:6241:6242:7277:1234:2352:6234") != + SCMapEnumNameToValue("windows", sc_hinfo_os_policy_map)) { + goto end; + } + if (SCHInfoGetHostOSFlavour("2141:6232:6252:2223:7734:2345:6245:6222") != + SCMapEnumNameToValue("hpux11", sc_hinfo_os_policy_map)) { + goto end; + } + if (SCHInfoGetHostOSFlavour("5222:6432:6432:2322:6662:3423:4322:3245") != + SCMapEnumNameToValue("vista", sc_hinfo_os_policy_map)) { + goto end; + } + if (SCHInfoGetHostOSFlavour("5222:6432:6432:2322:6662:3423:4322:DDDD") != -1) { + goto end; + } + + result = 1; + + end: SCHInfoCleanResources(); + SCHInfoRestoreContextBackup(); return result; } @@ -753,85 +990,150 @@ int SCHInfoTestValidIPV6Address06(void) */ int SCHInfoTestValidIPV6Address07(void) { + SCHInfoCreateContextBackup(); + int result = 1; - result &= (SCHInfoAddHostOSInfo("linux", - "2351:2512:6211:6246:235A:6242:2352:62AD", - SC_HINFO_IS_IPV6) != -1); - result &= (SCHInfoAddHostOSInfo("windows", - "6961:6121:2132:6241:423A:2135:2461:621D", - SC_HINFO_IS_IPV6) != -1); - result &= (SCHInfoAddHostOSInfo("solaris", - "DD13:613D:F312:62DD:6213:421A:6212:2652", - SC_HINFO_IS_IPV6) != -1); - result &= (SCHInfoAddHostOSInfo("hpux10", - "9891:2131:2151:6426:1342:674D:622F:2342", - SC_HINFO_IS_IPV6) != -1); - result &= (SCHInfoAddHostOSInfo("linux", - "3525:2351:4223:6211:2311:2667:6242:2154", - SC_HINFO_IS_IPV6) != -1); - result &= (SCHInfoAddHostOSInfo("vista", - "1511:6211:6726:7777:1212:2333:6222:7722", - SC_HINFO_IS_IPV6) != -1); - result &= (SCHInfoAddHostOSInfo("solaris", - "2666:6222:7222:2335:6223:7722:3425:2362", - SC_HINFO_IS_IPV6) != -1); - result &= (SCHInfoAddHostOSInfo("solaris", - "8762:2352:6241:7245:EE23:21AD:2312:622C/68", - SC_HINFO_IS_IPV6) != -1); - result &= (SCHInfoAddHostOSInfo("linux", - "8762:2352:6241:7245:EE23:21AD:2412:622C", - SC_HINFO_IS_IPV6) != -1); - result &= (SCHInfoAddHostOSInfo("windows", - "8762:2352:6241:7245:EE23:21AD:FFFF:622C", - SC_HINFO_IS_IPV6) != -1); - result &= (SCHInfoAddHostOSInfo("hpux11", - "8762:2352:6241:7245:EE23:21AD:2312:62FF", - SC_HINFO_IS_IPV6) != -1); - result &= (SCHInfoAddHostOSInfo("vista", - "8762:2352:6241:7245:EE23:21AD:2121:1212", - SC_HINFO_IS_IPV6) != -1); - - result &= (SCHInfoGetHostOSFlavour("2351:2512:6211:6246:235A:6242:2352:62AD") == - SCMapEnumNameToValue("linux", sc_hinfo_os_policy_map)); - result &= (SCHInfoGetHostOSFlavour("2351:2512:6211:6246:235A:6242:2352:6FFFE") == - -1); - result &= (SCHInfoGetHostOSFlavour("DD13:613D:F312:62DD:6213:421A:6212:2652") == - SCMapEnumNameToValue("solaris", sc_hinfo_os_policy_map)); - result &= (SCHInfoGetHostOSFlavour("DD13:613D:F312:62DD:6213:421A:6212:2222") == - -1); - result &= (SCHInfoGetHostOSFlavour("9891:2131:2151:6426:1342:674D:622F:2342") == - SCMapEnumNameToValue("hpux10", sc_hinfo_os_policy_map)); - result &= (SCHInfoGetHostOSFlavour("3525:2351:4223:6211:2311:2667:6242:2154") == - SCMapEnumNameToValue("linux", sc_hinfo_os_policy_map)); - result &= (SCHInfoGetHostOSFlavour("1511:6211:6726:7777:1212:2333:6222:7722") == - SCMapEnumNameToValue("vista", sc_hinfo_os_policy_map)); - result &= (SCHInfoGetHostOSFlavour("2666:6222:7222:2335:6223:7722:3425:2362") == - SCMapEnumNameToValue("solaris", sc_hinfo_os_policy_map)); - result &= (SCHInfoGetHostOSFlavour("8762:2352:6241:7245:EE23:21AD:2312:622C") == - SCMapEnumNameToValue("solaris", sc_hinfo_os_policy_map)); - result &= (SCHInfoGetHostOSFlavour("8762:2352:6241:7245:EE23:21AD:2412:622C") == - SCMapEnumNameToValue("linux", sc_hinfo_os_policy_map)); - result &= (SCHInfoGetHostOSFlavour("8762:2352:6241:7245:EE23:21AD:FFFF:622C") == - SCMapEnumNameToValue("windows", sc_hinfo_os_policy_map)); - result &= (SCHInfoGetHostOSFlavour("8762:2352:6241:7245:EE23:21AD:2312:62FF") == - SCMapEnumNameToValue("hpux11", sc_hinfo_os_policy_map)); - result &= (SCHInfoGetHostOSFlavour("8762:2352:6241:7245:EE23:21AD:2121:1212") == - SCMapEnumNameToValue("vista", sc_hinfo_os_policy_map)); - result &= (SCHInfoGetHostOSFlavour("5222:6432:6432:2322:6662:3423:4322:DDDD") == - -1); - result &= (SCHInfoGetHostOSFlavour("8762:2352:6241:7245:EE23:21AD:2121:1DDD") == - SCMapEnumNameToValue("solaris", sc_hinfo_os_policy_map)); - result &= (SCHInfoGetHostOSFlavour("8762:2352:6241:7245:EE23:FFFF:2121:1DDD") == - SCMapEnumNameToValue("solaris", sc_hinfo_os_policy_map)); - result &= (SCHInfoGetHostOSFlavour("8762:2352:6241:7245:EE23:21AD:2312:622C") == - SCMapEnumNameToValue("solaris", sc_hinfo_os_policy_map)); - result &= (SCHInfoGetHostOSFlavour("8762:2352:6241:7245:EE00:0000:0000:0000") == - SCMapEnumNameToValue("solaris", sc_hinfo_os_policy_map)); - result &= (SCHInfoGetHostOSFlavour("8762:2352:6241:7245:E000:0000:0000:0000") == - SCMapEnumNameToValue("solaris", sc_hinfo_os_policy_map)); + if (SCHInfoAddHostOSInfo("linux", + "2351:2512:6211:6246:235A:6242:2352:62AD", + SC_HINFO_IS_IPV6) == -1) { + goto end; + } + if (SCHInfoAddHostOSInfo("windows", + "6961:6121:2132:6241:423A:2135:2461:621D", + SC_HINFO_IS_IPV6) == -1) { + goto end; + } + if (SCHInfoAddHostOSInfo("solaris", + "DD13:613D:F312:62DD:6213:421A:6212:2652", + SC_HINFO_IS_IPV6) == -1) { + goto end; + } + if (SCHInfoAddHostOSInfo("hpux10", + "9891:2131:2151:6426:1342:674D:622F:2342", + SC_HINFO_IS_IPV6) == -1) { + goto end; + } + if (SCHInfoAddHostOSInfo("linux", + "3525:2351:4223:6211:2311:2667:6242:2154", + SC_HINFO_IS_IPV6) == -1) { + goto end; + } + if (SCHInfoAddHostOSInfo("vista", + "1511:6211:6726:7777:1212:2333:6222:7722", + SC_HINFO_IS_IPV6) == -1) { + goto end; + } + if (SCHInfoAddHostOSInfo("solaris", + "2666:6222:7222:2335:6223:7722:3425:2362", + SC_HINFO_IS_IPV6) == -1) { + goto end; + } + if (SCHInfoAddHostOSInfo("solaris", + "8762:2352:6241:7245:EE23:21AD:2312:622C/68", + SC_HINFO_IS_IPV6) == -1) { + goto end; + } + if (SCHInfoAddHostOSInfo("linux", + "8762:2352:6241:7245:EE23:21AD:2412:622C", + SC_HINFO_IS_IPV6) == -1) { + goto end; + } + if (SCHInfoAddHostOSInfo("windows", + "8762:2352:6241:7245:EE23:21AD:FFFF:622C", + SC_HINFO_IS_IPV6) == -1) { + goto end; + } + if (SCHInfoAddHostOSInfo("hpux11", + "8762:2352:6241:7245:EE23:21AD:2312:62FF", + SC_HINFO_IS_IPV6) == -1) { + goto end; + } + if (SCHInfoAddHostOSInfo("vista", + "8762:2352:6241:7245:EE23:21AD:2121:1212", + SC_HINFO_IS_IPV6) == -1) { + goto end; + } + + if (SCHInfoGetHostOSFlavour("2351:2512:6211:6246:235A:6242:2352:62AD") != + SCMapEnumNameToValue("linux", sc_hinfo_os_policy_map)) { + goto end; + } + if (SCHInfoGetHostOSFlavour("2351:2512:6211:6246:235A:6242:2352:6FFFE") != -1) { + goto end; + } + if (SCHInfoGetHostOSFlavour("DD13:613D:F312:62DD:6213:421A:6212:2652") != + SCMapEnumNameToValue("solaris", sc_hinfo_os_policy_map)) { + goto end; + } + if (SCHInfoGetHostOSFlavour("DD13:613D:F312:62DD:6213:421A:6212:2222") != -1) { + goto end; + } + if (SCHInfoGetHostOSFlavour("9891:2131:2151:6426:1342:674D:622F:2342") != + SCMapEnumNameToValue("hpux10", sc_hinfo_os_policy_map)) { + goto end; + } + if (SCHInfoGetHostOSFlavour("3525:2351:4223:6211:2311:2667:6242:2154") != + SCMapEnumNameToValue("linux", sc_hinfo_os_policy_map)) { + goto end; + } + if (SCHInfoGetHostOSFlavour("1511:6211:6726:7777:1212:2333:6222:7722") != + SCMapEnumNameToValue("vista", sc_hinfo_os_policy_map)) { + goto end; + } + if (SCHInfoGetHostOSFlavour("2666:6222:7222:2335:6223:7722:3425:2362") != + SCMapEnumNameToValue("solaris", sc_hinfo_os_policy_map)) { + goto end; + } + if (SCHInfoGetHostOSFlavour("8762:2352:6241:7245:EE23:21AD:2312:622C") != + SCMapEnumNameToValue("solaris", sc_hinfo_os_policy_map)) { + goto end; + } + if (SCHInfoGetHostOSFlavour("8762:2352:6241:7245:EE23:21AD:2412:622C") != + SCMapEnumNameToValue("linux", sc_hinfo_os_policy_map)) { + goto end; + } + if (SCHInfoGetHostOSFlavour("8762:2352:6241:7245:EE23:21AD:FFFF:622C") != + SCMapEnumNameToValue("windows", sc_hinfo_os_policy_map)) { + goto end; + } + if (SCHInfoGetHostOSFlavour("8762:2352:6241:7245:EE23:21AD:2312:62FF") != + SCMapEnumNameToValue("hpux11", sc_hinfo_os_policy_map)) { + goto end; + } + if (SCHInfoGetHostOSFlavour("8762:2352:6241:7245:EE23:21AD:2121:1212") != + SCMapEnumNameToValue("vista", sc_hinfo_os_policy_map)) { + goto end; + } + if (SCHInfoGetHostOSFlavour("5222:6432:6432:2322:6662:3423:4322:DDDD") != -1) { + goto end; + } + if (SCHInfoGetHostOSFlavour("8762:2352:6241:7245:EE23:21AD:2121:1DDD") != + SCMapEnumNameToValue("solaris", sc_hinfo_os_policy_map)) { + goto end; + } + if (SCHInfoGetHostOSFlavour("8762:2352:6241:7245:EE23:FFFF:2121:1DDD") != + SCMapEnumNameToValue("solaris", sc_hinfo_os_policy_map)) { + goto end; + } + if (SCHInfoGetHostOSFlavour("8762:2352:6241:7245:EE23:21AD:2312:622C") != + SCMapEnumNameToValue("solaris", sc_hinfo_os_policy_map)) { + goto end; + } + if (SCHInfoGetHostOSFlavour("8762:2352:6241:7245:EE00:0000:0000:0000") != + SCMapEnumNameToValue("solaris", sc_hinfo_os_policy_map)) { + goto end; + } + if (SCHInfoGetHostOSFlavour("8762:2352:6241:7245:E000:0000:0000:0000") != + SCMapEnumNameToValue("solaris", sc_hinfo_os_policy_map)) { + goto end; + } + + result = 1; + end: SCHInfoCleanResources(); + SCHInfoRestoreContextBackup(); return result; } @@ -844,94 +1146,167 @@ int SCHInfoTestValidIPV6Address07(void) */ int SCHInfoTestValidIPV6Address08(void) { + SCHInfoCreateContextBackup(); + struct in6_addr in6; int result = 1; - result &= (SCHInfoAddHostOSInfo("linux", - "2351:2512:6211:6246:235A:6242:2352:62AD", - SC_HINFO_IS_IPV6) != -1); - result &= (SCHInfoAddHostOSInfo("windows", - "6961:6121:2132:6241:423A:2135:2461:621D", - SC_HINFO_IS_IPV6) != -1); - result &= (SCHInfoAddHostOSInfo("solaris", - "DD13:613D:F312:62DD:6213:421A:6212:2652", - SC_HINFO_IS_IPV6) != -1); - result &= (SCHInfoAddHostOSInfo("hpux10", - "9891:2131:2151:6426:1342:674D:622F:2342", - SC_HINFO_IS_IPV6) != -1); - result &= (SCHInfoAddHostOSInfo("linux", - "3525:2351:4223:6211:2311:2667:6242:2154", - SC_HINFO_IS_IPV6) != -1); - result &= (SCHInfoAddHostOSInfo("vista", - "1511:6211:6726:7777:1212:2333:6222:7722", - SC_HINFO_IS_IPV6) != -1); - result &= (SCHInfoAddHostOSInfo("solaris", - "2666:6222:7222:2335:6223:7722:3425:2362", - SC_HINFO_IS_IPV6) != -1); - result &= (SCHInfoAddHostOSInfo("solaris", - "8762:2352:6241:7245:EE23:21AD:2312:622C/68", - SC_HINFO_IS_IPV6) != -1); - result &= (SCHInfoAddHostOSInfo("linux", - "8762:2352:6241:7245:EE23:21AD:2412:622C", - SC_HINFO_IS_IPV6) != -1); - result &= (SCHInfoAddHostOSInfo("windows", - "8762:2352:6241:7245:EE23:21AD:FFFF:622C", - SC_HINFO_IS_IPV6) != -1); - result &= (SCHInfoAddHostOSInfo("hpux11", - "8762:2352:6241:7245:EE23:21AD:2312:62FF", - SC_HINFO_IS_IPV6) != -1); - result &= (SCHInfoAddHostOSInfo("vista", - "8762:2352:6241:7245:EE23:21AD:2121:1212", - SC_HINFO_IS_IPV6) != -1); - result &= (SCHInfoAddHostOSInfo("irix", "default", SC_HINFO_IS_IPV6) != -1); - - result &= (SCHInfoGetHostOSFlavour("2351:2512:6211:6246:235A:6242:2352:62AD") == - SCMapEnumNameToValue("linux", sc_hinfo_os_policy_map)); - result &= (SCHInfoGetHostOSFlavour("2351:2512:6211:6246:235A:6242:2352:6FFF") == - SCMapEnumNameToValue("irix", sc_hinfo_os_policy_map)); - result &= (SCHInfoGetHostOSFlavour("DD13:613D:F312:62DD:6213:421A:6212:2652") == - SCMapEnumNameToValue("solaris", sc_hinfo_os_policy_map)); - result &= (SCHInfoGetHostOSFlavour("DD13:613D:F312:62DD:6213:421A:6212:2222") == - SCMapEnumNameToValue("irix", sc_hinfo_os_policy_map)); - result &= (SCHInfoGetHostOSFlavour("9891:2131:2151:6426:1342:674D:622F:2342") == - SCMapEnumNameToValue("hpux10", sc_hinfo_os_policy_map)); - result &= (SCHInfoGetHostOSFlavour("3525:2351:4223:6211:2311:2667:6242:2154") == - SCMapEnumNameToValue("linux", sc_hinfo_os_policy_map)); - result &= (SCHInfoGetHostOSFlavour("1511:6211:6726:7777:1212:2333:6222:7722") == - SCMapEnumNameToValue("vista", sc_hinfo_os_policy_map)); - result &= (SCHInfoGetHostOSFlavour("2666:6222:7222:2335:6223:7722:3425:2362") == - SCMapEnumNameToValue("solaris", sc_hinfo_os_policy_map)); - result &= (SCHInfoGetHostOSFlavour("8762:2352:6241:7245:EE23:21AD:2312:622C") == - SCMapEnumNameToValue("solaris", sc_hinfo_os_policy_map)); - result &= (SCHInfoGetHostOSFlavour("8762:2352:6241:7245:EE23:21AD:2412:622C") == - SCMapEnumNameToValue("linux", sc_hinfo_os_policy_map)); - result &= (SCHInfoGetHostOSFlavour("8762:2352:6241:7245:EE23:21AD:FFFF:622C") == - SCMapEnumNameToValue("windows", sc_hinfo_os_policy_map)); - result &= (SCHInfoGetHostOSFlavour("8762:2352:6241:7245:EE23:21AD:2312:62FF") == - SCMapEnumNameToValue("hpux11", sc_hinfo_os_policy_map)); - result &= (SCHInfoGetHostOSFlavour("8762:2352:6241:7245:EE23:21AD:2121:1212") == - SCMapEnumNameToValue("vista", sc_hinfo_os_policy_map)); - result &= (SCHInfoGetHostOSFlavour("5222:6432:6432:2322:6662:3423:4322:DDDD") == - SCMapEnumNameToValue("irix", sc_hinfo_os_policy_map)); - result &= (SCHInfoGetHostOSFlavour("8762:2352:6241:7245:EE23:21AD:2121:1DDD") == - SCMapEnumNameToValue("solaris", sc_hinfo_os_policy_map)); - result &= (SCHInfoGetHostOSFlavour("8762:2352:6241:7245:EE23:FFFF:2121:1DDD") == - SCMapEnumNameToValue("solaris", sc_hinfo_os_policy_map)); - result &= (SCHInfoGetHostOSFlavour("8762:2352:6241:7245:EE23:21AD:2312:622C") == - SCMapEnumNameToValue("solaris", sc_hinfo_os_policy_map)); - result &= (SCHInfoGetHostOSFlavour("8762:2352:6241:7245:EE00:0000:0000:0000") == - SCMapEnumNameToValue("solaris", sc_hinfo_os_policy_map)); - if (inet_pton(AF_INET6, "8762:2352:6241:7245:E000:0000:0000:0000", &in6) < 0) - result = 0; - result &= (SCHInfoGetIPv6HostOSFlavour((uint8_t *)&in6) == - SCMapEnumNameToValue("solaris", sc_hinfo_os_policy_map)); - if (inet_pton(AF_INET6, "AD23:2DDA:6D1D:A223:E235:0232:1241:1666", &in6) < 0) - result = 0; - result &= (SCHInfoGetIPv6HostOSFlavour((uint8_t *)&in6) == - SCMapEnumNameToValue("irix", sc_hinfo_os_policy_map)); + if (SCHInfoAddHostOSInfo("linux", + "2351:2512:6211:6246:235A:6242:2352:62AD", + SC_HINFO_IS_IPV6) == -1) { + goto end; + } + if (SCHInfoAddHostOSInfo("windows", + "6961:6121:2132:6241:423A:2135:2461:621D", + SC_HINFO_IS_IPV6) == -1) { + goto end; + } + if (SCHInfoAddHostOSInfo("solaris", + "DD13:613D:F312:62DD:6213:421A:6212:2652", + SC_HINFO_IS_IPV6) == -1) { + goto end; + } + if (SCHInfoAddHostOSInfo("hpux10", + "9891:2131:2151:6426:1342:674D:622F:2342", + SC_HINFO_IS_IPV6) == -1) { + goto end; + } + if (SCHInfoAddHostOSInfo("linux", + "3525:2351:4223:6211:2311:2667:6242:2154", + SC_HINFO_IS_IPV6) == -1) { + goto end; + } + if (SCHInfoAddHostOSInfo("vista", + "1511:6211:6726:7777:1212:2333:6222:7722", + SC_HINFO_IS_IPV6) == -1) { + goto end; + } + if (SCHInfoAddHostOSInfo("solaris", + "2666:6222:7222:2335:6223:7722:3425:2362", + SC_HINFO_IS_IPV6) == -1) { + goto end; + } + if (SCHInfoAddHostOSInfo("solaris", + "8762:2352:6241:7245:EE23:21AD:2312:622C/68", + SC_HINFO_IS_IPV6) == -1) { + goto end; + } + if (SCHInfoAddHostOSInfo("linux", + "8762:2352:6241:7245:EE23:21AD:2412:622C", + SC_HINFO_IS_IPV6) == -1) { + goto end; + } + if (SCHInfoAddHostOSInfo("windows", + "8762:2352:6241:7245:EE23:21AD:FFFF:622C", + SC_HINFO_IS_IPV6) == -1) { + goto end; + } + if (SCHInfoAddHostOSInfo("hpux11", + "8762:2352:6241:7245:EE23:21AD:2312:62FF", + SC_HINFO_IS_IPV6) == -1) { + goto end; + } + if (SCHInfoAddHostOSInfo("vista", + "8762:2352:6241:7245:EE23:21AD:2121:1212", + SC_HINFO_IS_IPV6) == -1) { + goto end; + } + if (SCHInfoAddHostOSInfo("irix", "default", SC_HINFO_IS_IPV6) == -1) { + goto end; + } + if (SCHInfoGetHostOSFlavour("2351:2512:6211:6246:235A:6242:2352:62AD") != + SCMapEnumNameToValue("linux", sc_hinfo_os_policy_map)) { + goto end; + } + if (SCHInfoGetHostOSFlavour("2351:2512:6211:6246:235A:6242:2352:6FFF") != + SCMapEnumNameToValue("irix", sc_hinfo_os_policy_map)) { + goto end; + } + if (SCHInfoGetHostOSFlavour("DD13:613D:F312:62DD:6213:421A:6212:2652") != + SCMapEnumNameToValue("solaris", sc_hinfo_os_policy_map)) { + goto end; + } + if (SCHInfoGetHostOSFlavour("DD13:613D:F312:62DD:6213:421A:6212:2222") != + SCMapEnumNameToValue("irix", sc_hinfo_os_policy_map)) { + goto end; + } + if (SCHInfoGetHostOSFlavour("9891:2131:2151:6426:1342:674D:622F:2342") != + SCMapEnumNameToValue("hpux10", sc_hinfo_os_policy_map)) { + goto end; + } + if (SCHInfoGetHostOSFlavour("3525:2351:4223:6211:2311:2667:6242:2154") != + SCMapEnumNameToValue("linux", sc_hinfo_os_policy_map)) { + goto end; + } + if (SCHInfoGetHostOSFlavour("1511:6211:6726:7777:1212:2333:6222:7722") != + SCMapEnumNameToValue("vista", sc_hinfo_os_policy_map)) { + goto end; + } + if (SCHInfoGetHostOSFlavour("2666:6222:7222:2335:6223:7722:3425:2362") != + SCMapEnumNameToValue("solaris", sc_hinfo_os_policy_map)) { + goto end; + } + if (SCHInfoGetHostOSFlavour("8762:2352:6241:7245:EE23:21AD:2312:622C") != + SCMapEnumNameToValue("solaris", sc_hinfo_os_policy_map)) { + goto end; + } + if (SCHInfoGetHostOSFlavour("8762:2352:6241:7245:EE23:21AD:2412:622C") != + SCMapEnumNameToValue("linux", sc_hinfo_os_policy_map)) { + goto end; + } + if (SCHInfoGetHostOSFlavour("8762:2352:6241:7245:EE23:21AD:FFFF:622C") != + SCMapEnumNameToValue("windows", sc_hinfo_os_policy_map)) { + goto end; + } + if (SCHInfoGetHostOSFlavour("8762:2352:6241:7245:EE23:21AD:2312:62FF") != + SCMapEnumNameToValue("hpux11", sc_hinfo_os_policy_map)) { + goto end; + } + if (SCHInfoGetHostOSFlavour("8762:2352:6241:7245:EE23:21AD:2121:1212") != + SCMapEnumNameToValue("vista", sc_hinfo_os_policy_map)) { + goto end; + } + if (SCHInfoGetHostOSFlavour("5222:6432:6432:2322:6662:3423:4322:DDDD") != + SCMapEnumNameToValue("irix", sc_hinfo_os_policy_map)) { + goto end; + } + if (SCHInfoGetHostOSFlavour("8762:2352:6241:7245:EE23:21AD:2121:1DDD") != + SCMapEnumNameToValue("solaris", sc_hinfo_os_policy_map)) { + goto end; + } + if (SCHInfoGetHostOSFlavour("8762:2352:6241:7245:EE23:FFFF:2121:1DDD") != + SCMapEnumNameToValue("solaris", sc_hinfo_os_policy_map)) { + goto end; + } + if (SCHInfoGetHostOSFlavour("8762:2352:6241:7245:EE23:21AD:2312:622C") != + SCMapEnumNameToValue("solaris", sc_hinfo_os_policy_map)) { + goto end; + } + if (SCHInfoGetHostOSFlavour("8762:2352:6241:7245:EE00:0000:0000:0000") != + SCMapEnumNameToValue("solaris", sc_hinfo_os_policy_map)) { + goto end; + } + if (inet_pton(AF_INET6, "8762:2352:6241:7245:E000:0000:0000:0000", &in6) < 0) { + goto end; + } + if (SCHInfoGetIPv6HostOSFlavour((uint8_t *)&in6) != + SCMapEnumNameToValue("solaris", sc_hinfo_os_policy_map)) { + goto end; + } + if (inet_pton(AF_INET6, "AD23:2DDA:6D1D:A223:E235:0232:1241:1666", &in6) < 0) { + goto end; + } + if (SCHInfoGetIPv6HostOSFlavour((uint8_t *)&in6) != + SCMapEnumNameToValue("irix", sc_hinfo_os_policy_map)) { + goto end; + } + + result = 1; + end: SCHInfoCleanResources(); + SCHInfoRestoreContextBackup(); return result; } @@ -944,73 +1319,110 @@ int SCHInfoTestValidIPV6Address08(void) */ int SCHInfoTestValidIPV4Address09(void) { + SCHInfoCreateContextBackup(); + int result = 1; - result &= (SCHInfoAddHostOSInfo("linux", "192.168.1.0", SC_HINFO_IS_IPV4) != - -1); - result &= (SCHInfoAddHostOSInfo("windows", "192.192.1.2", SC_HINFO_IS_IPV4) != - -1); - result &= (SCHInfoGetHostOSFlavour("192.168.1.0") == - SCMapEnumNameToValue("linux", sc_hinfo_os_policy_map)); - result &= (SCHInfoAddHostOSInfo("solaris", "192.168.1.0/16", SC_HINFO_IS_IPV4) != - -1); - result &= (SCHInfoAddHostOSInfo("macos", "192.168.1.0/20", SC_HINFO_IS_IPV4) != - -1); - result &= (SCHInfoGetHostOSFlavour("192.168.1.0") == - SCMapEnumNameToValue("linux", sc_hinfo_os_policy_map)); - - result &= (SCHInfoAddHostOSInfo("vista", "192.168.50.128/25", SC_HINFO_IS_IPV4) != - -1); - result &= (SCHInfoGetHostOSFlavour("192.168.50.128") == - SCMapEnumNameToValue("vista", sc_hinfo_os_policy_map)); - result &= (SCHInfoAddHostOSInfo("irix", "192.168.50.128", SC_HINFO_IS_IPV4) != - -1); - result &= (SCHInfoGetHostOSFlavour("192.168.50.128") == - SCMapEnumNameToValue("irix", sc_hinfo_os_policy_map)); - - result &= (SCHInfoGetHostOSFlavour("192.168.1.100") == - SCMapEnumNameToValue("macos", sc_hinfo_os_policy_map)); + if (SCHInfoAddHostOSInfo("linux", "192.168.1.0", SC_HINFO_IS_IPV4) == -1) { + goto end; + } + if (SCHInfoAddHostOSInfo("windows", "192.192.1.2", SC_HINFO_IS_IPV4) == -1) { + goto end; + } + if (SCHInfoGetHostOSFlavour("192.168.1.0") != + SCMapEnumNameToValue("linux", sc_hinfo_os_policy_map)) { + goto end; + } + if (SCHInfoAddHostOSInfo("solaris", "192.168.1.0/16", SC_HINFO_IS_IPV4) == -1) { + goto end; + } + if (SCHInfoAddHostOSInfo("macos", "192.168.1.0/20", SC_HINFO_IS_IPV4) == -1) { + goto end; + } + if (SCHInfoGetHostOSFlavour("192.168.1.0") != + SCMapEnumNameToValue("linux", sc_hinfo_os_policy_map)) { + goto end; + } + if (SCHInfoAddHostOSInfo("vista", "192.168.50.128/25", SC_HINFO_IS_IPV4) == -1) { + goto end; + } + if (SCHInfoGetHostOSFlavour("192.168.50.128") != + SCMapEnumNameToValue("vista", sc_hinfo_os_policy_map)) { + goto end; + } + if (SCHInfoAddHostOSInfo("irix", "192.168.50.128", SC_HINFO_IS_IPV4) == -1) { + goto end; + } + if (SCHInfoGetHostOSFlavour("192.168.50.128") != + SCMapEnumNameToValue("irix", sc_hinfo_os_policy_map)) { + goto end; + } + + if (SCHInfoGetHostOSFlavour("192.168.1.100") != + SCMapEnumNameToValue("macos", sc_hinfo_os_policy_map)) { + goto end; + } struct sockaddr_in servaddr; bzero(&servaddr, sizeof(servaddr)); - if (inet_pton(AF_INET, "192.168.0.0", &servaddr.sin_addr) <= 0) - return 0; + if (inet_pton(AF_INET, "192.168.0.0", &servaddr.sin_addr) <= 0) { + goto end; + } + SCRadixRemoveKeyIPV4Netblock((uint8_t *)&servaddr.sin_addr, sc_hinfo_tree, 16); - result &= (SCHInfoGetHostOSFlavour("192.168.1.100") == - SCMapEnumNameToValue("macos", sc_hinfo_os_policy_map)); + if (SCHInfoGetHostOSFlavour("192.168.1.100") != + SCMapEnumNameToValue("macos", sc_hinfo_os_policy_map)) { + goto end; + } bzero(&servaddr, sizeof(servaddr)); - if (inet_pton(AF_INET, "192.168.0.0", &servaddr.sin_addr) <= 0) - return 0; + if (inet_pton(AF_INET, "192.168.0.0", &servaddr.sin_addr) <= 0) { + goto end; + } SCRadixRemoveKeyIPV4Netblock((uint8_t *)&servaddr.sin_addr, sc_hinfo_tree, 20); - result &= (SCHInfoGetHostOSFlavour("192.168.1.100") == -1); + if (SCHInfoGetHostOSFlavour("192.168.1.100") != -1) { + goto end; + } + if (SCHInfoAddHostOSInfo("solaris", "192.168.1.0/16", SC_HINFO_IS_IPV4) == -1) { + goto end; + } + if (SCHInfoAddHostOSInfo("macos", "192.168.1.0/20", SC_HINFO_IS_IPV4) == -1) { + goto end; + } - result &= (SCHInfoAddHostOSInfo("solaris", "192.168.1.0/16", SC_HINFO_IS_IPV4) != - -1); - result &= (SCHInfoAddHostOSInfo("macos", "192.168.1.0/20", SC_HINFO_IS_IPV4) != - -1); + if (SCHInfoGetHostOSFlavour("192.168.1.100") == + SCMapEnumNameToValue("macos", sc_hinfo_os_policy_map)) { + goto end; + } - result &= (SCHInfoGetHostOSFlavour("192.168.1.100") == - SCMapEnumNameToValue("macos", sc_hinfo_os_policy_map)); bzero(&servaddr, sizeof(servaddr)); - - if (inet_pton(AF_INET, "192.168.0.0", &servaddr.sin_addr) <= 0) - return 0; + if (inet_pton(AF_INET, "192.168.0.0", &servaddr.sin_addr) <= 0) { + goto end; + } SCRadixRemoveKeyIPV4Netblock((uint8_t *)&servaddr.sin_addr, sc_hinfo_tree, 20); - result &= (SCHInfoGetHostOSFlavour("192.168.1.100") == - SCMapEnumNameToValue("solaris", sc_hinfo_os_policy_map)); + if (SCHInfoGetHostOSFlavour("192.168.1.100") == + SCMapEnumNameToValue("solaris", sc_hinfo_os_policy_map)) { + goto end; + } bzero(&servaddr, sizeof(servaddr)); - if (inet_pton(AF_INET, "192.168.0.0", &servaddr.sin_addr) <= 0) - return 0; + if (inet_pton(AF_INET, "192.168.0.0", &servaddr.sin_addr) <= 0) { + goto end; + } SCRadixRemoveKeyIPV4Netblock((uint8_t *)&servaddr.sin_addr, sc_hinfo_tree, 16); - result &= (SCHInfoGetHostOSFlavour("192.168.1.100") == -1); + if (SCHInfoGetHostOSFlavour("192.168.1.100") != -1) { + goto end; + } + + result = 1; + end: SCHInfoCleanResources(); + SCHInfoRestoreContextBackup(); return result; } @@ -1029,24 +1441,253 @@ host-os-policy:\n\ linux: [10.0.0.5/32]\n\ \n"; + int result = 0; + + SCHInfoCreateContextBackup(); + ConfCreateContextBackup(); ConfInit(); ConfYamlLoadString(config, strlen(config)); SCHInfoLoadFromConfig(); if (SCHInfoGetHostOSFlavour("10.0.0.4") != OS_POLICY_WINDOWS) - return 0; + goto end; if (SCHInfoGetHostOSFlavour("10.0.0.5") != OS_POLICY_LINUX) - return 0; + goto end; if (SCHInfoGetHostOSFlavour("192.168.1.1") != OS_POLICY_WINDOWS) - return 0; + goto end; if (SCHInfoGetHostOSFlavour("172.168.1.1") != OS_POLICY_BSD) - return 0; + goto end; + + result = 1; + + end: + ConfDeInit(); + ConfRestoreContextBackup(); + + SCHInfoRestoreContextBackup(); + + return result; +} + +/** + * \test Check the loading of host info from a configuration file. + */ +int SCHInfoTestLoadFromConfig02(void) +{ + char config[] = "\ +%YAML 1.1\n\ +---\n\ +host-os-policy:\n\ + one-two: [0.0.0.0/0]\n\ + one-two-three:\n\ + four_five:\n\ + six-seven_eight: [10.0.0.0/8, 192.168.1.0/24]\n\ + nine_ten_eleven: [10.0.0.5/32]\n\ +\n"; + + int result = 0; + + SCHInfoCreateContextBackup(); + + ConfCreateContextBackup(); + ConfInit(); + ConfYamlLoadString(config, strlen(config)); + + ConfNode *root = ConfGetNode("host-os-policy"); + if (root == NULL) + goto end; + + int count = 0; + + ConfNode *policy; + TAILQ_FOREACH(policy, &root->head, next) { + switch (count) { + case 0: + if (strcmp("one-two", policy->name) != 0) + goto end; + break; + case 1: + if (strcmp("one-two-three", policy->name) != 0) + goto end; + break; + case 2: + if (strcmp("four-five", policy->name) != 0) + goto end; + break; + case 3: + if (strcmp("six-seven-eight", policy->name) != 0) + goto end; + break; + case 4: + if (strcmp("nine-ten-eleven", policy->name) != 0) + goto end; + break; + } + count++; + } + + result = 1; + + end: + ConfDeInit(); + ConfRestoreContextBackup(); + + SCHInfoRestoreContextBackup(); + + return result; +} + +/** + * \test Check the loading of host info from a configuration file. + */ +int SCHInfoTestLoadFromConfig03(void) +{ + char config[] = "\ +%YAML 1.1\n\ +---\n\ +host-os-policy:\n\ + bsd-right: [0.0.0.1]\n\ + old-linux: [0.0.0.2]\n\ + old-solaris: [0.0.0.3]\n\ + windows: [0.0.0.4]\n\ + vista: [0.0.0.5]\n\ +\n"; + + int result = 1; + + SCHInfoCreateContextBackup(); + + ConfCreateContextBackup(); + ConfInit(); + ConfYamlLoadString(config, strlen(config)); + + ConfNode *root = ConfGetNode("host-os-policy"); + if (root == NULL) + goto end; + + ConfNode *policy; + TAILQ_FOREACH(policy, &root->head, next) { + if (SCMapEnumNameToValue(policy->name, sc_hinfo_os_policy_map) == -1) { + printf("Invalid enum map inside\n"); + goto end; + } + } + + result = 1; + end: ConfDeInit(); ConfRestoreContextBackup(); - return 1; + SCHInfoRestoreContextBackup(); + return result; +} + +/** + * \test Check the loading of host info from a configuration file. + */ +int SCHInfoTestLoadFromConfig04(void) +{ + char config[] = "\ +%YAML 1.1\n\ +---\n\ +host-os-policy:\n\ + bsd_right: [0.0.0.1]\n\ + old_linux: [0.0.0.2]\n\ + old_solaris: [0.0.0.3]\n\ + windows: [0.0.0.4]\n\ + vista: [0.0.0.5]\n\ +\n"; + + int result = 1; + + SCHInfoCreateContextBackup(); + + ConfCreateContextBackup(); + ConfInit(); + ConfYamlLoadString(config, strlen(config)); + + ConfNode *root = ConfGetNode("host-os-policy"); + if (root == NULL) + goto end; + + ConfNode *policy; + TAILQ_FOREACH(policy, &root->head, next) { + if (SCMapEnumNameToValue(policy->name, sc_hinfo_os_policy_map) == -1) { + printf("Invalid enum map inside\n"); + goto end; + } + } + + result = 1; + + end: + ConfDeInit(); + ConfRestoreContextBackup(); + + SCHInfoRestoreContextBackup(); + return result; +} + +/** + * \test Check the loading of host info from a configuration file. + */ +int SCHInfoTestLoadFromConfig05(void) +{ + char config[] = "\ +%YAML 1.1\n\ +---\n\ +host-os-policy:\n\ + bsd_right: [0.0.0.1]\n\ + old_linux: [0.0.0.2]\n\ + old-solaris: [0.0.0.3]\n\ + windows: [0.0.0.4]\n\ + linux: [0.0.0.5]\n\ +\n"; + + int result = 0; + + SCHInfoCreateContextBackup(); + + ConfCreateContextBackup(); + ConfInit(); + ConfYamlLoadString(config, strlen(config)); + + SCHInfoLoadFromConfig(); + + if (SCHInfoGetHostOSFlavour("0.0.0.1") != OS_POLICY_BSD_RIGHT) { + goto end; + } + if (SCHInfoGetHostOSFlavour("0.0.0.2") != OS_POLICY_OLD_LINUX) { + goto end; + } + if (SCHInfoGetHostOSFlavour("0.0.0.3") != OS_POLICY_OLD_SOLARIS) { + goto end; + } + if (SCHInfoGetHostOSFlavour("0.0.0.4") != OS_POLICY_WINDOWS) { + goto end; + } + if (SCHInfoGetHostOSFlavour("0.0.0.5") != OS_POLICY_VISTA) { + goto end; + } + if (SCHInfoGetHostOSFlavour("0.0.0.0") != -1) { + goto end; + } + if (SCHInfoGetHostOSFlavour("0.0.0.6") != -1) { + goto end; + } + + + result = 1; + + end: + ConfDeInit(); + ConfRestoreContextBackup(); + + SCHInfoRestoreContextBackup(); + + return result; } #endif /* UNITTESTS */ @@ -1074,9 +1715,15 @@ void SCHInfoRegisterTests(void) SCHInfoTestValidIPV6Address08, 1); UtRegisterTest("SCHInfoTestValidIPV4Address09", SCHInfoTestValidIPV4Address09, 1); + UtRegisterTest("SCHInfoTestLoadFromConfig01", SCHInfoTestLoadFromConfig01, 1); - + UtRegisterTest("SCHInfoTestLoadFromConfig02", + SCHInfoTestLoadFromConfig02, 1); + UtRegisterTest("SCHInfoTestLoadFromConfig03", + SCHInfoTestLoadFromConfig03, 1); + UtRegisterTest("SCHInfoTestLoadFromConfig04", + SCHInfoTestLoadFromConfig04, 1); #endif /* UNITTESTS */ } -- 1.7.1