Program: 23836
Project: 23836
Buggy source:
@Override protected void dump(FileDescriptor fd,PrintWriter pw,String[] args){
  if (mContext.checkCallingOrSelfPermission(android.Manifest.permission.DUMP) != PackageManager.PERMISSION_GRANTED) {
    pw.println("String_Node_Str" + Binder.getCallingPid() + "String_Node_Str"+ Binder.getCallingUid());
    return;
  }
  IInputMethod method;
  ClientState client;
  final Printer p=new PrintWriterPrinter(pw);
synchronized (mMethodMap) {
    p.println("String_Node_Str");
    int N=mMethodList.size();
    p.println("String_Node_Str");
    for (int i=0; i < N; i++) {
      InputMethodInfo info=mMethodList.get(i);
      p.println("String_Node_Str" + i + "String_Node_Str");
      info.dump(p,"String_Node_Str");
    }
    p.println("String_Node_Str");
    for (    ClientState ci : mClients.values()) {
      p.println("String_Node_Str" + ci + "String_Node_Str");
      p.println("String_Node_Str" + ci.client);
      p.println("String_Node_Str" + ci.inputContext);
      p.println("String_Node_Str" + ci.sessionRequested);
      p.println("String_Node_Str" + ci.curSession);
    }
    p.println("String_Node_Str" + mInputMethodIcon);
    p.println("String_Node_Str" + mInputMethodData);
    p.println("String_Node_Str" + mCurMethodId);
    client=mCurClient;
    p.println("String_Node_Str" + client + "String_Node_Str"+ mCurSeq);
    p.println("String_Node_Str" + mCurFocusedWindow);
    p.println("String_Node_Str" + mCurId + "String_Node_Str"+ mHaveConnection+ "String_Node_Str"+ mBoundToMethod);
    p.println("String_Node_Str" + mCurToken);
    p.println("String_Node_Str" + mCurIntent);
    method=mCurMethod;
    p.println("String_Node_Str" + mCurMethod);
    p.println("String_Node_Str" + mEnabledSession);
    p.println("String_Node_Str" + mShowRequested + "String_Node_Str"+ mShowExplicitlyRequested+ "String_Node_Str"+ mShowForced+ "String_Node_Str"+ mInputShown);
    p.println("String_Node_Str" + mScreenOn);
  }
  if (client != null) {
    p.println("String_Node_Str");
    pw.flush();
    try {
      client.client.asBinder().dump(fd,args);
    }
 catch (    RemoteException e) {
      p.println("String_Node_Str" + e);
    }
  }
  if (method != null) {
    p.println("String_Node_Str");
    pw.flush();
    try {
      method.asBinder().dump(fd,args);
    }
 catch (    RemoteException e) {
      p.println("String_Node_Str" + e);
    }
  }
}

Fixed version (ground truth):
@Override protected void dump(FileDescriptor fd,PrintWriter pw,String[] args){
  if (mContext.checkCallingOrSelfPermission(android.Manifest.permission.DUMP) != PackageManager.PERMISSION_GRANTED) {
    pw.println("String_Node_Str" + Binder.getCallingPid() + "String_Node_Str"+ Binder.getCallingUid());
    return;
  }
  IInputMethod method;
  ClientState client;
  final Printer p=new PrintWriterPrinter(pw);
synchronized (mMethodMap) {
    p.println("String_Node_Str");
    int N=mMethodList.size();
    p.println("String_Node_Str");
    for (int i=0; i < N; i++) {
      InputMethodInfo info=mMethodList.get(i);
      p.println("String_Node_Str" + i + "String_Node_Str");
      info.dump(p,"String_Node_Str");
    }
    p.println("String_Node_Str");
    for (    ClientState ci : mClients.values()) {
      p.println("String_Node_Str" + ci + "String_Node_Str");
      p.println("String_Node_Str" + ci.client);
      p.println("String_Node_Str" + ci.inputContext);
      p.println("String_Node_Str" + ci.sessionRequested);
      p.println("String_Node_Str" + ci.curSession);
    }
    p.println("String_Node_Str" + mInputMethodIcon);
    p.println("String_Node_Str" + mInputMethodData);
    p.println("String_Node_Str" + mCurMethodId);
    client=mCurClient;
    p.println("String_Node_Str" + client + "String_Node_Str"+ mCurSeq);
    p.println("String_Node_Str" + mCurFocusedWindow);
    p.println("String_Node_Str" + mCurId + "String_Node_Str"+ mHaveConnection+ "String_Node_Str"+ mBoundToMethod);
    p.println("String_Node_Str" + mCurToken);
    p.println("String_Node_Str" + mCurIntent);
    method=mCurMethod;
    p.println("String_Node_Str" + mCurMethod);
    p.println("String_Node_Str" + mEnabledSession);
    p.println("String_Node_Str" + mShowRequested + "String_Node_Str"+ mShowExplicitlyRequested+ "String_Node_Str"+ mShowForced+ "String_Node_Str"+ mInputShown);
    p.println("String_Node_Str" + mSystemReady + "String_Node_Str"+ mScreenOn);
  }
  if (client != null) {
    p.println("String_Node_Str");
    pw.flush();
    try {
      client.client.asBinder().dump(fd,args);
    }
 catch (    RemoteException e) {
      p.println("String_Node_Str" + e);
    }
  }
  if (method != null) {
    p.println("String_Node_Str");
    pw.flush();
    try {
      method.asBinder().dump(fd,args);
    }
 catch (    RemoteException e) {
      p.println("String_Node_Str" + e);
    }
  }
}