diff --git a/src/elog.c b/src/elog.c index cd67e541..aca95301 100755 --- a/src/elog.c +++ b/src/elog.c @@ -299,18 +299,28 @@ int ssl_connect(int sock, SSL ** ssl_con) { SSL_METHOD *meth; SSL_CTX *ctx; - + X509 *cert = NULL; + int i; + SSL_library_init(); SSL_load_error_strings(); - + meth = (SSL_METHOD *) TLSv1_method(); ctx = SSL_CTX_new(meth); - + *ssl_con = SSL_new(ctx); SSL_set_fd(*ssl_con, sock); if (SSL_connect(*ssl_con) <= 0) return -1; - + + cert = SSL_get_peer_certificate(*ssl_con); + if (cert == NULL) + return -1; + + i = SSL_get_verify_result(*ssl_con); + if (i != X509_V_OK) + printf("Possibly invalid certificate, continue on your own risk!\n"); + return 0; } #endif @@ -962,8 +972,6 @@ INT submit_elog(char *host, int port, int ssl, char *subdir, char *experiment, printf("Error: No logbook specified\n"); else if (strstr(response, "enter password")) printf("Error: Missing or invalid password\n"); - else if (strstr(response, "form name=form1")) - printf("Error: Missing or invalid user name/password\n"); else if (strstr(response, "Error: Attribute")) { if (strstr(response, "not existing")) { strncpy(str, strstr(response, "Error: Attribute") + 27, sizeof(str)); @@ -976,7 +984,10 @@ INT submit_elog(char *host, int port, int ssl, char *subdir, char *experiment, *strchr(str, '<') = 0; printf("Error: Missing required attribute \"%s\"\n", str); } - } else + } + else if (strstr(response, "form name=form1")) + printf("Error: Missing or invalid user name/password\n"); + else printf("Error transmitting message\n"); return 1; diff --git a/src/elogd.c b/src/elogd.c index 6e64eb98..074a56a7 100755 --- a/src/elogd.c +++ b/src/elogd.c @@ -2439,18 +2439,28 @@ int ssl_connect(int sock, SSL ** ssl_con) { SSL_METHOD *meth; SSL_CTX *ctx; - + X509 *cert = NULL; + int i; + SSL_library_init(); SSL_load_error_strings(); - + meth = (SSL_METHOD *) TLSv1_method(); ctx = SSL_CTX_new(meth); - + *ssl_con = SSL_new(ctx); SSL_set_fd(*ssl_con, sock); if (SSL_connect(*ssl_con) <= 0) return -1; - + + cert = SSL_get_peer_certificate(*ssl_con); + if (cert == NULL) + return -1; + + i = SSL_get_verify_result(*ssl_con); + if (i != X509_V_OK) + printf("Possibly invalid certificate, continue on your own risk!\n"); + return 0; } #endif diff --git a/xcode/elog.xcodeproj/project.pbxproj b/xcode/elog.xcodeproj/project.pbxproj index 348536bd..902da54d 100644 --- a/xcode/elog.xcodeproj/project.pbxproj +++ b/xcode/elog.xcodeproj/project.pbxproj @@ -93,7 +93,7 @@ D52BA2F113999DB0000458E3 /* Project object */ = { isa = PBXProject; attributes = { - LastUpgradeCheck = 0630; + LastUpgradeCheck = 0830; ORGANIZATIONNAME = PSI; }; buildConfigurationList = D52BA2F413999DB0000458E3 /* Build configuration list for PBXProject "elog" */; @@ -133,14 +133,20 @@ CLANG_WARN_CONSTANT_CONVERSION = YES; CLANG_WARN_EMPTY_BODY = YES; CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; CLANG_WARN_UNREACHABLE_CODE = YES; CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; ENABLE_STRICT_OBJC_MSGSEND = YES; + ENABLE_TESTABILITY = YES; GCC_C_LANGUAGE_STANDARD = gnu99; GCC_NO_COMMON_BLOCKS = YES; GCC_OPTIMIZATION_LEVEL = 0; - GCC_PREPROCESSOR_DEFINITIONS = DEBUG; + GCC_PREPROCESSOR_DEFINITIONS = ( + DEBUG, + HAVE_SSL, + ); GCC_SYMBOLS_PRIVATE_EXTERN = NO; GCC_VERSION = com.apple.compilers.llvm.clang.1_0; GCC_WARN_64_TO_32_BIT_CONVERSION = YES; @@ -149,6 +155,8 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; + HEADER_SEARCH_PATHS = /opt/local/include; + LIBRARY_SEARCH_PATHS = /opt/local/lib; MACOSX_DEPLOYMENT_TARGET = 10.6; ONLY_ACTIVE_ARCH = YES; SDKROOT = macosx; @@ -162,12 +170,15 @@ CLANG_WARN_CONSTANT_CONVERSION = YES; CLANG_WARN_EMPTY_BODY = YES; CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; CLANG_WARN_UNREACHABLE_CODE = YES; CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; ENABLE_STRICT_OBJC_MSGSEND = YES; GCC_C_LANGUAGE_STANDARD = gnu99; GCC_NO_COMMON_BLOCKS = YES; + GCC_PREPROCESSOR_DEFINITIONS = HAVE_SSL; GCC_VERSION = com.apple.compilers.llvm.clang.1_0; GCC_WARN_64_TO_32_BIT_CONVERSION = YES; GCC_WARN_ABOUT_RETURN_TYPE = YES; @@ -175,6 +186,8 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; + HEADER_SEARCH_PATHS = /opt/local/include; + LIBRARY_SEARCH_PATHS = /opt/local/lib; MACOSX_DEPLOYMENT_TARGET = 10.6; SDKROOT = macosx; };