Program: 22700
Project: 22700
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()+ "String_Node_Str"+ android.Manifest.permission.DUMP);
    return;
  }
  String packageName=null;
  int opti=0;
  while (opti < args.length) {
    String opt=args[opti];
    if (opt == null || opt.length() <= 0 || opt.charAt(0) != '-') {
      break;
    }
    opti++;
    if ("String_Node_Str".equals(opt)) {
    }
 else     if ("String_Node_Str".equals(opt)) {
      pw.println("String_Node_Str");
      pw.println("String_Node_Str");
      pw.println("String_Node_Str");
      pw.println("String_Node_Str");
      return;
    }
 else {
      pw.println("String_Node_Str" + opt + "String_Node_Str");
    }
  }
  if (opti < args.length) {
    String cmd=args[opti];
    opti++;
    if ("String_Node_Str".equals(cmd) || cmd.contains("String_Node_Str")) {
      packageName=cmd;
    }
  }
  boolean printedTitle=false;
synchronized (mPackages) {
    if (mActivities.dump(pw,"String_Node_Str","String_Node_Str",packageName)) {
      printedTitle=true;
    }
    if (mReceivers.dump(pw,printedTitle ? "String_Node_Str" : "String_Node_Str","String_Node_Str",packageName)) {
      printedTitle=true;
    }
    if (mServices.dump(pw,printedTitle ? "String_Node_Str" : "String_Node_Str","String_Node_Str",packageName)) {
      printedTitle=true;
    }
    if (mSettings.mPreferredActivities.dump(pw,printedTitle ? "String_Node_Str" : "String_Node_Str","String_Node_Str",packageName)) {
      printedTitle=true;
    }
    boolean printedSomething=false;
{
      for (      BasePermission p : mSettings.mPermissions.values()) {
        if (packageName != null && !packageName.equals(p.sourcePackage)) {
          continue;
        }
        if (!printedSomething) {
          if (printedTitle)           pw.println("String_Node_Str");
          pw.println("String_Node_Str");
          printedSomething=true;
          printedTitle=true;
        }
        pw.print("String_Node_Str");
        pw.print(p.name);
        pw.print("String_Node_Str");
        pw.print(Integer.toHexString(System.identityHashCode(p)));
        pw.println("String_Node_Str");
        pw.print("String_Node_Str");
        pw.println(p.sourcePackage);
        pw.print("String_Node_Str");
        pw.print(p.uid);
        pw.print("String_Node_Str");
        pw.print(arrayToString(p.gids));
        pw.print("String_Node_Str");
        pw.print(p.type);
        pw.print("String_Node_Str");
        pw.println(p.protectionLevel);
        if (p.packageSetting != null) {
          pw.print("String_Node_Str");
          pw.println(p.packageSetting);
        }
        if (p.perm != null) {
          pw.print("String_Node_Str");
          pw.println(p.perm);
        }
      }
    }
    printedSomething=false;
    SharedUserSetting packageSharedUser=null;
{
      for (      PackageSetting ps : mSettings.mPackages.values()) {
        if (packageName != null && !packageName.equals(ps.realName) && !packageName.equals(ps.name)) {
          continue;
        }
        if (!printedSomething) {
          if (printedTitle)           pw.println("String_Node_Str");
          pw.println("String_Node_Str");
          printedSomething=true;
          printedTitle=true;
        }
        packageSharedUser=ps.sharedUser;
        pw.print("String_Node_Str");
        pw.print(ps.realName != null ? ps.realName : ps.name);
        pw.print("String_Node_Str");
        pw.print(Integer.toHexString(System.identityHashCode(ps)));
        pw.println("String_Node_Str");
        if (ps.realName != null) {
          pw.print("String_Node_Str");
          pw.println(ps.name);
        }
        pw.print("String_Node_Str");
        pw.print(ps.userId);
        pw.print("String_Node_Str");
        pw.println(arrayToString(ps.gids));
        pw.print("String_Node_Str");
        pw.println(ps.sharedUser);
        pw.print("String_Node_Str");
        pw.println(ps.pkg);
        pw.print("String_Node_Str");
        pw.println(ps.codePathString);
        pw.print("String_Node_Str");
        pw.println(ps.resourcePathString);
        if (ps.pkg != null) {
          pw.print("String_Node_Str");
          pw.println(ps.pkg.applicationInfo.dataDir);
          pw.print("String_Node_Str");
          pw.println(ps.pkg.applicationInfo.targetSdkVersion);
          pw.print("String_Node_Str");
          boolean first=true;
          if ((ps.pkg.applicationInfo.flags & ApplicationInfo.FLAG_SUPPORTS_NORMAL_SCREENS) != 0) {
            if (!first)             pw.print("String_Node_Str");
            first=false;
            pw.print("String_Node_Str");
          }
          if ((ps.pkg.applicationInfo.flags & ApplicationInfo.FLAG_SUPPORTS_LARGE_SCREENS) != 0) {
            if (!first)             pw.print("String_Node_Str");
            first=false;
            pw.print("String_Node_Str");
          }
          if ((ps.pkg.applicationInfo.flags & ApplicationInfo.FLAG_SUPPORTS_SMALL_SCREENS) != 0) {
            if (!first)             pw.print("String_Node_Str");
            first=false;
            pw.print("String_Node_Str");
          }
          if ((ps.pkg.applicationInfo.flags & ApplicationInfo.FLAG_RESIZEABLE_FOR_SCREENS) != 0) {
            if (!first)             pw.print("String_Node_Str");
            first=false;
            pw.print("String_Node_Str");
          }
          if ((ps.pkg.applicationInfo.flags & ApplicationInfo.FLAG_SUPPORTS_SCREEN_DENSITIES) != 0) {
            if (!first)             pw.print("String_Node_Str");
            first=false;
            pw.print("String_Node_Str");
          }
        }
        pw.println("String_Node_Str");
        pw.print("String_Node_Str");
        pw.println(ps.getTimeStampStr());
        pw.print("String_Node_Str");
        pw.println(ps.signatures);
        pw.print("String_Node_Str");
        pw.print(ps.permissionsFixed);
        pw.print("String_Node_Str");
        pw.print(Integer.toHexString(ps.pkgFlags));
        pw.print("String_Node_Str");
        pw.print(ps.installStatus);
        pw.print("String_Node_Str");
        pw.println(ps.enabled);
        if (ps.disabledComponents.size() > 0) {
          pw.println("String_Node_Str");
          for (          String s : ps.disabledComponents) {
            pw.print("String_Node_Str");
            pw.println(s);
          }
        }
        if (ps.enabledComponents.size() > 0) {
          pw.println("String_Node_Str");
          for (          String s : ps.enabledComponents) {
            pw.print("String_Node_Str");
            pw.println(s);
          }
        }
        if (ps.grantedPermissions.size() > 0) {
          pw.println("String_Node_Str");
          for (          String s : ps.grantedPermissions) {
            pw.print("String_Node_Str");
            pw.println(s);
          }
        }
      }
    }
    printedSomething=false;
    if (mSettings.mRenamedPackages.size() > 0) {
      for (      HashMap.Entry<String,String> e : mSettings.mRenamedPackages.entrySet()) {
        if (packageName != null && !packageName.equals(e.getKey()) && !packageName.equals(e.getValue())) {
          continue;
        }
        if (!printedSomething) {
          if (printedTitle)           pw.println("String_Node_Str");
          pw.println("String_Node_Str");
          printedSomething=true;
          printedTitle=true;
        }
        pw.print("String_Node_Str");
        pw.print(e.getKey());
        pw.print("String_Node_Str");
        pw.println(e.getValue());
      }
    }
    printedSomething=false;
    if (mSettings.mDisabledSysPackages.size() > 0) {
      for (      PackageSetting ps : mSettings.mDisabledSysPackages.values()) {
        if (packageName != null && !packageName.equals(ps.realName) && !packageName.equals(ps.name)) {
          continue;
        }
        if (!printedSomething) {
          if (printedTitle)           pw.println("String_Node_Str");
          pw.println("String_Node_Str");
          printedSomething=true;
          printedTitle=true;
        }
        pw.print("String_Node_Str");
        pw.print(ps.realName != null ? ps.realName : ps.name);
        pw.print("String_Node_Str");
        pw.print(Integer.toHexString(System.identityHashCode(ps)));
        pw.println("String_Node_Str");
        if (ps.realName != null) {
          pw.print("String_Node_Str");
          pw.println(ps.name);
        }
        pw.print("String_Node_Str");
        pw.println(ps.userId);
        pw.print("String_Node_Str");
        pw.println(ps.sharedUser);
        pw.print("String_Node_Str");
        pw.println(ps.codePathString);
        pw.print("String_Node_Str");
        pw.println(ps.resourcePathString);
      }
    }
    printedSomething=false;
{
      for (      SharedUserSetting su : mSettings.mSharedUsers.values()) {
        if (packageName != null && su != packageSharedUser) {
          continue;
        }
        if (!printedSomething) {
          if (printedTitle)           pw.println("String_Node_Str");
          pw.println("String_Node_Str");
          printedSomething=true;
          printedTitle=true;
        }
        pw.print("String_Node_Str");
        pw.print(su.name);
        pw.print("String_Node_Str");
        pw.print(Integer.toHexString(System.identityHashCode(su)));
        pw.println("String_Node_Str");
        pw.print("String_Node_Str");
        pw.print(su.userId);
        pw.print("String_Node_Str");
        pw.println(arrayToString(su.gids));
        pw.println("String_Node_Str");
        for (        String s : su.grantedPermissions) {
          pw.print("String_Node_Str");
          pw.println(s);
        }
      }
    }
    if (packageName == null) {
      if (printedTitle)       pw.println("String_Node_Str");
      printedTitle=true;
      pw.println("String_Node_Str");
      pw.println(mSettings.mReadMessages.toString());
      pw.println("String_Node_Str");
      pw.println("String_Node_Str");
      File fname=getSettingsProblemFile();
      FileInputStream in;
      try {
        in=new FileInputStream(fname);
        int avail=in.available();
        byte[] data=new byte[avail];
        in.read(data);
        pw.println(new String(data));
      }
 catch (      FileNotFoundException e) {
      }
catch (      IOException e) {
      }
    }
  }
