[ 
https://issues.apache.org/jira/browse/DERBY-4799?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12909179#action_12909179
 ] 

Knut Anders Hatlen commented on DERBY-4799:
-------------------------------------------

NetConnectionReply.parseRDBNAM() is the method that parses the RDBNAM value 
sent from the server, and it indeed uses the CCSID manager. The reason why it 
has worked is probably that all the callers of that method have called it with 
skip==true, so that none of them actually do any decoding of the string. They 
just skip the specified number of bytes.

So I agree, changing DRDAConnThread.writeRDBNAM() so that it uses the CCSID 
manager would solve this bug. And that it switches to EBCDIC when talking to 
older clients is not a problem since they don't look at the value anyways.

Should I hold off committing this fix and just check in the test to verify that 
the problem is solved once you've finished up DERBY-4757?

> IllegalArgumentException when generating error message on server
> ----------------------------------------------------------------
>
>                 Key: DERBY-4799
>                 URL: https://issues.apache.org/jira/browse/DERBY-4799
>             Project: Derby
>          Issue Type: Bug
>          Components: Network Server
>    Affects Versions: 10.6.1.0
>            Reporter: Knut Anders Hatlen
>            Assignee: Knut Anders Hatlen
>         Attachments: fix.diff, test.diff
>
>
> If you for example try to connect to a non-existing database using the client 
> driver, and the name of the database has 18 characters or more, and at least 
> one of the characters in the database name is a non-ascii character, the 
> server will throw an IllegalArgumentException when trying to send the 
> "database not found" message back to the client.
> Example:
> ij> connect 'jdbc:derby://localhost/abcdefghijklmnopqå';
> ERROR 08006: A network protocol error was encountered and the connection has 
> been terminated: A PROTOCOL Data Stream Syntax Error was detected.  Reason: 
> 0x12. Plaintext connection attempt to an SSL enabled server?
> Printed to the console by the server:
> Tue Sep 14 09:12:05 CEST 2010 : fromIndex(60) > toIndex(59)
> java.lang.IllegalArgumentException: fromIndex(60) > toIndex(59)
>       at java.util.Arrays.rangeCheck(Arrays.java:1306)
>       at java.util.Arrays.fill(Arrays.java:2567)
>       at org.apache.derby.impl.drda.DDMWriter.padBytes(DDMWriter.java:1254)
>       at 
> org.apache.derby.impl.drda.DDMWriter.writeScalarPaddedBytes(DDMWriter.java:992)
>       at 
> org.apache.derby.impl.drda.DRDAConnThread.writeRDBNAM(DRDAConnThread.java:583)
>       at 
> org.apache.derby.impl.drda.DRDAConnThread.writeRDBfailure(DRDAConnThread.java:1248)
>       at 
> org.apache.derby.impl.drda.DRDAConnThread.parseDRDAConnection(DRDAConnThread.java:1194)
>       at 
> org.apache.derby.impl.drda.DRDAConnThread.processCommands(DRDAConnThread.java:968)
>       at 
> org.apache.derby.impl.drda.DRDAConnThread.run(DRDAConnThread.java:294)

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.

Reply via email to