Beispiel #1
0
static bool addBytes(RAnal *a, const char *name, ut64 size, const ut8 *bytes, const ut8 *mask) {
	RSignItem *it = R_NEW0 (RSignItem);
	bool retval = true;

	if (r_mem_is_zero (mask, size)) {
		eprintf ("error: zero mask\n");
		retval = false;
		goto exit_function;
	}

	it->name = r_str_new (name);
	it->space = a->zign_spaces.space_idx;
	it->bytes = R_NEW0 (RSignBytes);
	it->bytes->size = size;
	it->bytes->bytes = malloc (size);
	memcpy (it->bytes->bytes, bytes, size);
	it->bytes->mask = malloc (size);
	memcpy (it->bytes->mask, mask, size);

	retval = addItem (a, it);

exit_function:
	r_sign_item_free (it);

	return retval;
}
Beispiel #2
0
	ls_foreach (b, iter, kv) {
		RSignItem *it = r_sign_item_new ();
		if (r_sign_deserialize (c2->anal, it, kv->base.key, kv->base.value)) {
			r_list_append (lb, it);
		} else {
			r_sign_item_free (it);
		}
	}
Beispiel #3
0
R_API bool r_sign_add_graph(RAnal *a, const char *name, RSignGraph graph) {
	RSignItem *it = R_NEW0 (RSignItem);
	bool retval = true;

	it->name = r_str_new (name);
	it->space = a->zign_spaces.space_idx;
	it->graph = R_NEW0 (RSignGraph);
	*it->graph = graph;

	retval = addItem (a, it);

	r_sign_item_free (it);

	return retval;
}
Beispiel #4
0
R_API int r_core_zdiff(RCore *c, RCore *c2) {
	if (!c || !c2) {
		return false;
	}
	////////// moove this into anal/sign
	SdbList *a = sdb_foreach_list (c->anal->sdb_zigns, false);
	SdbList *b = sdb_foreach_list (c2->anal->sdb_zigns, false);

	eprintf ("Diff %d %d\n", (int)ls_length (a), (int)ls_length (b));
	SdbListIter *iter;
	SdbKv *kv;
	RList *la = r_list_new ();
	ls_foreach (a, iter, kv) {
		RSignItem *it = r_sign_item_new ();
		if (r_sign_deserialize (c->anal, it, kv->base.key, kv->base.value)) {
			r_list_append (la, it);
		} else {
			r_sign_item_free (it);
		}
	}