[ http://issues.apache.org/jira/browse/DERBY-1080?page=all ]
Sunitha Kambhampati updated DERBY-1080:
---------------------------------------
Attachment: derby1080.2.diff.txt
derby1080.2.stat.txt
I am attaching a patch for Bryan's comments in
http://www.nabble.com/Re%3A-jira-Updated%3A-%28DERBY-1080%29-Connection-reset-when-using-security-mechanism%3DEUSRIDPWD-results-in-protocol-error.-p3293695.html
Thanks Bryan and Kathey for looking at this patch.
This patch (Derby1080.2.diff.txt) makes the following change compared to
previous Derby1080.diff.txt.
1) Reset of database.decryptedUserId and decryptedPassword is moved from
DRDAConnThread to Database.reset(). Note: that these 2 variables were not
correctly reset for connection-reuse which was causing the problem mentioned in
this jira. This patch adds reset() method in Database and resets the above 2
variable and also resets the variables related to security mechanism only.
I talked to Kathey on IRC about this:
-- the above change fixes this particular problem in this issue.
-- But more investigation is required for database reset when connection
pooling and transaction pooling is done.
-- File a jira so the reset cleanup can be done after investigation.
Does this sound reasonable ?
2) I have reorganized the regression test and added lots of comments. I hope
they are helpful in understanding the expected results.
3) Bryan asked"Lastly, would your test have been any different if you had used
ConnectionPoolDataSource.getPooledConnection(String user, String password)
rather than ConnectionPoolDataSource.getPooledConnection()? "
The result would be the same. For eusridpwd case, the client sends the
encrypted userid and password sectkns as part of SECCHK. The protocol error was
happening because we only read the 2 sectkns if the database.decryptedUserId ,
database.decryptedPassword is null, otherwise we think we have already read
this. Thus on a connection reset,if the decryptedUserId and decryptedPassword
are not reset, server assumes we have seen more SECTKN's and thus we throw
error too many codepoints.
Per the code: The userid/password passed in getPooledConnection will be the
user and password that is used. If userid and password is not set in
getPooledConnection, then the information is retrieved from the
ConnectionPoolDataSource.
svn stat:
code change
M java\drda\org\apache\derby\impl\drda\Database.java
M java\drda\org\apache\derby\impl\drda\DRDAConnThread.java
test change
M
java\testing\org\apache\derbyTesting\functionTests\tests\derbynet\testSecMec.java
master file for JCC2.4 driver and for IBM131, Sun JVM131,141,142,15.
M
java\testing\org\apache\derbyTesting\functionTests\master\DerbyNet\testSecMec.out
master file for JCC2.6 driver and for IBM131, Sun JVM(versions 131,141,142,15)
M
java\testing\org\apache\derbyTesting\functionTests\master\DerbyNet\ver2.6\testSecMec.out
master file for JCC2.6 driver and for IBM (versions 141,142,15). Note these
jvms support the EUSRIDPWD security mechanism.
M
java\testing\org\apache\derbyTesting\functionTests\master\DerbyNet\ibm14\ver2.6\testSecMec.out
master file for JCC2.4 driver and for IBM(versions 141,142,15). Note these jvms
support the EUSRIDPWD security mechanism.
M
java\testing\org\apache\derbyTesting\functionTests\master\DerbyNet\ibm14\testSecMec.out
master file for client driver and for IBM131, Sun JVM (versions 131,141,142,15)
M
java\testing\org\apache\derbyTesting\functionTests\master\DerbyNetClient\testSecMec.out
master file for client driver and for IBM jvm (versions 141,142,15)
M
java\testing\org\apache\derbyTesting\functionTests\master\DerbyNetClient\ibm14\testSecMec.out
Test ran ok with derbynetclientmats and derbynet with ibm142 on linux with
known failures in surtest and stress.multi.
testSecMec.java was run with derby client, JCC2.4,JCC2.6 with
ibm131,ibm141,ibm142,ibm15,sun - jdk131,141,142,15 ok.
Please review this change. Thanks.
> Connection reset when using security mechanism=EUSRIDPWD results in protocol
> error.
> -----------------------------------------------------------------------------------
>
> Key: DERBY-1080
> URL: http://issues.apache.org/jira/browse/DERBY-1080
> Project: Derby
> Type: Bug
> Versions: 10.0.2.0, 10.0.2.1, 10.1.1.0, 10.1.1.1, 10.1.1.2, 10.1.2.0,
> 10.1.2.1, 10.1.2.2
> Reporter: Sunitha Kambhampati
> Assignee: Sunitha Kambhampati
> Fix For: 10.2.0.0
> Attachments: Derby1080.diff.txt, Derby1080.stat.txt, derby1080.2.diff.txt,
> derby1080.2.stat.txt
>
> if connection is reset, the security mechanism related information for
> EUSRIDPWD is not reset correctly and this leads to a protocol error.
--
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators:
http://issues.apache.org/jira/secure/Administrators.jspa
-
For more information on JIRA, see:
http://www.atlassian.com/software/jira