int main() { char buf[50]; char buf1[50]; struct sockaddr_in sin; SafeSock ssock; IpVerify* userverify; set_mySubSystem( "COLLECTOR", SUBSYSTEM_TYPE_COLLECTOR ); config(); #ifdef WIN32 _CrtMemCheckpoint( &s1 ); #endif userverify = new IpVerify(); userverify->Init(); buf[0] = '\0'; while( 1 ) { printf("Enter test:\n"); scanf("%s",buf); if ( strncmp(buf,"exit",4) == 0 ) break; if ( strncmp(buf,"reinit",6) == 0 ) { config(); userverify->Init(); continue; } printf("Verifying %s ... ",buf); sprintf(buf1,"<%s:1970>",buf); string_to_sin(buf1,&sin); if ( userverify->Verify(WRITE,&sin) == TRUE ) printf("ALLOW\n"); else printf("DENY\n"); } delete userverify; #ifdef WIN32 _CrtMemCheckpoint( &s2 ); // _CrtMemDumpAllObjectsSince( &s1 ); _CrtSetReportMode(_CRT_WARN, _CRTDBG_MODE_FILE); _CrtSetReportFile(_CRT_WARN, _CRTDBG_FILE_STDOUT); _CrtSetReportMode(_CRT_ERROR, _CRTDBG_MODE_FILE); _CrtSetReportFile(_CRT_ERROR, _CRTDBG_FILE_STDOUT); _CrtSetReportMode(_CRT_ASSERT, _CRTDBG_MODE_FILE); _CrtSetReportFile(_CRT_ASSERT, _CRTDBG_FILE_STDOUT); if ( _CrtMemDifference( &s3, &s1, &s2 ) ) _CrtMemDumpStatistics( &s3 ); // _CrtDumpMemoryLeaks(); // report any memory leaks on Win32 #endif return TRUE; }
static bool test_alpha_input() { emit_test("Does an error occur on alpha-only input?"); struct sockaddr_in sa_in; char* input = strdup("Iamafish"); int result = string_to_sin(input, &sa_in); emit_input_header(); emit_param("STRING", input); free(input); emit_output_expected_header(); emit_retval("%s", tfstr(FALSE)); emit_output_actual_header(); emit_retval("%s", tfstr(result)); if(result != 0) { FAIL; } PASS; }
static bool test_normal_case() { emit_test("Is normal input converted correctly?"); struct sockaddr_in sa_in; char* input = strdup("<192.168.0.2:80?param1=value1¶m2=value2>"); int result = string_to_sin(input, &sa_in); emit_input_header(); emit_param("STRING", input); free(input); emit_output_expected_header(); emit_retval("%s", tfstr(TRUE)); emit_param("sockaddr_in.in_addr", "192.168.0.2"); emit_param("sockaddr_in.port", "80"); emit_output_actual_header(); emit_retval("%s", tfstr(result)); unsigned char* byte = (unsigned char*) &sa_in.sin_addr; int port = ntohs(sa_in.sin_port); emit_param("sockaddr_in.in_addr", "%d.%d.%d.%d", *byte, *(byte+1), *(byte+2), *(byte+3)); emit_param("sockaddr_in.port", "%d", port); if(result != 1 || port != 80 || !utest_sock_eq_octet(&(sa_in.sin_addr), 192, 168, 0, 2) ) { FAIL; } PASS; }