Program: 187875
Project: 187875
Buggy source:
/** 
 * unencrypt encrypted string previously encrypted with encryptWithSessionKey()
 * @author Peli
 * @param ciphertext
 * @return decrypted String
 * @throws Exception
 */
public String decryptWithSessionKey(String ciphertext) throws CryptoHelperException {
  status=false;
  if (password == null) {
    String msg="String_Node_Str";
    throw new CryptoHelperException(msg);
  }
  if ((ciphertext == null) || (ciphertext == "String_Node_Str")) {
    return "String_Node_Str";
  }
  String cipherSessionKey=null;
  try {
    cipherSessionKey=ciphertext.substring(0,96);
    ciphertext=ciphertext.substring(96);
  }
 catch (  IndexOutOfBoundsException e) {
    Log.e(TAG,"String_Node_Str");
    return "String_Node_Str";
  }
  byte[] byteCipherSessionKey=hexStringToBytes(cipherSessionKey);
  byte[] byteSessionKey={};
  try {
    pbeCipher.init(Cipher.DECRYPT_MODE,pbeKey,pbeParamSpec);
    byteSessionKey=pbeCipher.doFinal(byteCipherSessionKey);
    status=true;
  }
 catch (  IllegalBlockSizeException e) {
    Log.e(TAG,"String_Node_Str" + e.toString());
  }
catch (  BadPaddingException e) {
    Log.e(TAG,"String_Node_Str" + e.toString());
  }
catch (  InvalidKeyException e) {
    Log.e(TAG,"String_Node_Str" + e.toString());
  }
catch (  InvalidAlgorithmParameterException e) {
    Log.e(TAG,"String_Node_Str" + e.toString());
  }
  String stringSessionKey=new String(byteSessionKey);
  PBEKeySpec sessionPbeKeySpec=new PBEKeySpec(stringSessionKey.toCharArray());
  SecretKey sessionPbeKey=null;
  try {
    sessionPbeKey=keyFac.generateSecret(sessionPbeKeySpec);
  }
 catch (  InvalidKeySpecException e) {
    Log.e(TAG,"String_Node_Str" + e.toString());
  }
  byte[] byteCiphertext=hexStringToBytes(ciphertext);
  byte[] plaintext={};
  try {
    pbeCipher.init(Cipher.DECRYPT_MODE,sessionPbeKey,pbeParamSpec);
    plaintext=pbeCipher.doFinal(byteCiphertext);
    status=true;
  }
 catch (  IllegalBlockSizeException e) {
    Log.e(TAG,"String_Node_Str" + e.toString());
  }
catch (  BadPaddingException e) {
    Log.e(TAG,"String_Node_Str" + e.toString());
  }
catch (  InvalidKeyException e) {
    Log.e(TAG,"String_Node_Str" + e.toString());
  }
catch (  InvalidAlgorithmParameterException e) {
    Log.e(TAG,"String_Node_Str" + e.toString());
  }
  return new String(plaintext);
}

Fixed version (ground truth):
/** 
 * unencrypt encrypted string previously encrypted with encryptWithSessionKey()
 * @author Peli
 * @param ciphertext
 * @return decrypted String
 * @throws Exception
 */
public String decryptWithSessionKey(String ciphertext) throws CryptoHelperException {
  status=false;
  if (password == null) {
    String msg="String_Node_Str";
    throw new CryptoHelperException(msg);
  }
  if ((ciphertext == null) || (ciphertext == "String_Node_Str")) {
    return "String_Node_Str";
  }
  String cipherVersion=null;
  String cipherSessionKey=null;
  try {
    cipherVersion=ciphertext.substring(0,1);
    if (cipherVersion.equals("String_Node_Str")) {
      cipherSessionKey=ciphertext.substring(1,97);
      ciphertext=ciphertext.substring(97);
    }
 else {
      Log.e(TAG,"String_Node_Str" + cipherVersion);
      return "String_Node_Str";
    }
  }
 catch (  IndexOutOfBoundsException e) {
    Log.e(TAG,"String_Node_Str");
    return "String_Node_Str";
  }
  byte[] byteCipherSessionKey=hexStringToBytes(cipherSessionKey);
  byte[] byteSessionKey={};
  try {
    pbeCipher.init(Cipher.DECRYPT_MODE,pbeKey,pbeParamSpec);
    byteSessionKey=pbeCipher.doFinal(byteCipherSessionKey);
    status=true;
  }
 catch (  IllegalBlockSizeException e) {
    Log.e(TAG,"String_Node_Str" + e.toString());
  }
catch (  BadPaddingException e) {
    Log.e(TAG,"String_Node_Str" + e.toString());
  }
catch (  InvalidKeyException e) {
    Log.e(TAG,"String_Node_Str" + e.toString());
  }
catch (  InvalidAlgorithmParameterException e) {
    Log.e(TAG,"String_Node_Str" + e.toString());
  }
  String stringSessionKey=new String(byteSessionKey);
  PBEKeySpec sessionPbeKeySpec=new PBEKeySpec(stringSessionKey.toCharArray());
  SecretKey sessionPbeKey=null;
  try {
    sessionPbeKey=keyFac.generateSecret(sessionPbeKeySpec);
  }
 catch (  InvalidKeySpecException e) {
    Log.e(TAG,"String_Node_Str" + e.toString());
  }
  byte[] byteCiphertext=hexStringToBytes(ciphertext);
  byte[] plaintext={};
  try {
    pbeCipher.init(Cipher.DECRYPT_MODE,sessionPbeKey,pbeParamSpec);
    plaintext=pbeCipher.doFinal(byteCiphertext);
    status=true;
  }
 catch (  IllegalBlockSizeException e) {
    Log.e(TAG,"String_Node_Str" + e.toString());
  }
catch (  BadPaddingException e) {
    Log.e(TAG,"String_Node_Str" + e.toString());
  }
catch (  InvalidKeyException e) {
    Log.e(TAG,"String_Node_Str" + e.toString());
  }
catch (  InvalidAlgorithmParameterException e) {
    Log.e(TAG,"String_Node_Str" + e.toString());
  }
  return new String(plaintext);
}