Program: 22685
Project: 22685
Buggy source:
/** 
 * Read all account information back in to the initial engine state.
 */
private void readAccountInfoLocked(){
  boolean writeNeeded=false;
  FileInputStream fis=null;
  try {
    fis=mAccountInfoFile.openRead();
    if (DEBUG_FILE)     Log.v(TAG,"String_Node_Str" + mAccountInfoFile.getBaseFile());
    XmlPullParser parser=Xml.newPullParser();
    parser.setInput(fis,null);
    int eventType=parser.getEventType();
    while (eventType != XmlPullParser.START_TAG) {
      eventType=parser.next();
    }
    String tagName=parser.getName();
    if ("String_Node_Str".equals(tagName)) {
      String listen=parser.getAttributeValue(null,"String_Node_Str");
      String versionString=parser.getAttributeValue(null,"String_Node_Str");
      int version;
      try {
        version=(versionString == null) ? 0 : Integer.parseInt(versionString);
      }
 catch (      NumberFormatException e) {
        version=0;
      }
      if (version < ACCOUNTS_VERSION) {
        writeNeeded=true;
      }
      mMasterSyncAutomatically=listen == null || Boolean.parseBoolean(listen);
      eventType=parser.next();
      AuthorityInfo authority=null;
      Pair<Bundle,Long> periodicSync=null;
      do {
        if (eventType == XmlPullParser.START_TAG) {
          tagName=parser.getName();
          if (parser.getDepth() == 2) {
            if ("String_Node_Str".equals(tagName)) {
              authority=parseAuthority(parser,version);
              periodicSync=null;
            }
          }
 else           if (parser.getDepth() == 3) {
            if ("String_Node_Str".equals(tagName) && authority != null) {
              periodicSync=parsePeriodicSync(parser,authority);
            }
          }
 else           if (parser.getDepth() == 4 && periodicSync != null) {
            if ("String_Node_Str".equals(tagName)) {
              parseExtra(parser,periodicSync);
            }
          }
        }
        eventType=parser.next();
      }
 while (eventType != XmlPullParser.END_DOCUMENT);
    }
  }
 catch (  XmlPullParserException e) {
    Log.w(TAG,"String_Node_Str",e);
    return;
  }
catch (  java.io.IOException e) {
    if (fis == null)     Log.i(TAG,"String_Node_Str");
 else     Log.w(TAG,"String_Node_Str",e);
    return;
  }
 finally {
    if (fis != null) {
      try {
        fis.close();
      }
 catch (      java.io.IOException e1) {
      }
    }
  }
  if (writeNeeded) {
    writeAccountInfoLocked();
  }
}

Fixed version (ground truth):
/** 
 * Read all account information back in to the initial engine state.
 */
private void readAccountInfoLocked(){
  boolean writeNeeded=false;
  FileInputStream fis=null;
  try {
    fis=mAccountInfoFile.openRead();
    if (DEBUG_FILE)     Log.v(TAG,"String_Node_Str" + mAccountInfoFile.getBaseFile());
    XmlPullParser parser=Xml.newPullParser();
    parser.setInput(fis,null);
    int eventType=parser.getEventType();
    while (eventType != XmlPullParser.START_TAG) {
      eventType=parser.next();
    }
    String tagName=parser.getName();
    if ("String_Node_Str".equals(tagName)) {
      String listen=parser.getAttributeValue(null,"String_Node_Str");
      String versionString=parser.getAttributeValue(null,"String_Node_Str");
      int version;
      try {
        version=(versionString == null) ? 0 : Integer.parseInt(versionString);
      }
 catch (      NumberFormatException e) {
        version=0;
      }
      if (version < ACCOUNTS_VERSION) {
        writeNeeded=true;
      }
      mMasterSyncAutomatically=listen == null || Boolean.parseBoolean(listen);
      eventType=parser.next();
      AuthorityInfo authority=null;
      Pair<Bundle,Long> periodicSync=null;
      do {
        if (eventType == XmlPullParser.START_TAG) {
          tagName=parser.getName();
          if (parser.getDepth() == 2) {
            if ("String_Node_Str".equals(tagName)) {
              authority=parseAuthority(parser,version);
              periodicSync=null;
            }
          }
 else           if (parser.getDepth() == 3) {
            if ("String_Node_Str".equals(tagName) && authority != null) {
              periodicSync=parsePeriodicSync(parser,authority);
            }
          }
 else           if (parser.getDepth() == 4 && periodicSync != null) {
            if ("String_Node_Str".equals(tagName)) {
              parseExtra(parser,periodicSync);
            }
          }
        }
        eventType=parser.next();
      }
 while (eventType != XmlPullParser.END_DOCUMENT);
    }
  }
 catch (  XmlPullParserException e) {
    Log.w(TAG,"String_Node_Str",e);
    return;
  }
catch (  java.io.IOException e) {
    if (fis == null)     Log.i(TAG,"String_Node_Str");
 else     Log.w(TAG,"String_Node_Str",e);
    return;
  }
 finally {
    if (fis != null) {
      try {
        fis.close();
      }
 catch (      java.io.IOException e1) {
      }
    }
  }
  if (maybeMigrateSettingsForRenamedAuthorities()) {
    writeNeeded=true;
  }
  if (writeNeeded) {
    writeAccountInfoLocked();
  }
}