Program: 172565
Project: 172565
Buggy source:
private void auth(){
  cancellationSignal=new CancellationSignal();
  if (fingerprintManager.isHardwareDetected()) {
    if (fingerprintManager.hasEnrolledFingerprints()) {
      fingerprintManager.authenticate(cryptoObject,cancellationSignal,0,new FingerprintManager.AuthenticationCallback(){
        @Override public void onAuthenticationError(        int errorCode,        CharSequence errString){
          super.onAuthenticationError(errorCode,errString);
          setStatus(errString.toString(),errorColor,errorColor,R.drawable.fingerprint_error);
          returnToScanningStatus();
        }
        @Override public void onAuthenticationHelp(        int helpCode,        CharSequence helpString){
          super.onAuthenticationHelp(helpCode,helpString);
          setStatus(helpString.toString(),errorColor,errorColor,R.drawable.fingerprint_error);
          returnToScanningStatus();
        }
        @Override public void onAuthenticationSucceeded(        FingerprintManager.AuthenticationResult result){
          super.onAuthenticationSucceeded(result);
          setStatus(R.string.fingerprint_state_success,successColor,successColor,R.drawable.fingerprint_success);
          new Handler().postDelayed(new Runnable(){
            @Override public void run(){
              dialog.cancel();
              if (fingerprintCallback != null) {
                fingerprintCallback.onAuthenticationSuccess();
              }
            }
          }
,delayAfterSuccess);
          tryCounter=0;
        }
        @Override public void onAuthenticationFailed(){
          super.onAuthenticationFailed();
          setStatus(R.string.fingerprint_state_failure,errorColor,errorColor,R.drawable.fingerprint_error);
          returnToScanningStatus();
          tryCounter++;
          if (counterCallback != null && tryCounter == limit) {
            counterCallback.onTryLimitReached();
          }
        }
      }
,null);
    }
 else {
      Log.e(TAG,"String_Node_Str");
    }
  }
 else {
    Log.e(TAG,"String_Node_Str");
  }
}

Fixed version (ground truth):
private void auth(){
  cancellationSignal=new CancellationSignal();
  if (fingerprintManager.isHardwareDetected()) {
    if (fingerprintManager.hasEnrolledFingerprints()) {
      fingerprintManager.authenticate(cryptoObject,cancellationSignal,0,new FingerprintManager.AuthenticationCallback(){
        @Override public void onAuthenticationError(        int errorCode,        CharSequence errString){
          super.onAuthenticationError(errorCode,errString);
          setStatus(errString.toString(),errorColor,errorColor,R.drawable.fingerprint_error);
          returnToScanningStatus();
        }
        @Override public void onAuthenticationHelp(        int helpCode,        CharSequence helpString){
          super.onAuthenticationHelp(helpCode,helpString);
          setStatus(helpString.toString(),errorColor,errorColor,R.drawable.fingerprint_error);
          returnToScanningStatus();
        }
        @Override public void onAuthenticationSucceeded(        FingerprintManager.AuthenticationResult result){
          super.onAuthenticationSucceeded(result);
          handler.removeCallbacks(returnToScanning);
          setStatus(R.string.fingerprint_state_success,successColor,successColor,R.drawable.fingerprint_success);
          handler.postDelayed(new Runnable(){
            @Override public void run(){
              dialog.cancel();
              if (fingerprintCallback != null) {
                fingerprintCallback.onAuthenticationSuccess();
              }
            }
          }
,delayAfterSuccess);
          tryCounter=0;
        }
        @Override public void onAuthenticationFailed(){
          super.onAuthenticationFailed();
          setStatus(R.string.fingerprint_state_failure,errorColor,errorColor,R.drawable.fingerprint_error);
          returnToScanningStatus();
          tryCounter++;
          if (counterCallback != null && tryCounter == limit) {
            counterCallback.onTryLimitReached();
          }
        }
      }
,null);
    }
 else {
      Log.e(TAG,"String_Node_Str");
    }
  }
 else {
    Log.e(TAG,"String_Node_Str");
  }
}