synchronized (mProviders) {
    boolean printedSomething=false;
    for (    PackageParser.Provider p : mProviders.values()) {
      if (packageName != null && !packageName.equals(p.info.packageName)) {
        continue;
      }
      if (!printedSomething) {
        if (printedTitle)         pw.println("String_Node_Str");
        pw.println("String_Node_Str");
        printedSomething=true;
        printedTitle=true;
      }
      pw.print("String_Node_Str");
      pw.print(p.info.authority);
      pw.print("String_Node_Str");
      pw.println(p.toString());
    }
  }
}

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()+ "String_Node_Str"+ android.Manifest.permission.DUMP);
    return;
  }
  String packageName=null;
  int opti=0;
  while (opti < args.length) {
    String opt=args[opti];
    if (opt == null || opt.length() <= 0 || opt.charAt(0) != '-') {
      break;
    }
    opti++;
    if ("String_Node_Str".equals(opt)) {
    }
 else     if ("String_Node_Str".equals(opt)) {
      pw.println("String_Node_Str");
      pw.println("String_Node_Str");
      pw.println("String_Node_Str");
      pw.println("String_Node_Str");
      return;
    }
 else {
      pw.println("String_Node_Str" + opt + "String_Node_Str");
    }
  }
  if (opti < args.length) {
    String cmd=args[opti];
    opti++;
    if ("String_Node_Str".equals(cmd) || cmd.contains("String_Node_Str")) {
      packageName=cmd;
    }
  }
  boolean printedTitle=false;
