#fixed code
                              public String evaluate(Map<String, String> configIn, String key, String value) {
    checkConfig(configIn);

    try {
      HTable table = getHTable(configIn.get(TABLE_NAME_TAG), configIn.get(ZOOKEEPER_QUORUM_TAG));
      Put thePut = new Put(key.getBytes());
      thePut.add(configIn.get(FAMILY_TAG).getBytes(), configIn.get(QUALIFIER_TAG).getBytes(), value.getBytes());

      table.put(thePut);
      return "Put " + key + ":" + value;
    } catch(Exception exc) {
      LOG.error("Error while doing HBase Puts");
      throw new RuntimeException(exc);
    }
  }
#vulnerable code 
                              public String evaluate(Map<String, String> configIn, String key, String value) {
    if (!configIn.containsKey(FAMILY_TAG) ||
        !configIn.containsKey(QUALIFIER_TAG) ||
        !configIn.containsKey(TABLE_NAME_TAG) ||
        !configIn.containsKey(ZOOKEEPER_QUORUM_TAG)) {
      String errorMsg = "Error while doing HBase Puts. Config is missing for: " + FAMILY_TAG + " or " +
      QUALIFIER_TAG + " or " + TABLE_NAME_TAG + " or " + ZOOKEEPER_QUORUM_TAG;
      LOG.error(errorMsg);
      throw new RuntimeException(errorMsg);
    }

    try {
      HTable table = getHTable(configIn.get(TABLE_NAME_TAG), configIn.get(ZOOKEEPER_QUORUM_TAG));
      Put thePut = new Put(key.getBytes());
      thePut.add(configIn.get(FAMILY_TAG).getBytes(), configIn.get(QUALIFIER_TAG).getBytes(), value.getBytes());

      table.put(thePut);
      return "Put " + key + ":" + value;
    } catch(Exception exc) {
      LOG.error("Error while doing HBase Puts");
      throw new RuntimeException(exc);
    }
  } 
                            #location 15 
                            #vulnerability type NULL_DEREFERENCE