Skip to content

Commit

Permalink
Check anal APIs nullability for #23490
Browse files Browse the repository at this point in the history
  • Loading branch information
astralia authored and trufae committed Oct 28, 2024
1 parent e1728c3 commit a1c3ba0
Showing 1 changed file with 17 additions and 2 deletions.
19 changes: 17 additions & 2 deletions libr/anal/anal.c
Original file line number Diff line number Diff line change
Expand Up @@ -145,6 +145,7 @@ R_API RAnal *r_anal_new(void) {
}

R_API bool r_anal_plugin_remove(RAnal *anal, RAnalPlugin *plugin) {
R_RETURN_VAL_IF_FAIL (anal && plugin, false);
// XXX TODO
return true;
}
Expand Down Expand Up @@ -200,6 +201,7 @@ R_API void r_anal_set_user_ptr(RAnal *anal, void *user) {
}

R_API int r_anal_plugin_add(RAnal *anal, RAnalPlugin *foo) {
R_RETURN_VAL_IF_FAIL (anal && foo, -1);
if (foo->init) {
foo->init (anal->user);
}
Expand Down Expand Up @@ -229,11 +231,13 @@ R_API bool r_anal_use(RAnal *anal, const char *name) {
}

R_API char *r_anal_get_reg_profile(RAnal *anal) {
R_RETURN_VAL_IF_FAIL (anal, NULL);
RArchSession *session = R_UNWRAP3 (anal, arch, session);
RArchPluginRegistersCallback regs = R_UNWRAP3 (session, plugin, regs);
return regs? regs (session): NULL;
}

// R2_600 review this:
// deprecate.. or at least reuse get_reg_profile...
R_DEPRECATE R_API bool r_anal_set_reg_profile(RAnal *anal, const char *p) {
R_RETURN_VAL_IF_FAIL (anal, false);
Expand Down Expand Up @@ -283,6 +287,7 @@ static void sdb_concat_by_path(Sdb *s, const char *path) {
}

R_API bool r_anal_set_os(RAnal *anal, const char *os) {
R_RETURN_VAL_IF_FAIL (anal && os, false);
Sdb *types = anal->sdb_types;
const char *dir_prefix = r_sys_prefix (NULL);
SdbGperf *gp = r_anal_get_gperf_types (os);
Expand All @@ -307,6 +312,7 @@ R_API bool r_anal_set_os(RAnal *anal, const char *os) {
}

R_API bool r_anal_set_bits(RAnal *anal, int bits) {
R_RETURN_VAL_IF_FAIL (anal, false);
int obits = anal->config->bits;
r_arch_config_set_bits (anal->config, bits);
r_arch_set_bits (anal->arch, bits);
Expand Down Expand Up @@ -358,6 +364,7 @@ R_API void r_anal_trace_bb(RAnal *anal, ut64 addr) {
}

R_API RList* r_anal_get_fcns(RAnal *anal) {
R_RETURN_VAL_IF_FAIL (anal, NULL);
// avoid received to free this thing
anal->fcns->free = NULL;
return anal->fcns;
Expand Down Expand Up @@ -424,6 +431,7 @@ R_API R_DEPRECATE int r_anal_archinfo(RAnal *anal, int query) { // R2_590
}

R_API bool r_anal_is_aligned(RAnal *anal, const ut64 addr) {
R_RETURN_VAL_IF_FAIL (anal, false);
const int align = r_anal_archinfo (anal, R_ARCH_INFO_CODE_ALIGN);
return align <= 1 || !(addr % align);
}
Expand Down Expand Up @@ -485,7 +493,8 @@ R_API void r_anal_noreturn_list(RAnal *anal, int mode) {
#define K_NORET_ADDR(x) r_strf ("addr.%"PFMT64x".noreturn", x)
#define K_NORET_FUNC(x) r_strf ("func.%s.noreturn", x)

R_API bool r_anal_noreturn_add(RAnal *anal, const char *name, ut64 addr) {
R_API bool r_anal_noreturn_add(RAnal *anal, R_NULLABLE const char *name, ut64 addr) {
R_RETURN_VAL_IF_FAIL (anal, false);
r_strf_buffer (128);
const char *tmp_name = NULL;
Sdb *TDB = anal->sdb_types;
Expand Down Expand Up @@ -538,6 +547,7 @@ R_API bool r_anal_noreturn_add(RAnal *anal, const char *name, ut64 addr) {
}

R_API bool r_anal_noreturn_drop(RAnal *anal, const char *expr) {
R_RETURN_VAL_IF_FAIL (anal && expr, false);
r_strf_buffer (64);
Sdb *TDB = anal->sdb_types;
const char *fcnname = r_str_trim_head_ro (expr);
Expand Down Expand Up @@ -569,6 +579,7 @@ R_API bool r_anal_noreturn_drop(RAnal *anal, const char *expr) {
}

static bool r_anal_noreturn_at_name(RAnal *anal, const char *name) {
R_RETURN_VAL_IF_FAIL (anal && name, false);
r_strf_buffer (128);
if (sdb_bool_get (anal->sdb_types, K_NORET_FUNC (name), NULL)) {
return true;
Expand All @@ -588,6 +599,7 @@ static bool r_anal_noreturn_at_name(RAnal *anal, const char *name) {
}

R_API bool r_anal_noreturn_at_addr(RAnal *anal, ut64 addr) {
R_RETURN_VAL_IF_FAIL (anal, false);
r_strf_buffer (64);
return sdb_bool_get (anal->sdb_types, K_NORET_ADDR (addr), NULL);
}
Expand Down Expand Up @@ -632,7 +644,8 @@ static bool noreturn_recurse(RAnal *anal, ut64 addr) {
}

R_API bool r_anal_noreturn_at(RAnal *anal, ut64 addr) {
if (!addr || addr == UT64_MAX) {
R_RETURN_VAL_IF_FAIL (anal, false);
if (addr == UT64_MAX) {
return false;
}
if (r_anal_noreturn_at_addr (anal, addr)) {
Expand Down Expand Up @@ -672,6 +685,7 @@ R_API void r_anal_bind(RAnal *anal, RAnalBind *b) {
}

R_API RList *r_anal_preludes(RAnal *anal) {
R_RETURN_VAL_IF_FAIL (anal, NULL);
if (anal->arch->session) {
const char *const a = anal->arch->session? anal->arch->session->config->arch: "";
const char *const b = anal->config->arch;
Expand Down Expand Up @@ -770,6 +784,7 @@ R_API void r_anal_purge_imports(RAnal *anal) {
}

R_API bool r_anal_cmd(RAnal *anal, const char *cmd) {
R_RETURN_VAL_IF_FAIL (anal && cmd, false);
RListIter *iter;
RAnalPlugin *ap;
r_list_foreach (anal->plugins, iter, ap) {
Expand Down

0 comments on commit a1c3ba0

Please sign in to comment.