diff --git a/src/main/java/com/sunyard/sge/database/SydApiSM4.java b/src/main/java/com/sunyard/sge/database/SydApiSM4.java index 893f60d..20a453c 100644 --- a/src/main/java/com/sunyard/sge/database/SydApiSM4.java +++ b/src/main/java/com/sunyard/sge/database/SydApiSM4.java @@ -98,7 +98,7 @@ public class SydApiSM4 { } else { if (0 == sourceWrap.array().length) { - if (plength<16){ + if (plength<16||plength/16<2){ api.SYD_SM4_LongData(iKeyIndex, new byte[0], iPkgNum, iFlag); ByteBuffer bufferResult = ByteBuffer.allocate(sourceWrap.array().length + plength); bufferResult.put(sourceWrap); @@ -125,7 +125,7 @@ public class SydApiSM4 { return api.SYD_SM4_LongData(iKeyIndex, pcdataResult, iPkgNum, iFlag); } else { - if (16 > pcData.length + sourceWrap.array().length) { + if (16 > pcData.length + sourceWrap.array().length||(pcData.length + sourceWrap.array().length)/16<2) { ByteBuffer bufferResult = ByteBuffer.allocate(sourceWrap.array().length + plength); bufferResult.put(sourceWrap.array()); bufferResult.put(pcData);