From 8da8ad740fb63568d6c5019170a472d31239631e Mon Sep 17 00:00:00 2001 From: Sven Steinbauer Date: Thu, 19 May 2016 16:20:35 +0100 Subject: [PATCH] Cleanup fixes * For commit comments and compiler errors * Fixes for PR comments * fix some "infer fixes" commits Signed-off-by: Riccardo Schirone --- binr/radiff2/radiff2.c | 2 +- libr/anal/bb.c | 5 +-- libr/anal/cc.c | 2 +- libr/anal/data.c | 6 ++-- libr/anal/esil2reil.c | 47 +++++++++++++++----------- libr/anal/fcn.c | 2 +- libr/anal/meta.c | 3 +- libr/anal/value.c | 2 +- libr/anal/var.c | 8 +++-- libr/asm/p/asm_tricore.c | 28 ++++++++------- libr/bin/demangle.c | 1 + libr/bin/dwarf.c | 8 ++--- libr/bin/mangling/microsoft_demangle.c | 2 +- libr/bin/pdb/pdb.c | 2 ++ libr/bin/pdb/tpi.c | 27 +++++++++------ libr/bp/traptrace.c | 1 + libr/config/config.c | 7 +++- libr/cons/canvas.c | 1 + libr/cons/cons.c | 6 +++- libr/cons/grep.c | 5 +++ libr/cons/hud.c | 1 + libr/cons/input.c | 1 + libr/cons/less.c | 4 +++ libr/cons/pal.c | 1 + libr/cons/rgb.c | 1 + 25 files changed, 109 insertions(+), 64 deletions(-) diff --git a/binr/radiff2/radiff2.c b/binr/radiff2/radiff2.c index 23a96fa633..f307bcb7dd 100644 --- a/binr/radiff2/radiff2.c +++ b/binr/radiff2/radiff2.c @@ -33,8 +33,8 @@ static int anal_all = 0; static RCore* opencore(const char *f) { const ut64 baddr = UT64_MAX; RCore *c = r_core_new (); - r_core_loadlibs (c, R_CORE_LOADLIBS_ALL, NULL); if (!c) return NULL; + r_core_loadlibs (c, R_CORE_LOADLIBS_ALL, NULL); r_config_set_i (c->config, "io.va", useva); r_config_set_i (c->config, "anal.split", true); if (f) { diff --git a/libr/anal/bb.c b/libr/anal/bb.c index 0f50ea0d08..daf55797ad 100644 --- a/libr/anal/bb.c +++ b/libr/anal/bb.c @@ -169,9 +169,10 @@ R_API void r_anal_bb_set_offset(RAnalBlock *bb, int i, ut16 v) { // the offset of the instruction 0 is not stored because always 0 if (i > 0) { if (i >= bb->n_op_pos) { + ut16 *tmp_op_pos = realloc (bb->op_pos, (i * 2) * sizeof (*bb->op_pos)); + if (!tmp_op_pos) return; bb->n_op_pos = i * 2; - bb->op_pos = realloc (bb->op_pos, bb->n_op_pos * sizeof (*bb->op_pos)); - if (!bb->op_pos) return; + bb->op_pos = tmp_op_pos; } bb->op_pos[i - 1] = v; } diff --git a/libr/anal/cc.c b/libr/anal/cc.c index 8e1a4477ea..c0925d2831 100644 --- a/libr/anal/cc.c +++ b/libr/anal/cc.c @@ -12,7 +12,7 @@ NOTES #include R_API RAnalCC* r_anal_cc_new () { - RAnalCC *cc = R_NEW (RAnalCC); + RAnalCC *cc = R_NEW0 (RAnalCC); if (!cc) return NULL; r_anal_cc_init (cc); return cc; diff --git a/libr/anal/data.c b/libr/anal/data.c index cb9d6f92b1..5de2083db3 100644 --- a/libr/anal/data.c +++ b/libr/anal/data.c @@ -177,15 +177,15 @@ R_API RAnalData *r_anal_data_new_string(ut64 addr, const char *p, int len, int t } else { ad->str = malloc (len + 1); if (!ad->str) { - r_anal_data_free(ad); + r_anal_data_free (ad); return NULL; } memcpy (ad->str, p, len); ad->str[len] = 0; ad->buf = malloc (len + 1); if (!ad->buf) { - r_anal_data_free(ad); - eprintf ("Cannot allocate %"PFMT64d" bytes\n", len + 1); + r_anal_data_free (ad); + eprintf ("Cannot allocate %d bytes\n", len + 1); return NULL; } memcpy (ad->buf, ad->str, len + 1); diff --git a/libr/anal/esil2reil.c b/libr/anal/esil2reil.c index f2fb3bea7a..13d0516adf 100644 --- a/libr/anal/esil2reil.c +++ b/libr/anal/esil2reil.c @@ -192,33 +192,33 @@ static int reil_eq(RAnalEsil *esil) { src_type = src->type; // Check if the src is an internal var. If it is, we need to resolve it. if (src_type == ARG_ESIL_INTERNAL) { - reil_flag_spew_inst(esil, src->name + 1); + reil_flag_spew_inst (esil, src->name + 1); R_FREE (src); - src = reil_pop_arg(esil); + src = reil_pop_arg (esil); } else if (src_type == ARG_REG) { // No direct register to register transfer. ins = R_NEW0 (RAnalReilInst); if (!ins) return false; ins->opcode = REIL_STR; ins->arg[0] = src; - ins->arg[1] = R_NEW0(RAnalReilArg); + ins->arg[1] = R_NEW0 (RAnalReilArg); if (!ins->arg[1]) { reil_free_inst (ins); return false; } ins->arg[2] = R_NEW0(RAnalReilArg); if (!ins->arg[2]) { - reil_free_inst(ins); + reil_free_inst (ins); return false; } - reil_make_arg(esil, ins->arg[1], " "); - get_next_temp_reg(esil, tmp_buf); - reil_make_arg(esil, ins->arg[2], tmp_buf); + reil_make_arg (esil, ins->arg[1], " "); + get_next_temp_reg (esil, tmp_buf); + reil_make_arg (esil, ins->arg[2], tmp_buf); ins->arg[2]->size = ins->arg[0]->size; - reil_print_inst(esil, ins); - reil_push_arg(esil, ins->arg[2]); - reil_free_inst(ins); - src = reil_pop_arg(esil); + reil_print_inst (esil, ins); + reil_push_arg( esil, ins->arg[2]); + reil_free_inst (ins); + src = reil_pop_arg (esil); } // First, make a copy of the dst. We will need this to set the flags later on. @@ -264,14 +264,14 @@ static int reil_eq(RAnalEsil *esil) { reil_make_arg (esil, ins->arg[1], " "); ins->arg[2] = src; reil_print_inst (esil, ins); - reil_free_inst(ins); + reil_free_inst (ins); R_FREE (dst); return true; } - reil_cast_size(esil, src, dst); + reil_cast_size (esil, src, dst); ins->opcode = REIL_STR; - ins->arg[0] = reil_pop_arg(esil); + ins->arg[0] = reil_pop_arg (esil); if (!ins->arg[0]) { R_FREE (dst); reil_free_inst (ins); @@ -279,10 +279,10 @@ static int reil_eq(RAnalEsil *esil) { } ins->arg[2] = dst; - ins->arg[1] = R_NEW0(RAnalReilArg); - reil_make_arg(esil, ins->arg[1], " "); - reil_print_inst(esil, ins); - reil_free_inst(ins); + ins->arg[1] = R_NEW0 (RAnalReilArg); + reil_make_arg (esil, ins->arg[1], " "); + reil_print_inst (esil, ins); + reil_free_inst (ins); return true; } @@ -302,10 +302,18 @@ static int reil_binop(RAnalEsil *esil, RAnalReilOpcode opcode) { } ins = R_NEW0 (RAnalReilInst); + if (!ins) { + R_FREE (op1); + R_FREE (op2); + return false; + } ins->opcode = opcode; ins->arg[0] = op2; ins->arg[1] = op1; - if (!ins->arg[1]) return false; + if (!ins->arg[1]) { + reil_free_inst (ins); + return false; + } ins->arg[2] = R_NEW0(RAnalReilArg); if (!ins->arg[2]) { reil_free_inst (ins); @@ -752,6 +760,7 @@ static int reil_poken(RAnalEsil *esil, ut8 n) { ins->arg[1] = R_NEW0 (RAnalReilArg); if (!ins->arg[1]) { reil_free_inst (ins); + return false; } reil_make_arg(esil, ins->arg[1], " "); reil_print_inst(esil, ins); diff --git a/libr/anal/fcn.c b/libr/anal/fcn.c index 9b6578c570..26db90f3d2 100644 --- a/libr/anal/fcn.c +++ b/libr/anal/fcn.c @@ -1249,7 +1249,7 @@ R_API int r_anal_str_to_fcn(RAnal *a, RAnalFunction *f, const char *sig) { /* Add 'function' keyword */ str = malloc (strlen(sig) + 10); if (!str) { - eprintf ("Cannot allocate %"PFMT64d" bytes\n", strlen(sig) + 10); + eprintf ("Cannot allocate %d bytes\n", strlen(sig) + 10); return false; } strcpy (str, "function "); diff --git a/libr/anal/meta.c b/libr/anal/meta.c index 0f4ddad763..c412d7147d 100644 --- a/libr/anal/meta.c +++ b/libr/anal/meta.c @@ -436,7 +436,7 @@ static int meta_print_item(void *user, const char *k, const char *v) { it.str = (char *)sdb_decode ((const char*)it.str+1, 0); else { it.str = strdup (it.str? it.str: ""); // don't break in free - if (!it.str) goto beach + if (!it.str) goto beach; } printmetaitem (ui->anal, &it, ui->rad); free (it.str); @@ -489,7 +489,6 @@ static int meta_enumerate_cb(void *user, const char *k, const char *v) { } else { free(it); goto beach; - } //printmetaitem (ui->anal, &it, ui->rad); r_list_append (list, it); diff --git a/libr/anal/value.c b/libr/anal/value.c index 8ec4a01479..ef302494a6 100644 --- a/libr/anal/value.c +++ b/libr/anal/value.c @@ -12,7 +12,7 @@ R_API RAnalValue *r_anal_value_new_from_string(const char *str) { } R_API RAnalValue *r_anal_value_copy (RAnalValue *ov) { - RAnalValue *v = R_NEW (RAnalValue); + RAnalValue *v = R_NEW0 (RAnalValue); if (!v) return NULL; memcpy (v, ov, sizeof (RAnalValue)); // reference to reg and regdelta should be kept diff --git a/libr/anal/var.c b/libr/anal/var.c index a23b265427..f949eb2aff 100644 --- a/libr/anal/var.c +++ b/libr/anal/var.c @@ -221,7 +221,7 @@ R_API RAnalVar *r_anal_var_get (RAnal *a, ut64 addr, char kind, int scope, int d sdb_fmt_tobin (vardef, SDB_VARTYPE_FMT, &vt); av = R_NEW0 (RAnalVar); - if (!av) return NULL + if (!av) return NULL; av->addr = addr; av->scope = scope; av->delta = delta; @@ -393,7 +393,11 @@ R_API RList *r_anal_var_list(RAnal *a, RAnalFunction *fcn, int kind) { sdb_fmt_tobin (vardef, SDB_VARTYPE_FMT, &vt); RAnalVar *av; av = R_NEW0 (RAnalVar); - if (!av) return NULL; + if (!av) { + free (varlist); + r_list_free (list); + return NULL; + } av->delta = delta; av->kind = kind; av->name = strdup (vt.name); diff --git a/libr/asm/p/asm_tricore.c b/libr/asm/p/asm_tricore.c index 6741da80d1..1c4b12826d 100644 --- a/libr/asm/p/asm_tricore.c +++ b/libr/asm/p/asm_tricore.c @@ -53,21 +53,23 @@ static int buf_fprintf(void *stream, const char *format, ...) { flen = strlen (format); glen = strlen (buf_global); tmp = malloc (flen + glen + 2); - if (!tmp) { - return 0; - } else { - if (strchr (buf_global, '%')) { - char *buf_local = strdup (buf_global); - if (!buf_local) { - free (tmp); - return 0; - } - escaped = r_str_replace (buf_local, "%", "%%", true); - } else { - escaped = strdup (buf_global); + if (!tmp) return 0; + + if (strchr (buf_global, '%')) { + char *buf_local = strdup (buf_global); + if (!buf_local) { + free (tmp); + return 0; + } + escaped = r_str_replace (buf_local, "%", "%%", true); + } else { + escaped = strdup (buf_global); + if (!escaped) { + free (tmp); + return 0; } - glen = strlen (escaped); } + glen = strlen (escaped); if (escaped) { memcpy (tmp, escaped, glen); diff --git a/libr/bin/demangle.c b/libr/bin/demangle.c index 958e9e48cd..6756a04931 100644 --- a/libr/bin/demangle.c +++ b/libr/bin/demangle.c @@ -109,6 +109,7 @@ R_API char *r_bin_demangle_msvc(const char *str) { SDemangler *mangler = 0; create_demangler (&mangler); + if (!mangler) return NULL; if (init_demangler (mangler, (char *)str) == eDemanglerErrOK) { mangler->demangle (mangler, &out/*demangled_name*/); } diff --git a/libr/bin/dwarf.c b/libr/bin/dwarf.c index a1e14b2664..cb187bb8ea 100644 --- a/libr/bin/dwarf.c +++ b/libr/bin/dwarf.c @@ -1426,7 +1426,7 @@ RBinSection *getsection(RBin *a, const char *sn) { r_list_foreach (o->sections, iter, section) { if (strstr (section->name, sn)) { return section; -} + } } } return NULL; @@ -1502,11 +1502,9 @@ R_API RList *r_bin_dwarf_parse_line(RBin *a, int mode) { return NULL; } buf = calloc (1, len+1); + if (!buf) return NULL; ret = r_buf_read_at (binfile->buf, section->paddr, buf, len); - if (!ret) { - free (buf); - return NULL; - } + list = r_list_new (); // always return empty list wtf list->free = r_bin_dwarf_row_free; r_bin_dwarf_parse_line_raw2 (a, buf, len, mode); diff --git a/libr/bin/mangling/microsoft_demangle.c b/libr/bin/mangling/microsoft_demangle.c index 959546fc41..9ba2f4d12c 100644 --- a/libr/bin/mangling/microsoft_demangle.c +++ b/libr/bin/mangling/microsoft_demangle.c @@ -291,7 +291,7 @@ int get_namespace_and_name( char *buf, STypeCodeStr *type_code_str, { int i = 0; str_info = (SStrInfo *) malloc(sizeof(SStrInfo)); - if (!str_info) break;d + if (!str_info) break; i = get_template(buf + 1, str_info); if (!i) { R_FREE(str_info); diff --git a/libr/bin/pdb/pdb.c b/libr/bin/pdb/pdb.c index d1fffcfdfb..2c16e36c34 100644 --- a/libr/bin/pdb/pdb.c +++ b/libr/bin/pdb/pdb.c @@ -781,10 +781,12 @@ void build_command_field(ELeafType lt, char **command_field) { case eLF_STRUCTURE: case eLF_UNION: *command_field = (char *) malloc(strlen("pf") + 1); + if (!(*command_field)) break; strcpy(*command_field, "pf"); break; case eLF_ENUM: *command_field = (char *) malloc(strlen("\"td enum") + 1); + if (!(*command_field)) break; strcpy(*command_field, "\"td enum"); break; default: diff --git a/libr/bin/pdb/tpi.c b/libr/bin/pdb/tpi.c index ae355c899a..ad1cbe7f85 100644 --- a/libr/bin/pdb/tpi.c +++ b/libr/bin/pdb/tpi.c @@ -1099,7 +1099,7 @@ static void get_array_print_type(void *type, char **name) name_len += strlen (tmp_name); *name = (char *) malloc (name_len + 1); if (!(*name)) { - if (tmp_name) free (tmp_name); + free (tmp_name); return; } // name[name_len] = '\0'; @@ -1137,7 +1137,7 @@ static void get_pointer_print_type(void *type, char **name) name_len += strlen (tmp_name); *name = (char *) malloc (name_len + 1); if (!(*name)) { - if (tmp_name) free (tmp_name); + free (tmp_name); return; } // name[name_len] = '\0'; @@ -1175,7 +1175,7 @@ static void get_modifier_print_type(void *type, char **name) name_len += strlen (tmp_name); *name = (char *) malloc(name_len + 1); if (!(*name)) { - if (tmp_name) free (tmp_name); + free (tmp_name); return; } // name[name_len] = '\0'; @@ -1249,6 +1249,7 @@ static void get_fieldlist_print_type(void *type, char **name) name_len = strlen ("fieldlist "); *name = (char *) malloc (name_len + 1); + if (!(*name)) return; // name[name_len] = '\0'; strcpy (*name, "fieldlist "); } @@ -1526,9 +1527,12 @@ static void get_member_print_type(void *type, char **name) if (tmp_name) name_len += strlen (tmp_name); *name = (char *) malloc (name_len + 1); - if (!(*name)) return; + if (!(*name)) { + if (need_to_free) R_FREE (tmp_name); + return; + } // name[name_len] = '\0'; - strcp y(*name, "(member) "); + strcpy(*name, "(member) "); if (tmp_name) strcat (*name, tmp_name); @@ -1578,6 +1582,7 @@ void init_scstring(SCString *cstr, unsigned int size, char *name) { cstr->size = size; cstr->name = (char *) malloc (size); + if (!cstr->name) return; strcpy (cstr->name, name); } @@ -1969,11 +1974,11 @@ static void init_stype_info(STypeInfo *type_info) #define PARSE_LF2(lf_type, lf_func_name, type) { \ STypeInfo *type_info = (STypeInfo *) malloc (sizeof (STypeInfo)); \ - if (!type_info) return; \ + if (!type_info) return 0; \ lf_type *lf = (lf_type *) malloc (sizeof (lf_type)); \ if (!lf) { \ free (type_info); \ - return; \ + return 0; \ } \ curr_read_bytes = parse_##lf_func_name (lf, p, read_bytes, len); \ type_info->type_info = (void *) lf; \ @@ -2170,7 +2175,7 @@ static int parse_lf_arglist(SLF_ARGLIST *lf_arglist, unsigned char *leaf_data, u READ (*read_bytes, 4, len, lf_arglist->count, leaf_data, unsigned int); lf_arglist->arg_type = (unsigned int *) malloc (lf_arglist->count * 4); - if (!lf_arglist->arg_typ) return 0; + if (!lf_arglist->arg_type) return 0; memcpy (lf_arglist->arg_type, leaf_data, lf_arglist->count * 4); leaf_data += (lf_arglist->count * 4); *read_bytes += (lf_arglist->count * 4); @@ -2271,7 +2276,7 @@ static int parse_lf_vtshape(SLF_VTSHAPE *lf_vtshape, unsigned char *leaf_data, u size = (4 * lf_vtshape->count + (lf_vtshape->count % 2) * 4) / 8; lf_vtshape->vt_descriptors = (char *) malloc (size); - if (!lf_vtshape) return; + if (!lf_vtshape->vt_descriptors) return 0; memcpy (lf_vtshape->vt_descriptors, leaf_data, size); leaf_data += size; *read_bytes += size; @@ -2284,7 +2289,7 @@ static int parse_lf_vtshape(SLF_VTSHAPE *lf_vtshape, unsigned char *leaf_data, u #define PARSE_LF(lf_type, lf_func) { \ lf_type *lf = (lf_type *) malloc(sizeof(lf_type)); \ - if (!lf) return; \ + if (!lf) return 0; \ parse_##lf_func(lf, leaf_data + 2, &read_bytes, type->length); \ type->type_data.type_info = (void *) lf; \ init_stype_info(&type->type_data); \ @@ -2328,7 +2333,7 @@ static int parse_tpi_stypes(R_STREAM_FILE *stream, SType *type) { if (!lf) { \ free (leaf_data); \ return 0; \ - } + } \ parse_lf_pointer(lf, leaf_data + 2, &read_bytes, type->length); \ type->type_data.type_info = (void *) lf; \ init_stype_info(&type->type_data); \ diff --git a/libr/bp/traptrace.c b/libr/bp/traptrace.c index c1f55d6ec4..c4b9ee6481 100644 --- a/libr/bp/traptrace.c +++ b/libr/bp/traptrace.c @@ -14,6 +14,7 @@ R_API void r_bp_traptrace_free(void *ptr) { R_API RList *r_bp_traptrace_new() { RList *list = r_list_new(); + if (!list) return NULL; list->free = &r_bp_traptrace_free; return list; } diff --git a/libr/config/config.c b/libr/config/config.c index 8bf4e0be4d..eb876a91a4 100644 --- a/libr/config/config.c +++ b/libr/config/config.c @@ -19,6 +19,7 @@ R_API RConfigNode *r_config_node_new(const char *name, const char *value) { R_API RConfigNode *r_config_node_clone(RConfigNode *n) { RConfigNode *cn = R_NEW0 (RConfigNode); + if (!cn) return NULL; cn->name = strdup (n->name); cn->desc = n->desc? strdup (n->desc): NULL; cn->hash = n->hash; @@ -411,10 +412,14 @@ R_API int r_config_readonly(RConfig *cfg, const char *key) { } R_API RConfig *r_config_new(void *user) { - RConfig *cfg = R_NEW (RConfig); + RConfig *cfg = R_NEW0 (RConfig); if (!cfg) return NULL; cfg->ht = r_hashtable_new (); cfg->nodes = r_list_new (); + if (!cfg->nodes) { + R_FREE (cfg); + return NULL; + } cfg->nodes->free = r_config_node_free; cfg->user = user; cfg->num = NULL; diff --git a/libr/cons/canvas.c b/libr/cons/canvas.c index 158f31d875..b392df7471 100644 --- a/libr/cons/canvas.c +++ b/libr/cons/canvas.c @@ -366,6 +366,7 @@ R_API void r_cons_canvas_fill(RConsCanvas *c, int x, int y, int w, int h, char c if (w < 0) return; row = malloc (w + 1); + if (!row) return; memset (row, ch, w); row[w] = 0; diff --git a/libr/cons/cons.c b/libr/cons/cons.c index 5e1612fbfb..ce49d5fa51 100644 --- a/libr/cons/cons.c +++ b/libr/cons/cons.c @@ -343,8 +343,9 @@ R_API void r_cons_fill_line() { char *p, white[1024]; int cols = I.columns-1; if (cols<1) return; - p = (cols>=sizeof (white))? + p = (cols >= sizeof (white))? malloc (cols+1): white; + if (!p) return; memset (p, ' ', cols); p[cols] = 0; r_cons_strcat (p); @@ -424,6 +425,7 @@ R_API void r_cons_push() { backup_len = I.buffer_len; backup_size = I.buffer_sz; I.buffer = malloc (I.buffer_sz); + if (!I.buffer) return; memcpy (I.buffer, backup, I.buffer_len); I.buffer_len = 0; } @@ -849,6 +851,7 @@ R_API void r_cons_set_cup(int enable) { R_API void r_cons_column(int c) { char *b = malloc (I.buffer_len+1); + if (!b) return; memcpy (b, I.buffer, I.buffer_len); b[I.buffer_len] = 0; r_cons_reset (); @@ -900,6 +903,7 @@ R_API void r_cons_highlight (const char *word) { I.highlight = strdup (word); } rword = malloc (word_len + linv[0] + linv[1] + 1); + if (!rword) return; strcpy (rword, inv[0]); strcpy (rword + linv[0], word); strcpy (rword + linv[0] + word_len, inv[1]); diff --git a/libr/cons/grep.c b/libr/cons/grep.c index ec06e820c4..cea8eb5edb 100644 --- a/libr/cons/grep.c +++ b/libr/cons/grep.c @@ -280,7 +280,12 @@ R_API int r_cons_grep_line(char *buf, int len) { size_t i; in = calloc (1, len + 1); + if (!in) return 0; out = calloc (1, len + 2); + if (!out) { + free (in); + return 0; + } memcpy (in, buf, len); if (cons->grep.nstrings > 0) { diff --git a/libr/cons/hud.c b/libr/cons/hud.c index 07e722d49a..165866c583 100644 --- a/libr/cons/hud.c +++ b/libr/cons/hud.c @@ -20,6 +20,7 @@ R_API char *r_cons_hud_file(const char *f, const bool usecolor) { // the lines starting with # ) R_API char *r_cons_hud_string(const char *s, const bool usecolor) { char *os, *track, *ret, *o = strdup (s); + if (!o) return NULL; RList *fl = r_list_new (); int i; if (!fl) { diff --git a/libr/cons/input.c b/libr/cons/input.c index 6e95f99e3f..0191070dfa 100644 --- a/libr/cons/input.c +++ b/libr/cons/input.c @@ -479,6 +479,7 @@ R_API int r_cons_yesno(int def, const char *fmt, ...) { R_API char *r_cons_input(const char *msg) { char *oprompt = r_line_get_prompt (); //r_cons_singleton()->line->prompt); + if (!oprompt) return NULL; char buf[1024]; if (msg) { //r_cons_printf ("%s\n", msg); diff --git a/libr/cons/less.c b/libr/cons/less.c index 009ee65935..b2816352ed 100644 --- a/libr/cons/less.c +++ b/libr/cons/less.c @@ -48,6 +48,7 @@ static void printpage (const char *line, int *index, RList **mla, return; } p = r_strpool_new (0); + if (!p) return; for (i = from; i < to; i++) { color_line (line + index[i], p, mla[i]); r_strpool_ansi_chop (p, w); @@ -121,6 +122,7 @@ static int all_matches(const char *s, RRegex *rx, RList **mla, m.rm_so = 0; const char *loff = s + lines[l]; /* current line offset */ char *clean = strdup(loff); + if (!clean) return 0; int *cpos; r_str_ansi_filter(clean, NULL, &cpos, 0); m.rm_eo = slen = strlen(clean); @@ -159,11 +161,13 @@ R_API int r_cons_less_str(const char *str, const char *exitkeys) { if (str == NULL || str[0] == '\0') return 0; char *p = strdup (str); + if (!p) return 0; int *lines = splitlines (p, &lines_count); if (lines_count<1) { mla = NULL; } else { mla = calloc (lines_count, sizeof (RList *)); + if (!mla) return 0; } for (i = 0; i < lines_count; i++) mla[i] = r_list_new (); diff --git a/libr/cons/pal.c b/libr/cons/pal.c index c9f2a6499d..6d27056e1c 100644 --- a/libr/cons/pal.c +++ b/libr/cons/pal.c @@ -152,6 +152,7 @@ R_API char *r_cons_pal_parse (const char *str) { ut8 r, g, b; char out[128]; char *s = strdup (str); + if (!s) return NULL; char *p = strchr (s + 1, ' '); out[0] = 0; if (p) *p++ = 0; diff --git a/libr/cons/rgb.c b/libr/cons/rgb.c index 82df013f03..dc09726ff0 100644 --- a/libr/cons/rgb.c +++ b/libr/cons/rgb.c @@ -149,6 +149,7 @@ R_API int r_cons_rgb_parse (const char *p, ut8 *r, ut8 *g, ut8 *b, int *is_bg) { R_API char *r_cons_rgb_str (char *outstr, ut8 r, ut8 g, ut8 b, int is_bg) { int fgbg = is_bg ? 48: 38; if (!outstr) outstr = malloc (32); + if (!outstr) return NULL; switch (r_cons_singleton ()->truecolor) { case 1: // 256 color palette