Program: 52417
Project: 52417
Buggy source:
private void overflowTest(){
  int macBitSize=256;
  byte[] input=new byte[1024];
  for (int i=0; i != input.length; i++) {
    input[i]=(byte)(i & 0xff);
  }
  byte[] key=Hex.decode("String_Node_Str");
  byte[] expectedMac=Hex.decode("String_Node_Str");
  byte[] mac=new byte[macBitSize / 8];
  DSTU7564Mac dstu7564mac=new DSTU7564Mac(macBitSize);
  dstu7564mac.init(new KeyParameter(key));
  dstu7564mac.update(input,0,input.length);
  dstu7564mac.doFinal(mac,0);
  if (!Arrays.areEqual(expectedMac,mac)) {
    fail("String_Node_Str" + Hex.toHexString(expectedMac) + "String_Node_Str"+ Hex.toHexString(mac));
  }
  macBitSize=256;
  input=new byte[1023];
  for (int i=0; i != input.length; i++) {
    input[i]=(byte)(i & 0xff);
  }
  key=Hex.decode("String_Node_Str");
  expectedMac=Hex.decode("String_Node_Str");
  mac=new byte[macBitSize / 8];
  dstu7564mac=new DSTU7564Mac(macBitSize);
  dstu7564mac.init(new KeyParameter(key));
  dstu7564mac.update(input,0,input.length);
  dstu7564mac.doFinal(mac,0);
  if (!Arrays.areEqual(expectedMac,mac)) {
    fail("String_Node_Str" + Hex.toHexString(expectedMac) + "String_Node_Str"+ Hex.toHexString(mac));
  }
  DSTU7564Digest digest=new DSTU7564Digest(macBitSize);
  byte[] expectedDigest=Hex.decode("String_Node_Str");
  byte[] digestBuf=new byte[macBitSize / 8];
  digest.update(input,0,input.length);
  digest.doFinal(digestBuf,0);
  if (!Arrays.areEqual(expectedDigest,digestBuf)) {
    fail("String_Node_Str" + Hex.toHexString(expectedDigest) + "String_Node_Str"+ Hex.toHexString(digestBuf));
  }
  expectedDigest=Hex.decode("String_Node_Str");
  input=new byte[51];
  for (int i=0; i != input.length; i++) {
    input[i]=(byte)(i & 0xff);
  }
  digest.update(input,0,input.length);
  digest.doFinal(digestBuf,0);
  if (!Arrays.areEqual(expectedDigest,digestBuf)) {
    fail("String_Node_Str" + Hex.toHexString(expectedDigest) + "String_Node_Str"+ Hex.toHexString(digestBuf));
  }
  input=new byte[52];
  for (int i=0; i != input.length; i++) {
    input[i]=(byte)(i & 0xff);
  }
  expectedDigest=Hex.decode("String_Node_Str");
  digest.update(input,0,input.length);
  digest.doFinal(digestBuf,0);
  if (!Arrays.areEqual(expectedDigest,digestBuf)) {
    fail("String_Node_Str" + Hex.toHexString(expectedDigest) + "String_Node_Str"+ Hex.toHexString(digestBuf));
  }
}

Fixed version (ground truth):
private void overflowTest(){
  int macBitSize=256;
  byte[] input=new byte[1024];
  for (int i=0; i != input.length; i++) {
    input[i]=(byte)(i & 0xff);
  }
  byte[] key=Hex.decode("String_Node_Str");
  byte[] expectedMac=Hex.decode("String_Node_Str");
  byte[] mac=new byte[macBitSize / 8];
  DSTU7564Mac dstu7564mac=new DSTU7564Mac(macBitSize);
  macBitSize=256;
  input=new byte[1023];
  for (int i=0; i != input.length; i++) {
    input[i]=(byte)(i & 0xff);
  }
  key=Hex.decode("String_Node_Str");
  expectedMac=Hex.decode("String_Node_Str");
  mac=new byte[macBitSize / 8];
  dstu7564mac=new DSTU7564Mac(macBitSize);
  dstu7564mac.init(new KeyParameter(key));
  dstu7564mac.update(input,0,input.length);
  dstu7564mac.doFinal(mac,0);
  if (!Arrays.areEqual(expectedMac,mac)) {
    fail("String_Node_Str" + Hex.toHexString(expectedMac) + "String_Node_Str"+ Hex.toHexString(mac));
  }
}