Program: 94197
Project: 94197
Buggy source:
private static ChannelInfo parseChannel(XmlPullParser parser) throws XmlPullParserException, IOException {
  String displayNumber=null;
  String displayName=null;
  int videoWidth=0;
  int videoHeight=0;
  int audioChannelCount=0;
  boolean hasClosedCaption=false;
  String logoUrl=null;
  StringBuilder hashString=new StringBuilder();
  for (int i=0; i < parser.getAttributeCount(); ++i) {
    String attr=parser.getAttributeName(i);
    String value=parser.getAttributeValue(i);
    hashString.append(attr).append("String_Node_Str").append(value).append("String_Node_Str");
    if (ATTR_DISPLAY_NUMBER.equals(attr)) {
      displayNumber=value;
    }
 else     if (ATTR_DISPLAY_NAME.equals(attr)) {
      displayName=value;
    }
 else     if (ATTR_VIDEO_WIDTH.equals(attr)) {
      videoWidth=Integer.parseInt(value);
    }
 else     if (ATTR_VIDEO_HEIGHT.equals(attr)) {
      videoHeight=Integer.parseInt(value);
    }
 else     if (ATTR_LOGO_URL.equals(attr)) {
      logoUrl=value;
    }
  }
  List<ProgramInfo> programs=new ArrayList<>();
  while (parser.next() != XmlPullParser.END_DOCUMENT) {
    if (parser.getEventType() == XmlPullParser.START_TAG) {
      if (TAG_PROGRAM.equals(parser.getName())) {
        programs.add(parseProgram(parser));
      }
    }
 else     if (TAG_CHANNEL.equals(parser.getName()) && parser.getEventType() == XmlPullParser.END_TAG) {
      break;
    }
  }
  int fakeOriginalNetworkId=hashString.toString().hashCode();
  return new ChannelInfo(displayNumber,displayName,logoUrl,0,0,fakeOriginalNetworkId,videoWidth,videoHeight,audioChannelCount,hasClosedCaption,programs);
}

Fixed version (ground truth):
private static ChannelInfo parseChannel(XmlPullParser parser) throws XmlPullParserException, IOException {
  String displayNumber=null;
  String displayName=null;
  int videoWidth=0;
  int videoHeight=0;
  int audioChannelCount=0;
  boolean hasClosedCaption=false;
  String logoUrl=null;
  StringBuilder hashString=new StringBuilder();
  for (int i=0; i < parser.getAttributeCount(); ++i) {
    String attr=parser.getAttributeName(i);
    String value=parser.getAttributeValue(i);
    hashString.append(attr).append("String_Node_Str").append(value).append("String_Node_Str");
    if (ATTR_DISPLAY_NUMBER.equals(attr)) {
      displayNumber=value;
    }
 else     if (ATTR_DISPLAY_NAME.equals(attr)) {
      displayName=value;
    }
 else     if (ATTR_VIDEO_WIDTH.equals(attr)) {
      videoWidth=Integer.parseInt(value);
    }
 else     if (ATTR_VIDEO_HEIGHT.equals(attr)) {
      videoHeight=Integer.parseInt(value);
    }
 else     if (ATTR_LOGO_URL.equals(attr)) {
      logoUrl=value;
    }
  }
  List<ProgramInfo> programs=new ArrayList<>();
  while (parser.next() != XmlPullParser.END_DOCUMENT) {
    if (parser.getEventType() == XmlPullParser.START_TAG) {
      if (TAG_PROGRAM.equals(parser.getName())) {
        programs.add(parseProgram(parser));
      }
    }
 else     if (TAG_CHANNEL.equals(parser.getName()) && parser.getEventType() == XmlPullParser.END_TAG) {
      break;
    }
  }
  int fakeOriginalNetworkId=hashString.toString().hashCode();
  return new ChannelInfo(displayNumber,displayName,logoUrl,fakeOriginalNetworkId,0,0,videoWidth,videoHeight,audioChannelCount,hasClosedCaption,programs);
}