Skip to content

Commit

Permalink
more rz-find refactoring
Browse files Browse the repository at this point in the history
  • Loading branch information
wargio committed Dec 10, 2024
1 parent 03c4c7b commit efb9591
Show file tree
Hide file tree
Showing 7 changed files with 746 additions and 569 deletions.
7 changes: 0 additions & 7 deletions librz/core/cconfig.c
Original file line number Diff line number Diff line change
Expand Up @@ -2415,13 +2415,6 @@ static bool cb_print_align(void *user, void *data) {
return true;
}

static bool cb_search_align(void *user, void *data) {
RzCore *core = (RzCore *)user;
RzConfigNode *node = (RzConfigNode *)data;
core->print->addrmod = node->i_value;
return rz_search_opt_set_buffer_size(core->search_opts, node->i_value);
}

static bool cb_search_inverse_match(void *user, void *data) {
RzCore *core = (RzCore *)user;
RzConfigNode *node = (RzConfigNode *)data;
Expand Down
1 change: 0 additions & 1 deletion librz/core/cmd/cmd.c
Original file line number Diff line number Diff line change
Expand Up @@ -5218,7 +5218,6 @@ RZ_API void rz_core_cmd_init(RzCore *core) {
const char *description;
RzCmdCb cb;
} cmds[] = {
{ "/", "search kw, pattern aes", rz_cmd_search },
{ "p", "print current block", rz_cmd_print },
{ "x", "alias for px", rz_cmd_hexdump },
};
Expand Down
29 changes: 24 additions & 5 deletions librz/core/csearch.c
Original file line number Diff line number Diff line change
Expand Up @@ -155,11 +155,15 @@ RZ_API RZ_OWN RzList /*<RzSearchHit *>*/ *rz_core_search_string(RZ_NONNULL RzCor
}

// Copy RzUtilStrScanOptions from RzBin
RzUtilStrScanOptions str_opts;
memcpy(&str_opts, &core->bin->str_search_cfg, sizeof(str_opts));
str_opts.buf_size = rz_config_get_i(core->config, "search.buffer_size");

RzSearchCollection *collection = rz_search_collection_strings(&str_opts, expected, caseless);
RzUtilStrScanOptions scan_opt = {
.buf_size = rz_config_get_i(core->config, "search.buffer_size"),
.max_uni_blocks = core->bin->str_search_cfg.max_uni_blocks,
.min_str_length = core->bin->str_search_cfg.min_length,
.prefer_big_endian = core->analysis->big_endian,
.check_ascii_freq = core->bin->str_search_cfg.check_ascii_freq,
};

RzSearchCollection *collection = rz_search_collection_strings(&scan_opt, expected, caseless);
if (!collection ||
!rz_search_collection_string_add(collection, string)) {
rz_search_collection_free(collection);
Expand Down Expand Up @@ -315,3 +319,18 @@ RZ_API RZ_OWN RzList /*<RzSearchHit *>*/ *rz_core_search_hex_pattern(RZ_NONNULL

return core_run_search(core, opt, collection);
}

/**
* \brief Uses the given RzSearchCollection to find matches within the search.in boundaries
*
* \param core The RzCore core
* \param opt The search options to apply
* \param[in] collection The RzSearchCollection to use
*
* \return On success returns a valid pointer, otherwise NULL
*/
RZ_API RZ_OWN RzList /*<RzSearchHit *>*/ *rz_core_search_collection(RZ_NONNULL RzCore *core, RZ_NONNULL RzSearchOpt *opt, RZ_NONNULL RzSearchCollection *collection) {
rz_return_val_if_fail(core && opt && collection, NULL);

return core_run_search(core, opt, collection);
}
1 change: 1 addition & 0 deletions librz/include/rz_core.h
Original file line number Diff line number Diff line change
Expand Up @@ -1088,6 +1088,7 @@ RZ_API RZ_OWN RzList /*<RzSearchHit *>*/ *rz_core_search_magic(RZ_NONNULL RzCore
RZ_API RZ_OWN RzList /*<RzSearchHit *>*/ *rz_core_search_regex(RZ_NONNULL RzCore *core, RZ_NONNULL RzSearchOpt *opt, RZ_NONNULL const char *regex, bool caseless);
RZ_API RZ_OWN RzList /*<RzSearchHit *>*/ *rz_core_search_bytes(RZ_NONNULL RzCore *core, RZ_NONNULL RzSearchOpt *opt, RZ_NONNULL const ut8 *bytes, RZ_NULLABLE const ut8 *mask, size_t size);
RZ_API RZ_OWN RzList /*<RzSearchHit *>*/ *rz_core_search_hex_pattern(RZ_NONNULL RzCore *core, RZ_NONNULL RzSearchOpt *opt, RZ_NONNULL const char *hex_pattern);
RZ_API RZ_OWN RzList /*<RzSearchHit *>*/ *rz_core_search_collection(RZ_NONNULL RzCore *core, RZ_NONNULL RzSearchOpt *opt, RZ_NONNULL RzSearchCollection *collection);

#define RZ_CORE_BOUNDARIES_PERMS_ANY 0
#define RZ_CORE_BOUNDARIES_MASK_NONE 0
Expand Down
2 changes: 1 addition & 1 deletion librz/include/rz_util/rz_print.h
Original file line number Diff line number Diff line change
Expand Up @@ -235,7 +235,7 @@ RZ_API RZ_OWN char *rz_print_json_indent(RZ_NULLABLE const char *s, bool color,
RZ_API char *rz_print_json_human(const char *s);

RZ_API RZ_OWN RzStrBuf *rz_print_colorize_asm_str(RZ_BORROW RzPrint *p, const RzAsmTokenString *toks);
RZ_API void rz_print_colored_help_option(const char *option, const char *arg, const char *description, size_t maxOptionAndArgLength);
RZ_API void rz_print_colored_help_option(const char *option, const char *arg, const char *description, size_t max_length);
#endif

#ifdef __cplusplus
Expand Down
Loading

0 comments on commit efb9591

Please sign in to comment.