int main (int argc, char *const *argv) { int i, errorCount = 0; FILE *test_fd; struct MHD_Daemon *d; gnutls_session_t session; gnutls_datum_t key; gnutls_datum_t cert; gnutls_certificate_credentials_t xcred; const int ext_arr[] = { GNUTLS_EXTENSION_SERVER_NAME, -1 }; gcry_control (GCRYCTL_ENABLE_QUICK_RANDOM, 0); #ifdef GCRYCTL_INITIALIZATION_FINISHED gcry_control (GCRYCTL_INITIALIZATION_FINISHED, 0); #endif MHD_gtls_global_set_log_level (11); if ((test_fd = setup_test_file ()) == NULL) { fprintf (stderr, MHD_E_TEST_FILE_CREAT); return -1; } if (0 != curl_global_init (CURL_GLOBAL_ALL)) { fprintf (stderr, "Error: %s\n", strerror (errno)); return -1; } d = MHD_start_daemon (MHD_USE_THREAD_PER_CONNECTION | MHD_USE_SSL | MHD_USE_DEBUG, DEAMON_TEST_PORT, NULL, NULL, &http_ahc, NULL, MHD_OPTION_HTTPS_MEM_KEY, srv_key_pem, MHD_OPTION_HTTPS_MEM_CERT, srv_self_signed_cert_pem, MHD_OPTION_END); if (d == NULL) { fprintf (stderr, "%s\n", MHD_E_SERVER_INIT); return -1; } i = 0; setup_session (&session, &key, &cert, &xcred); errorCount += test_hello_extension (session, ext_arr[i], 1, 16); teardown_session (session, &key, &cert, xcred); #if 1 i = 0; while (ext_arr[i] != -1) { setup_session (&session, &key, &cert, &xcred); errorCount += test_hello_extension (session, ext_arr[i], 1, 16); teardown_session (session, &key, &cert, xcred); setup_session (&session, &key, &cert, &xcred); errorCount += test_hello_extension (session, ext_arr[i], 3, 8); teardown_session (session, &key, &cert, xcred); /* this test specifically tests the issue raised in CVE-2008-1948 */ setup_session (&session, &key, &cert, &xcred); errorCount += test_hello_extension (session, ext_arr[i], 6, 0); teardown_session (session, &key, &cert, xcred); i++; } #endif print_test_result (errorCount, argv[0]); MHD_stop_daemon (d); curl_global_cleanup (); fclose (test_fd); return errorCount; }
static void setup_test_file_truncate(void) { setup_test_file(); write_domain_policy("allow_truncate /tmp/testfile\\$", 0); set_profile(3, "file::truncate"); }