Author: sebb
Date: Wed Nov  5 10:28:50 2008
New Revision: 711647

URL: http://svn.apache.org/viewvc?rev=711647&view=rev
Log:
Check for illegal hex characters

Modified:
    
jakarta/jmeter/trunk/src/protocol/tcp/org/apache/jmeter/protocol/tcp/sampler/BinaryTCPClientImpl.java

Modified: 
jakarta/jmeter/trunk/src/protocol/tcp/org/apache/jmeter/protocol/tcp/sampler/BinaryTCPClientImpl.java
URL: 
http://svn.apache.org/viewvc/jakarta/jmeter/trunk/src/protocol/tcp/org/apache/jmeter/protocol/tcp/sampler/BinaryTCPClientImpl.java?rev=711647&r1=711646&r2=711647&view=diff
==============================================================================
--- 
jakarta/jmeter/trunk/src/protocol/tcp/org/apache/jmeter/protocol/tcp/sampler/BinaryTCPClientImpl.java
 (original)
+++ 
jakarta/jmeter/trunk/src/protocol/tcp/org/apache/jmeter/protocol/tcp/sampler/BinaryTCPClientImpl.java
 Wed Nov  5 10:28:50 2008
@@ -65,17 +65,22 @@
     /**
      * Convert hex string to binary byte array.
      * 
-     * @param s - hex-encoded binary string
-     * @return Byte array containing binary representation of input 
hex-encoded string 
-     */
-    public static final byte[] hexStringToByteArray(String s) {
-        if (s.length() % 2 == 0) {
-            char[] sc = s.toCharArray();
+     * @param hexEncodedBinary - hex-encoded binary string
+     * @return Byte array containing binary representation of input 
hex-encoded string
+     * @throws IllegalArgumentException if string is not an even number of hex 
digits
+     */
+    public static final byte[] hexStringToByteArray(String hexEncodedBinary) {
+        if (hexEncodedBinary.length() % 2 == 0) {
+            char[] sc = hexEncodedBinary.toCharArray();
             byte[] ba = new byte[sc.length / 2];
 
             for (int i = 0; i < ba.length; i++) {
                 int nibble0 = Character.digit(sc[i * 2], 16);
                 int nibble1 = Character.digit(sc[i * 2 + 1], 16);
+                if (nibble0 == -1 || nibble1 == -1){
+                    throw new IllegalArgumentException(
+                    "Hex-encoded binary string contains an invalid hex digit 
in '"+sc[i * 2]+sc[i * 2 + 1]+"'");                    
+                }
                 ba[i] = (byte) ((nibble0 << 4) | (nibble1));
             }
 



---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to