synchronized (mPackages) {
    if (mActivities.dump(pw,"String_Node_Str","String_Node_Str",packageName)) {
      printedTitle=true;
    }
    if (mReceivers.dump(pw,printedTitle ? "String_Node_Str" : "String_Node_Str","String_Node_Str",packageName)) {
      printedTitle=true;
    }
    if (mServices.dump(pw,printedTitle ? "String_Node_Str" : "String_Node_Str","String_Node_Str",packageName)) {
      printedTitle=true;
    }
    if (mSettings.mPreferredActivities.dump(pw,printedTitle ? "String_Node_Str" : "String_Node_Str","String_Node_Str",packageName)) {
      printedTitle=true;
    }
    boolean printedSomething=false;
{
      for (      BasePermission p : mSettings.mPermissions.values()) {
        if (packageName != null && !packageName.equals(p.sourcePackage)) {
          continue;
        }
        if (!printedSomething) {
          if (printedTitle)           pw.println("String_Node_Str");
          pw.println("String_Node_Str");
          printedSomething=true;
          printedTitle=true;
        }
        pw.print("String_Node_Str");
        pw.print(p.name);
        pw.print("String_Node_Str");
        pw.print(Integer.toHexString(System.identityHashCode(p)));
        pw.println("String_Node_Str");
        pw.print("String_Node_Str");
        pw.println(p.sourcePackage);
        pw.print("String_Node_Str");
        pw.print(p.uid);
        pw.print("String_Node_Str");
        pw.print(arrayToString(p.gids));
        pw.print("String_Node_Str");
        pw.print(p.type);
        pw.print("String_Node_Str");
        pw.println(p.protectionLevel);
        if (p.packageSetting != null) {
          pw.print("String_Node_Str");
          pw.println(p.packageSetting);
        }
        if (p.perm != null) {
          pw.print("String_Node_Str");
          pw.println(p.perm);
        }
      }
    }
    printedSomething=false;
    SharedUserSetting packageSharedUser=null;
{
      for (      PackageSetting ps : mSettings.mPackages.values()) {
        if (packageName != null && !packageName.equals(ps.realName) && !packageName.equals(ps.name)) {
          continue;
        }
        if (!printedSomething) {
          if (printedTitle)           pw.println("String_Node_Str");
          pw.println("String_Node_Str");
          printedSomething=true;
          printedTitle=true;
        }
        packageSharedUser=ps.sharedUser;
        pw.print("String_Node_Str");
        pw.print(ps.realName != null ? ps.realName : ps.name);
        pw.print("String_Node_Str");
        pw.print(Integer.toHexString(System.identityHashCode(ps)));
        pw.println("String_Node_Str");
        if (ps.realName != null) {
          pw.print("String_Node_Str");
          pw.println(ps.name);
        }
        pw.print("String_Node_Str");
        pw.print(ps.userId);
        pw.print("String_Node_Str");
        pw.println(arrayToString(ps.gids));
        pw.print("String_Node_Str");
        pw.println(ps.sharedUser);
        pw.print("String_Node_Str");
        pw.println(ps.pkg);
        pw.print("String_Node_Str");
        pw.println(ps.codePathString);
        pw.print("String_Node_Str");
        pw.println(ps.resourcePathString);
        if (ps.pkg != null) {
          pw.print("String_Node_Str");
          pw.println(ps.pkg.applicationInfo.dataDir);
          pw.print("String_Node_Str");
          pw.println(ps.pkg.applicationInfo.targetSdkVersion);
          pw.print("String_Node_Str");
          boolean first=true;
          if ((ps.pkg.applicationInfo.flags & ApplicationInfo.FLAG_SUPPORTS_NORMAL_SCREENS) != 0) {
            if (!first)             pw.print("String_Node_Str");
            first=false;
            pw.print("String_Node_Str");
          }
          if ((ps.pkg.applicationInfo.flags & ApplicationInfo.FLAG_SUPPORTS_LARGE_SCREENS) != 0) {
            if (!first)             pw.print("String_Node_Str");
            first=false;
            pw.print("String_Node_Str");
          }
          if ((ps.pkg.applicationInfo.flags & ApplicationInfo.FLAG_SUPPORTS_SMALL_SCREENS) != 0) {
            if (!first)             pw.print("String_Node_Str");
            first=false;
            pw.print("String_Node_Str");
          }
          if ((ps.pkg.applicationInfo.flags & ApplicationInfo.FLAG_RESIZEABLE_FOR_SCREENS) != 0) {
            if (!first)             pw.print("String_Node_Str");
            first=false;
            pw.print("String_Node_Str");
          }
          if ((ps.pkg.applicationInfo.flags & ApplicationInfo.FLAG_SUPPORTS_SCREEN_DENSITIES) != 0) {
            if (!first)             pw.print("String_Node_Str");
            first=false;
            pw.print("String_Node_Str");
          }
        }
        pw.println("String_Node_Str");
        pw.print("String_Node_Str");
        pw.println(ps.getTimeStampStr());
        pw.print("String_Node_Str");
        pw.println(ps.signatures);
        pw.print("String_Node_Str");
        pw.print(ps.permissionsFixed);
        pw.print("String_Node_Str");
        pw.println(ps.haveGids);
        pw.print("String_Node_Str");
        pw.print(Integer.toHexString(ps.pkgFlags));
        pw.print("String_Node_Str");
        pw.print(ps.installStatus);
        pw.print("String_Node_Str");
        pw.println(ps.enabled);
        if (ps.disabledComponents.size() > 0) {
          pw.println("String_Node_Str");
          for (          String s : ps.disabledComponents) {
            pw.print("String_Node_Str");
            pw.println(s);
          }
        }
        if (ps.enabledComponents.size() > 0) {
          pw.println("String_Node_Str");
          for (          String s : ps.enabledComponents) {
            pw.print("String_Node_Str");
            pw.println(s);
          }
        }
        if (ps.grantedPermissions.size() > 0) {
          pw.println("String_Node_Str");
          for (          String s : ps.grantedPermissions) {
            pw.print("String_Node_Str");
            pw.println(s);
          }
        }
      }
    }
    printedSomething=false;
    if (mSettings.mRenamedPackages.size() > 0) {
      for (      HashMap.Entry<String,String> e : mSettings.mRenamedPackages.entrySet()) {
        if (packageName != null && !packageName.equals(e.getKey()) && !packageName.equals(e.getValue())) {
          continue;
        }
        if (!printedSomething) {
          if (printedTitle)           pw.println("String_Node_Str");
          pw.println("String_Node_Str");
          printedSomething=true;
          printedTitle=true;
        }
        pw.print("String_Node_Str");
        pw.print(e.getKey());
        pw.print("String_Node_Str");
        pw.println(e.getValue());
      }
    }
    printedSomething=false;
    if (mSettings.mDisabledSysPackages.size() > 0) {
      for (      PackageSetting ps : mSettings.mDisabledSysPackages.values()) {
        if (packageName != null && !packageName.equals(ps.realName) && !packageName.equals(ps.name)) {
          continue;
        }
        if (!printedSomething) {
          if (printedTitle)           pw.println("String_Node_Str");
          pw.println("String_Node_Str");
          printedSomething=true;
          printedTitle=true;
        }
        pw.print("String_Node_Str");
        pw.print(ps.realName != null ? ps.realName : ps.name);
        pw.print("String_Node_Str");
        pw.print(Integer.toHexString(System.identityHashCode(ps)));
        pw.println("String_Node_Str");
        if (ps.realName != null) {
          pw.print("String_Node_Str");
          pw.println(ps.name);
        }
        pw.print("String_Node_Str");
        pw.println(ps.userId);
        pw.print("String_Node_Str");
        pw.println(ps.sharedUser);
        pw.print("String_Node_Str");
        pw.println(ps.codePathString);
        pw.print("String_Node_Str");
        pw.println(ps.resourcePathString);
      }
    }
    printedSomething=false;
{
      for (      SharedUserSetting su : mSettings.mSharedUsers.values()) {
        if (packageName != null && su != packageSharedUser) {
          continue;
        }
        if (!printedSomething) {
          if (printedTitle)           pw.println("String_Node_Str");
          pw.println("String_Node_Str");
          printedSomething=true;
          printedTitle=true;
        }
        pw.print("String_Node_Str");
        pw.print(su.name);
        pw.print("String_Node_Str");
        pw.print(Integer.toHexString(System.identityHashCode(su)));
        pw.println("String_Node_Str");
        pw.print("String_Node_Str");
        pw.print(su.userId);
        pw.print("String_Node_Str");
        pw.println(arrayToString(su.gids));
        pw.println("String_Node_Str");
        for (        String s : su.grantedPermissions) {
          pw.print("String_Node_Str");
          pw.println(s);
        }
      }
    }
    if (packageName == null) {
      if (printedTitle)       pw.println("String_Node_Str");
      printedTitle=true;
      pw.println("String_Node_Str");
      pw.println(mSettings.mReadMessages.toString());
      pw.println("String_Node_Str");
      pw.println("String_Node_Str");
      File fname=getSettingsProblemFile();
      FileInputStream in;
      try {
        in=new FileInputStream(fname);
        int avail=in.available();
        byte[] data=new byte[avail];
        in.read(data);
        pw.println(new String(data));
      }
 catch (      FileNotFoundException e) {
      }
catch (      IOException e) {
      }
    }
  }
synchronized (mProviders) {
    boolean printedSomething=false;
    for (    PackageParser.Provider p : mProviders.values()) {
      if (packageName != null && !packageName.equals(p.info.packageName)) {
        continue;
      }
      if (!printedSomething) {
        if (printedTitle)         pw.println("String_Node_Str");
        pw.println("String_Node_Str");
        printedSomething=true;
        printedTitle=true;
      }
      pw.print("String_Node_Str");
      pw.print(p.info.authority);
      pw.print("String_Node_Str");
      pw.println(p.toString());
    }
  }
}