Program: 199833
Project: 199833
Buggy source:
public boolean startInstrumentation(ComponentName className,String profileFile,int flags,Bundle arguments,IInstrumentationWatcher watcher,IUiAutomationConnection uiAutomationConnection,int userId){
  enforceNotIsolatedCaller("String_Node_Str");
  userId=handleIncomingUser(Binder.getCallingPid(),Binder.getCallingUid(),userId,false,true,"String_Node_Str",null);
  if (arguments != null && arguments.hasFileDescriptors()) {
    throw new IllegalArgumentException("String_Node_Str");
  }
synchronized (this) {
    InstrumentationInfo ii=null;
    ApplicationInfo ai=null;
    try {
      ii=mContext.getPackageManager().getInstrumentationInfo(className,STOCK_PM_FLAGS);
      ai=AppGlobals.getPackageManager().getApplicationInfo(ii.targetPackage,STOCK_PM_FLAGS,userId);
    }
 catch (    PackageManager.NameNotFoundException e) {
    }
catch (    RemoteException e) {
    }
    if (ii == null) {
      reportStartInstrumentationFailure(watcher,className,"String_Node_Str" + className);
      return false;
    }
    if (ai == null) {
      reportStartInstrumentationFailure(watcher,className,"String_Node_Str" + ii.targetPackage);
      return false;
    }
    int match=mContext.getPackageManager().checkSignatures(ii.targetPackage,ii.packageName);
    if (match < 0 && match != PackageManager.SIGNATURE_FIRST_NOT_SIGNED) {
      String msg="String_Node_Str" + className + "String_Node_Str"+ Binder.getCallingPid()+ "String_Node_Str"+ Binder.getCallingPid()+ "String_Node_Str"+ ii.packageName+ "String_Node_Str"+ ii.targetPackage;
      reportStartInstrumentationFailure(watcher,className,msg);
      throw new SecurityException(msg);
    }
    final long origId=Binder.clearCallingIdentity();
    forceStopPackageLocked(ii.targetPackage,-1,true,false,true,true,userId,"String_Node_Str");
    ProcessRecord app=addAppLocked(ai,false);
    app.instrumentationClass=className;
    app.instrumentationInfo=ai;
    app.instrumentationProfileFile=profileFile;
    app.instrumentationArguments=arguments;
    app.instrumentationWatcher=watcher;
    app.instrumentationUiAutomationConnection=uiAutomationConnection;
    app.instrumentationResultClass=className;
    Binder.restoreCallingIdentity(origId);
  }
  return true;
}

Fixed version (ground truth):
public boolean startInstrumentation(ComponentName className,String profileFile,int flags,Bundle arguments,IInstrumentationWatcher watcher,IUiAutomationConnection uiAutomationConnection,int userId){
  enforceNotIsolatedCaller("String_Node_Str");
  userId=handleIncomingUser(Binder.getCallingPid(),Binder.getCallingUid(),userId,false,true,"String_Node_Str",null);
  if (arguments != null && arguments.hasFileDescriptors()) {
    throw new IllegalArgumentException("String_Node_Str");
  }
synchronized (this) {
    InstrumentationInfo ii=null;
    ApplicationInfo ai=null;
    try {
      ii=mContext.getPackageManager().getInstrumentationInfo(className,STOCK_PM_FLAGS);
      ai=AppGlobals.getPackageManager().getApplicationInfo(ii.targetPackage,STOCK_PM_FLAGS,userId);
    }
 catch (    PackageManager.NameNotFoundException e) {
    }
catch (    RemoteException e) {
    }
    if (ii == null) {
      reportStartInstrumentationFailure(watcher,className,"String_Node_Str" + className);
      return false;
    }
    if (ai == null) {
      reportStartInstrumentationFailure(watcher,className,"String_Node_Str" + ii.targetPackage);
      return false;
    }
    int match=mContext.getPackageManager().checkSignatures(ii.targetPackage,ii.packageName);
    if (match < 0 && match != PackageManager.SIGNATURE_FIRST_NOT_SIGNED) {
      String msg="String_Node_Str" + className + "String_Node_Str"+ Binder.getCallingPid()+ "String_Node_Str"+ Binder.getCallingPid()+ "String_Node_Str"+ ii.packageName+ "String_Node_Str"+ ii.targetPackage;
      reportStartInstrumentationFailure(watcher,className,msg);
      throw new SecurityException(msg);
    }
    final long origId=Binder.clearCallingIdentity();
    forceStopPackageLocked(ii.targetPackage,-1,true,false,true,true,false,userId,"String_Node_Str");
    ProcessRecord app=addAppLocked(ai,false);
    app.instrumentationClass=className;
    app.instrumentationInfo=ai;
    app.instrumentationProfileFile=profileFile;
    app.instrumentationArguments=arguments;
    app.instrumentationWatcher=watcher;
    app.instrumentationUiAutomationConnection=uiAutomationConnection;
    app.instrumentationResultClass=className;
    Binder.restoreCallingIdentity(origId);
  }
  return true;
}