Skip to content

Commit 58eb35f

Browse files
committed
Changes NACChannel setHeader to use hex2byte. Fixes #510
1 parent 80ed139 commit 58eb35f

File tree

3 files changed

+17
-2
lines changed

3 files changed

+17
-2
lines changed

jpos/src/main/java/org/jpos/iso/ISOUtil.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -299,7 +299,7 @@ public static String bcd2str(byte[] b, int offset,
299299
return d.toString();
300300
}
301301
/**
302-
* converts a a byte array to a String with padding support
302+
* converts a byte array to a String with padding support
303303
* @param b - HEX representation
304304
* @param offset - starting offset
305305
* @param len - BCD field len

jpos/src/main/java/org/jpos/iso/channel/NACChannel.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -114,7 +114,7 @@ protected void sendMessageHeader(ISOMsg m, int len) throws IOException {
114114
* @param header String as seen by QSP
115115
*/
116116
public void setHeader (String header) {
117-
super.setHeader (ISOUtil.str2bcd(header, false));
117+
super.setHeader(ISOUtil.hex2byte(header, null)); //fixes #jPOS-510
118118
}
119119
public void setConfiguration (Configuration cfg)
120120
throws ConfigurationException

jpos/src/test/java/org/jpos/iso/channel/NACChannelTest.java

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,9 +27,11 @@
2727
import static org.junit.jupiter.api.Assertions.fail;
2828

2929
import java.net.ServerSocket;
30+
import java.nio.charset.StandardCharsets;
3031

3132
import org.jpos.iso.ISOMsg;
3233
import org.jpos.iso.ISOPackager;
34+
import org.jpos.iso.ISOUtil;
3335
import org.jpos.iso.filter.DelayFilter;
3436
import org.jpos.iso.packager.CTCSubFieldPackager;
3537
import org.jpos.iso.packager.ISO93APackager;
@@ -236,4 +238,17 @@ public void testSetHeaderThrowsNullPointerException() throws Throwable {
236238
assertSame(TPDU2, nACChannel.getHeader(), "nACChannel.getHeader()");
237239
}
238240
}
241+
242+
@Test
243+
void testSetHeaderDoesNotMangleOnNonHexCharacters() {
244+
//jPOS-510
245+
String expectedTpdu = "A4M09000";
246+
String hex = ISOUtil.hexString(expectedTpdu.getBytes()); //"41344D3039303030"
247+
248+
NACChannel channel = new NACChannel();
249+
channel.setHeader(hex);
250+
251+
byte[] header = channel.getHeader();
252+
assertEquals(expectedTpdu, new String(header, StandardCharsets.UTF_8));
253+
}
239254
}

0 commit comments

Comments
 (0)