rem: CHECK(*handle);
context: iptc_delete_entry(const ipt_chainlabel chain,		  const struct ipt_entry *origfw,		  unsigned char *matchmask,		  iptc_handle_t *handle){	unsigned int offset;	struct chain_cache *c;	struct ipt_entry *e, *fw;	CHECK(*handle);	iptc_fn = iptc_delete_entry;	if (!(c = find_label(chain, *handle))) {		errno = ENOENT;		return 0;	}	fw = malloc(origfw->next_offset);	if (fw == NULL) {		errno = ENOMEM;		return 0;	}	for (offset = entry2offset(*handle, c->start);	     offset < entry2offset(*handle, c->end);	     offset += e->next_offset) {		struct ipt_entry_target discard;		memcpy(fw, origfw, origfw->next_offset);		/* FIXME: handle this in is_same --RR */		if (!map_target(*handle, fw, offset, &discard)) {			free(fw);			return 0;		}		e = get_entry(*handle, offset);#if 0		printf("Deleting:\n");		dump_entry(newe);#endif		if (is_same(e, fw, matchmask)) {			int ret;			ret = delete_rules(1, e->next_offset,					   offset, entry2index(*handle, e),					   handle);			free(fw);			CHECK(*handle);			return ret;		}	}	free(fw);	errno = ENOENT;	return 0;}