From 6e396cea9d91ec76ea516bedcad9952f863cd5cb Mon Sep 17 00:00:00 2001 From: Hadis Kakanejadi Fard Date: Thu, 26 Jan 2017 18:19:08 -0800 Subject: [PATCH] fixed closing } dropped indentations --- source/shared/core_conn.cpp | 95 +++++++++++++++++++------------------ 1 file changed, 48 insertions(+), 47 deletions(-) diff --git a/source/shared/core_conn.cpp b/source/shared/core_conn.cpp index 0ca72a52..814df514 100644 --- a/source/shared/core_conn.cpp +++ b/source/shared/core_conn.cpp @@ -127,57 +127,58 @@ sqlsrv_conn* core_sqlsrv_connect( sqlsrv_context& henv_cp, sqlsrv_context& henv_ conn = conn_factory( temp_conn_h, err, driver TSRMLS_CC ); conn->set_func( driver_func ); - for( std::size_t i = DRIVER_VERSION::MIN; i <= DRIVER_VERSION::MAX; ++i ) { - conn_str = CONNECTION_STRING_DRIVER_NAME[i]; - build_connection_string_and_set_conn_attr( conn, server, uid, pwd, options_ht, valid_conn_opts, driver, conn_str TSRMLS_CC ); - - // We only support UTF-8 encoding for connection string. - // Convert our UTF-8 connection string to UTF-16 before connecting with SQLDriverConnnectW - wconn_len = static_cast( conn_str.length() + 1 ) * sizeof( SQLWCHAR ); + for( std::size_t i = DRIVER_VERSION::MIN; i <= DRIVER_VERSION::MAX; ++i ) { + conn_str = CONNECTION_STRING_DRIVER_NAME[i]; + build_connection_string_and_set_conn_attr(conn, server, uid, pwd, options_ht, valid_conn_opts, driver, conn_str TSRMLS_CC); - wconn_string = utf16_string_from_mbcs_string( SQLSRV_ENCODING_UTF8, conn_str.c_str(), static_cast( conn_str.length() ), &wconn_len ); - - CHECK_CUSTOM_ERROR( wconn_string == 0, conn, SQLSRV_ERROR_CONNECT_STRING_ENCODING_TRANSLATE, get_last_error_message() ) - { - throw core::CoreException(); - } - - SQLSMALLINT output_conn_size; - r = SQLDriverConnectW( conn->handle(), NULL, reinterpret_cast( wconn_string.get() ), - static_cast( wconn_len ), NULL, 0, &output_conn_size, SQL_DRIVER_NOPROMPT ); - - // clear the connection string from memory to remove sensitive data (such as a password). - memset( const_cast( conn_str.c_str()), 0, conn_str.size() ); - memset( wconn_string, 0, wconn_len * sizeof( SQLWCHAR )); // wconn_len is the number of characters, not bytes - conn_str.clear(); - if( !SQL_SUCCEEDED( r )) { - SQLCHAR state[SQL_SQLSTATE_BUFSIZE]; - SQLSMALLINT len; - SQLRETURN r = SQLGetDiagField( SQL_HANDLE_DBC, conn->handle(), 1, SQL_DIAG_SQLSTATE, state, SQL_SQLSTATE_BUFSIZE, &len ); - bool missing_driver_error = ( SQL_SUCCEEDED( r ) && state[0] == 'I' && state[1] == 'M' && state[2] == '0' && state[3] == '0' && state[4] == '2' ); - // if it's a IM002, meaning that the correct ODBC driver is not installed - CHECK_CUSTOM_ERROR( missing_driver_error && ( i == DRIVER_VERSION::MAX ), conn, SQLSRV_ERROR_DRIVER_NOT_INSTALLED, get_processor_arch()) { - throw core::CoreException(); + // We only support UTF-8 encoding for connection string. + // Convert our UTF-8 connection string to UTF-16 before connecting with SQLDriverConnnectW + wconn_len = static_cast( conn_str.length() + 1 ) * sizeof( SQLWCHAR ); + + wconn_string = utf16_string_from_mbcs_string( SQLSRV_ENCODING_UTF8, conn_str.c_str(), static_cast(conn_str.length()), &wconn_len ); + + CHECK_CUSTOM_ERROR( wconn_string == 0, conn, SQLSRV_ERROR_CONNECT_STRING_ENCODING_TRANSLATE, get_last_error_message()) + { + throw core::CoreException(); } - if ( !missing_driver_error ) { - break; - } else { - conn->driver_version = static_cast( i ); - break; - } - } - CHECK_SQL_ERROR( r, conn ) { - throw core::CoreException(); - } - CHECK_SQL_WARNING_AS_ERROR( r, conn ) { - throw core::CoreException(); - } + SQLSMALLINT output_conn_size; + r = SQLDriverConnectW( conn->handle(), NULL, reinterpret_cast(wconn_string.get()), + static_cast(wconn_len), NULL, 0, &output_conn_size, SQL_DRIVER_NOPROMPT); - // determine the version of the server we're connected to. The server version is left in the - // connection upon return. - determine_server_version( conn TSRMLS_CC ); - + // clear the connection string from memory to remove sensitive data (such as a password). + memset( const_cast(conn_str.c_str()), 0, conn_str.size()); + memset( wconn_string, 0, wconn_len * sizeof( SQLWCHAR )); // wconn_len is the number of characters, not bytes + conn_str.clear(); + if( !SQL_SUCCEEDED( r )) { + SQLCHAR state[ SQL_SQLSTATE_BUFSIZE ]; + SQLSMALLINT len; + SQLRETURN r = SQLGetDiagField( SQL_HANDLE_DBC, conn->handle(), 1, SQL_DIAG_SQLSTATE, state, SQL_SQLSTATE_BUFSIZE, &len ); + bool missing_driver_error = ( SQL_SUCCEEDED(r) && state[0] == 'I' && state[1] == 'M' && state[2] == '0' && state[3] == '0' && state[4] == '2' ); + // if it's a IM002, meaning that the correct ODBC driver is not installed + CHECK_CUSTOM_ERROR( missing_driver_error && ( i == DRIVER_VERSION::MAX ), conn, SQLSRV_ERROR_DRIVER_NOT_INSTALLED, get_processor_arch()) { + throw core::CoreException(); + } + if( !missing_driver_error ) { + break; + } + else { + conn->driver_version = static_cast( i ); + break; + } + } + CHECK_SQL_ERROR( r, conn ) { + throw core::CoreException(); + } + + CHECK_SQL_WARNING_AS_ERROR( r, conn ) { + throw core::CoreException(); + } + + // determine the version of the server we're connected to. The server version is left in the + // connection upon return. + determine_server_version( conn TSRMLS_CC ); + } } catch( std::bad_alloc& ) { memset( const_cast( conn_str.c_str()), 0, conn_str.size() );