Program: 187860
Project: 187860
Buggy source:
public void onServiceConnected(ComponentName className,IBinder boundService){
  service=ServiceDispatch.Stub.asInterface((IBinder)boundService);
  if (mServiceIntent != null) {
    setServiceParametersFromExtrasAndDispatchAction(mServiceIntent);
    mServiceIntent=null;
    return;
  }
  boolean promptforpassword=getIntent().getBooleanExtra(CryptoIntents.EXTRA_PROMPT,true);
  if (debug)   Log.d(TAG,"String_Node_Str" + promptforpassword);
  try {
    if (service.getPassword() == null) {
      if (promptforpassword) {
        if (debug)         Log.d(TAG,"String_Node_Str");
        Intent askPass=new Intent(getApplicationContext(),AskPassword.class);
        final Intent thisIntent=getIntent();
        String inputBody=thisIntent.getStringExtra(CryptoIntents.EXTRA_TEXT);
        askPass.putExtra(CryptoIntents.EXTRA_TEXT,inputBody);
        askPass.putExtra(AskPassword.EXTRA_IS_LOCAL,askPassIsLocal);
        startActivityForResult(askPass,REQUEST_CODE_ASK_PASSWORD);
      }
 else {
        if (debug)         Log.d(TAG,"String_Node_Str");
        setResult(RESULT_CANCELED);
        finish();
      }
    }
 else {
      if (debug)       Log.d(TAG,"String_Node_Str");
      boolean externalAccess=mPreferences.getBoolean(Preferences.PREFERENCE_ALLOW_EXTERNAL_ACCESS,false);
      if (askPassIsLocal || externalAccess) {
        salt=service.getSalt();
        masterKey=service.getPassword();
        actionDispatch();
      }
 else {
        if (debug)         Log.d(TAG,"String_Node_Str");
        showDialogAllowExternalAccess();
      }
    }
  }
 catch (  RemoteException e) {
    Log.d(TAG,e.toString());
  }
  if (debug)   Log.d(TAG,"String_Node_Str");
}

Fixed version (ground truth):
public void onServiceConnected(ComponentName className,IBinder boundService){
  service=ServiceDispatch.Stub.asInterface((IBinder)boundService);
  if (mServiceIntent != null) {
    setServiceParametersFromExtrasAndDispatchAction(mServiceIntent);
    mServiceIntent=null;
    return;
  }
  try {
    if (service.getPassword() == null) {
      boolean promptforpassword=getIntent().getBooleanExtra(CryptoIntents.EXTRA_PROMPT,true);
      if (debug)       Log.d(TAG,"String_Node_Str" + promptforpassword);
      if (promptforpassword) {
        if (debug)         Log.d(TAG,"String_Node_Str");
        Intent askPass=new Intent(getApplicationContext(),AskPassword.class);
        final Intent thisIntent=getIntent();
        String inputBody=thisIntent.getStringExtra(CryptoIntents.EXTRA_TEXT);
        askPass.putExtra(CryptoIntents.EXTRA_TEXT,inputBody);
        askPass.putExtra(AskPassword.EXTRA_IS_LOCAL,askPassIsLocal);
        startActivityForResult(askPass,REQUEST_CODE_ASK_PASSWORD);
      }
 else {
        if (debug)         Log.d(TAG,"String_Node_Str");
        setResult(RESULT_CANCELED);
        finish();
      }
    }
 else {
      if (debug)       Log.d(TAG,"String_Node_Str");
      boolean externalAccess=mPreferences.getBoolean(Preferences.PREFERENCE_ALLOW_EXTERNAL_ACCESS,false);
      if (askPassIsLocal || externalAccess) {
        salt=service.getSalt();
        masterKey=service.getPassword();
        actionDispatch();
      }
 else {
        if (debug)         Log.d(TAG,"String_Node_Str");
        showDialogAllowExternalAccess();
      }
    }
  }
 catch (  RemoteException e) {
    Log.d(TAG,e.toString());
  }
  if (debug)   Log.d(TAG,"String_Node_Str");
}