From derby-commits-return-11120-apmail-db-derby-commits-archive=db.apache.org@db.apache.org Mon Jan 26 17:30:04 2009 Return-Path: Delivered-To: apmail-db-derby-commits-archive@www.apache.org Received: (qmail 86698 invoked from network); 26 Jan 2009 17:30:04 -0000 Received: from hermes.apache.org (HELO mail.apache.org) (140.211.11.2) by minotaur.apache.org with SMTP; 26 Jan 2009 17:30:04 -0000 Received: (qmail 12227 invoked by uid 500); 26 Jan 2009 17:30:04 -0000 Delivered-To: apmail-db-derby-commits-archive@db.apache.org Received: (qmail 12207 invoked by uid 500); 26 Jan 2009 17:30:04 -0000 Mailing-List: contact derby-commits-help@db.apache.org; run by ezmlm Precedence: bulk list-help: list-unsubscribe: List-Post: Reply-To: "Derby Development" List-Id: Delivered-To: mailing list derby-commits@db.apache.org Received: (qmail 12198 invoked by uid 99); 26 Jan 2009 17:30:04 -0000 Received: from athena.apache.org (HELO athena.apache.org) (140.211.11.136) by apache.org (qpsmtpd/0.29) with ESMTP; Mon, 26 Jan 2009 09:30:04 -0800 X-ASF-Spam-Status: No, hits=-2000.0 required=10.0 tests=ALL_TRUSTED X-Spam-Check-By: apache.org Received: from [140.211.11.4] (HELO eris.apache.org) (140.211.11.4) by apache.org (qpsmtpd/0.29) with ESMTP; Mon, 26 Jan 2009 17:30:03 +0000 Received: by eris.apache.org (Postfix, from userid 65534) id DF3E023888E6; Mon, 26 Jan 2009 17:29:42 +0000 (UTC) Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: svn commit: r737760 - in /db/derby/code/branches/10.4/java: drda/org/apache/derby/impl/drda/ testing/org/apache/derbyTesting/functionTests/master/ testing/org/apache/derbyTesting/functionTests/master/ibm14/ testing/org/apache/derbyTesting/functionTests... Date: Mon, 26 Jan 2009 17:29:42 -0000 To: derby-commits@db.apache.org From: kmarsden@apache.org X-Mailer: svnmailer-1.0.8 Message-Id: <20090126172942.DF3E023888E6@eris.apache.org> X-Virus-Checked: Checked by ClamAV on apache.org Author: kmarsden Date: Mon Jan 26 17:29:40 2009 New Revision: 737760 URL: http://svn.apache.org/viewvc?rev=737760&view=rev Log: DERBY-4004 Remove required RDBNAM from ACCSEC. Use SECCHK RDBNAM if none is provided on ACCSEC Backporting to 10.4 to avoid change in error message when connecting 10.5 client to 10.4 server with multibyte database name. Added: db/derby/code/branches/10.4/java/testing/org/apache/derbyTesting/functionTests/tests/derbynet/excsat_accsecrd_nordb.inc - copied unchanged from r734190, db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/derbynet/excsat_accsecrd_nordb.inc db/derby/code/branches/10.4/java/testing/org/apache/derbyTesting/functionTests/tests/derbynet/excsat_secchk_nordbonaccsec.inc - copied unchanged from r734190, db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/derbynet/excsat_secchk_nordbonaccsec.inc Modified: db/derby/code/branches/10.4/java/drda/org/apache/derby/impl/drda/DRDAConnThread.java db/derby/code/branches/10.4/java/drda/org/apache/derby/impl/drda/Database.java db/derby/code/branches/10.4/java/testing/org/apache/derbyTesting/functionTests/master/ibm14/testProtocol.out db/derby/code/branches/10.4/java/testing/org/apache/derbyTesting/functionTests/master/testProtocol.out db/derby/code/branches/10.4/java/testing/org/apache/derbyTesting/functionTests/tests/derbynet/protocol.tests db/derby/code/branches/10.4/java/testing/org/apache/derbyTesting/functionTests/tests/derbynet/testProtocol_app.properties Modified: db/derby/code/branches/10.4/java/drda/org/apache/derby/impl/drda/DRDAConnThread.java URL: http://svn.apache.org/viewvc/db/derby/code/branches/10.4/java/drda/org/apache/derby/impl/drda/DRDAConnThread.java?rev=737760&r1=737759&r2=737760&view=diff ============================================================================== --- db/derby/code/branches/10.4/java/drda/org/apache/derby/impl/drda/DRDAConnThread.java (original) +++ db/derby/code/branches/10.4/java/drda/org/apache/derby/impl/drda/DRDAConnThread.java Mon Jan 26 17:29:40 2009 @@ -1912,7 +1912,7 @@ String dbname = parseRDBNAM(); Database d = session.getDatabase(dbname); if (d == null) - addDatabase(dbname); + initializeDatabase(dbname); else { // reset database for connection re-use @@ -1942,13 +1942,8 @@ missingCodePoint(CodePoint.SECMEC); - // RESOLVE - when we look further into security we might want to - // handle this part of the protocol at the session level without - // requiring a database for when authentication is used but there - // is no database level security if (database == null) - missingCodePoint(CodePoint.RDBNAM); - + initializeDatabase(null); database.securityMechanism = securityMechanism; database.secTokenIn = secTokenIn; @@ -3115,7 +3110,13 @@ String dbname = parseRDBNAM(); if (database != null) { - if (!database.dbName.equals(dbname)) + if (database.dbName == null) { + // we didn't get the RDBNAM on ACCSEC. Set it here + database.setDatabaseName(dbname); + session.addDatabase(database); + session.database = database; + } + else if (!database.dbName.equals(dbname)) rdbnamMismatch(CodePoint.SECCHK); } else @@ -3123,7 +3124,7 @@ // we should already have added the database in ACCSEC // added code here in case we make the SECMEC session rather // than database wide - addDatabase(dbname); + initializeDatabase(dbname); } break; default: @@ -3136,6 +3137,10 @@ if (securityMechanism == 0) missingCodePoint(CodePoint.SECMEC); + // Check that we have a database name. + if (database == null || database.dbName == null) + missingCodePoint(CodePoint.RDBNAM); + //check if we have a userid and password when we need it if (securityCheckCode == 0 && (database.securityMechanism == CodePoint.SECMEC_USRIDPWD|| @@ -3329,7 +3334,7 @@ //first time we have seen a database name Database d = session.getDatabase(dbname); if (d == null) - addDatabase(dbname); + initializeDatabase(dbname); else { database = d; @@ -8135,10 +8140,14 @@ return false; //to shut the compiler up } /** - * Add a database to the current session + * Create a new database and intialize the + * DRDAConnThread database. + * + * @param dbname database name to initialize. If + * dbnam is non null, add database to the current session * */ - private void addDatabase(String dbname) + private void initializeDatabase(String dbname) { Database db; if (appRequester.isXARequester()) @@ -8147,8 +8156,10 @@ } else db = new Database(dbname); - session.addDatabase(db); - session.database = db; + if (dbname != null) { + session.addDatabase(db); + session.database = db; + } database = db; } /** Modified: db/derby/code/branches/10.4/java/drda/org/apache/derby/impl/drda/Database.java URL: http://svn.apache.org/viewvc/db/derby/code/branches/10.4/java/drda/org/apache/derby/impl/drda/Database.java?rev=737760&r1=737759&r2=737760&view=diff ============================================================================== --- db/derby/code/branches/10.4/java/drda/org/apache/derby/impl/drda/Database.java (original) +++ db/derby/code/branches/10.4/java/drda/org/apache/derby/impl/drda/Database.java Mon Jan 26 17:29:40 2009 @@ -90,6 +90,18 @@ */ Database (String dbName) { + setDatabaseName(dbName); + this.stmtTable = new Hashtable(); + initializeDefaultStatement(); + } + + /** + * Take database name including attributes and set + * attrString and shortDbName accordingly. + * + * @param dbName database name, including attributes. + */ + public void setDatabaseName(String dbName) { if (dbName != null) { int attrOffset = dbName.indexOf(';'); @@ -103,11 +115,9 @@ } this.dbName = dbName; - this.stmtTable = new Hashtable(); - initializeDefaultStatement(); - } - + } + private void initializeDefaultStatement() { this.defaultStatement = new DRDAStatement(this); Modified: db/derby/code/branches/10.4/java/testing/org/apache/derbyTesting/functionTests/master/ibm14/testProtocol.out URL: http://svn.apache.org/viewvc/db/derby/code/branches/10.4/java/testing/org/apache/derbyTesting/functionTests/master/ibm14/testProtocol.out?rev=737760&r1=737759&r2=737760&view=diff ============================================================================== --- db/derby/code/branches/10.4/java/testing/org/apache/derbyTesting/functionTests/master/ibm14/testProtocol.out (original) +++ db/derby/code/branches/10.4/java/testing/org/apache/derbyTesting/functionTests/master/ibm14/testProtocol.out Mon Jan 26 17:29:40 2009 @@ -31,8 +31,6 @@ PASSED Test non null SECMGRNM PASSED -Test missing RDBNAM on ACCSEC -PASSED Test specifying encrypted security mechanism without a security token SECMEC=9 SECCHKCD=14 PASSED @@ -63,6 +61,10 @@ PASSED Test missing CRRTKN PASSED +Test no RDBNAM on ACCSEC. Sent with SECCHK +PASSED +Test missing RDBNAM on SECCHK +PASSED Test too small value for RDBACCCL PASSED Test too large value for RDBACCCL Modified: db/derby/code/branches/10.4/java/testing/org/apache/derbyTesting/functionTests/master/testProtocol.out URL: http://svn.apache.org/viewvc/db/derby/code/branches/10.4/java/testing/org/apache/derbyTesting/functionTests/master/testProtocol.out?rev=737760&r1=737759&r2=737760&view=diff ============================================================================== --- db/derby/code/branches/10.4/java/testing/org/apache/derbyTesting/functionTests/master/testProtocol.out (original) +++ db/derby/code/branches/10.4/java/testing/org/apache/derbyTesting/functionTests/master/testProtocol.out Mon Jan 26 17:29:40 2009 @@ -31,8 +31,6 @@ PASSED Test non null SECMGRNM PASSED -Test missing RDBNAM on ACCSEC -PASSED Test specifying encrypted security mechanism without a security token SECMEC=3 SECMEC=4 SECMEC=8 SECCHKCD=1 PASSED @@ -63,6 +61,10 @@ PASSED Test missing CRRTKN PASSED +Test no RDBNAM on ACCSEC. Sent with SECCHK +PASSED +Test missing RDBNAM on SECCHK +PASSED Test too small value for RDBACCCL PASSED Test too large value for RDBACCCL Modified: db/derby/code/branches/10.4/java/testing/org/apache/derbyTesting/functionTests/tests/derbynet/protocol.tests URL: http://svn.apache.org/viewvc/db/derby/code/branches/10.4/java/testing/org/apache/derbyTesting/functionTests/tests/derbynet/protocol.tests?rev=737760&r1=737759&r2=737760&view=diff ============================================================================== --- db/derby/code/branches/10.4/java/testing/org/apache/derbyTesting/functionTests/tests/derbynet/protocol.tests (original) +++ db/derby/code/branches/10.4/java/testing/org/apache/derbyTesting/functionTests/tests/derbynet/protocol.tests Mon Jan 26 17:29:40 2009 @@ -194,22 +194,6 @@ checkError SYNTAXRM 8 11 SECMGRNM endTest // -DISPLAY "Test missing RDBNAM on ACCSEC" -createDssRequest -startDdm EXCSAT -writeScalarString EXTNAM "test" -endDdm -endDss -createDssRequest -startDdm ACCSEC -writeScalar2Bytes SECMEC 9 // Encrypted userid password -endDdm -endDss -flush -skipDss // don't care about the EXCSATRM so just skip -checkerror SYNTAXRM 8 14 RDBNAM -endTest -// DISPLAY "Test specifying encrypted security mechanism without a security token" createDssRequest startDdm EXCSAT @@ -441,6 +425,36 @@ checkError SYNTAXRM 8 14 CRRTKN endTest // +DISPLAY "Test no RDBNAM on ACCSEC. Sent with SECCHK" +include "excsat_secchk_nordbonaccsec.inc" +createDssRequest +startDdm ACCRDB +writeScalar2Bytes RDBACCCL SQLAM +writeScalarBytes CRRTKN "0xd5c6f0f0f0f0f0f14bc7c3c2f600ec774aa60e" +writeScalarString PRDID "TST01000" +writeScalarString TYPDEFNAM QTDSQLJVM +startDdm TYPDEFOVR +writeScalar2Bytes CCSIDSBC 1208 +endDdm +endDdm +endDss +flush +skipDdm // don't care about SECCHKRM so just skip +skipDss // don't care about ACCRDBRM +endTest +DISPLAY "Test missing RDBNAM on SECCHK" +include "excsat_accsecrd_nordb.inc" +createDssRequest +startDdm SECCHK +writeScalar2Bytes SECMEC 3 // userid password +writeScalarString USRID test +writeScalarString PASSWORD test +endDdm +endDss +flush +checkError SYNTAXRM 8 14 RDBNAM +endTest +// DISPLAY "Test too small value for RDBACCCL" include "excsat_secchk.inc" createDssRequest Modified: db/derby/code/branches/10.4/java/testing/org/apache/derbyTesting/functionTests/tests/derbynet/testProtocol_app.properties URL: http://svn.apache.org/viewvc/db/derby/code/branches/10.4/java/testing/org/apache/derbyTesting/functionTests/tests/derbynet/testProtocol_app.properties?rev=737760&r1=737759&r2=737760&view=diff ============================================================================== --- db/derby/code/branches/10.4/java/testing/org/apache/derbyTesting/functionTests/tests/derbynet/testProtocol_app.properties (original) +++ db/derby/code/branches/10.4/java/testing/org/apache/derbyTesting/functionTests/tests/derbynet/testProtocol_app.properties Mon Jan 26 17:29:40 2009 @@ -35,5 +35,5 @@ database=jdbc:derby:wombat;create=true derby.optimizer.noTimeout=true -supportfiles=tests/derbynet/protocol.tests,tests/derbynet/excsat_accsecrd1.inc,tests/derbynet/excsat_accsecrd2.inc,tests/derbynet/excsat_secchk.inc,tests/derbynet/connect.inc,tests/derbynet/values1.inc,tests/derbynet/values64kblksz.inc +supportfiles=tests/derbynet/protocol.tests,tests/derbynet/excsat_accsecrd1.inc,tests/derbynet/excsat_accsecrd2.inc,tests/derbynet/excsat_accsecrd_nordb.inc,tests/derbynet/excsat_secchk.inc,tests/derbynet/excsat_secchk_nordbonaccsec.inc,tests/derbynet/connect.inc,tests/derbynet/values1.inc,tests/derbynet/values64kblksz.inc