@@ -355,34 +355,19 @@ class AuthMessage extends Message {
355355 }
356356 if ( this . functionCode === constants . TNS_FUNC_AUTH_PHASE_ONE ) {
357357 this . functionCode = constants . TNS_FUNC_AUTH_PHASE_TWO ;
358- } else {
359- let releaseNum ;
360- let updateNum ;
361- let portReleaseNum ;
362- let portUpdateNum ;
363-
364- this . conn . dbDomain = this . sessionData [ 'AUTH_SC_DB_DOMAIN' ] ;
365- this . conn . dbName = this . sessionData [ 'AUTH_DBNAME' ] ;
366- this . conn . maxOpenCursors = Number ( this . sessionData [ 'AUTH_MAX_OPEN_CURSORS' ] || 0 ) ;
367- this . conn . serviceName = this . sessionData [ 'AUTH_SC_SERVICE_NAME' ] ;
368- this . conn . instanceName = this . sessionData [ 'AUTH_INSTANCENAME' ] ;
369- this . conn . maxIdentifierLength = Number ( this . sessionData [ 'AUTH_MAX_IDEN_LENGTH' ] || 30 ) ;
370- const fullVersionNum = Number ( this . sessionData [ 'AUTH_VERSION_NO' ] ) ;
371- const versionNum = ( fullVersionNum >> 24 ) & 0xFF ;
372- this . conn . warning = this . warning ;
373- if ( buf . caps . ttcFieldVersion >= constants . TNS_CCAP_FIELD_VERSION_18_1_EXT_1 ) {
374- releaseNum = ( fullVersionNum >> 16 ) & 0xFF ;
375- updateNum = ( fullVersionNum >> 12 ) & 0x0F ;
376- portReleaseNum = ( fullVersionNum >> 4 ) & 0xFF ;
377- portUpdateNum = fullVersionNum & 0x0F ;
378- } else {
379- releaseNum = ( fullVersionNum >> 20 ) & 0x0F ;
380- updateNum = ( fullVersionNum >> 12 ) & 0xFF ;
381- portReleaseNum = ( fullVersionNum >> 8 ) & 0x0F ;
382- portUpdateNum = fullVersionNum & 0xFF ;
358+ } else if ( ! this . changePassword && this . comboKey ) {
359+ const value = this . sessionData . AUTH_SVR_RESPONSE ;
360+ let response ;
361+ if ( value ) {
362+ const encodedResponse = Buffer . from ( value , "hex" ) ;
363+ response = ED . decrypt ( this . comboKey , encodedResponse ) ;
364+ }
365+ if (
366+ ! response ||
367+ ! response . subarray ( 16 , 32 ) . equals ( Buffer . from ( "SERVER_TO_CLIENT" ) )
368+ ) {
369+ errors . throwErr ( errors . ERR_INVALID_SERVER_RESPONSE ) ;
383370 }
384- this . conn . serverVersionString = versionNum + '.' + releaseNum + '.' + updateNum + '.' + portReleaseNum + '.' + portUpdateNum ;
385- this . conn . serverVersion = versionNum * 100000000 + releaseNum * 1000000 + updateNum * 10000 + portReleaseNum * 100 + portUpdateNum * 1 ;
386371 }
387372 }
388373
0 commit comments