output: #fixed code
                               @Override
  	protected void doUnmarshalValue(String value, VCardVersion version, List<String> warnings, CompatibilityMode compatibilityMode) {
  		if (subTypes.getValue() != null) {
  			setUrl(VCardStringUtils.unescape(value));
  		} else {
  			//instruct the marshaller to look for an embedded vCard
  			throw new EmbeddedVCardException(new EmbeddedVCardException.InjectionCallback() {
  				public void injectVCard(VCard vcard) {
  					setVcard(vcard);
  				}
  			});
  		}
  	}
input: #vulnerable code 
                               @Override
  	protected void doUnmarshalValue(String value, VCardVersion version, List<String> warnings, CompatibilityMode compatibilityMode) {
  		value = VCardStringUtils.unescape(value);
  
  		if (subTypes.getValue() != null) {
  			url = value;
  		} else {
  			VCardReader reader = new VCardReader(new StringReader(value));
  			reader.setCompatibilityMode(compatibilityMode);
  			try {
  				vcard = reader.readNext();
  			} catch (IOException e) {
  				//reading from a string
  			}
  			for (String w : reader.getWarnings()) {
  				warnings.add("AGENT unmarshal warning: " + w);
  			}
  		}
  	} 
                              #location 15 
                              #vulnerability type RESOURCE_LEAK