Fix #1938 - Workaround for cg /dev/urandom crash

This commit is contained in:
pancake 2015-01-17 01:21:43 +01:00
parent 672b7057a4
commit 1ccd0e3b67
2 changed files with 7 additions and 6 deletions

View file

@ -1,4 +1,4 @@
/* radare - LGPL - Copyright 2008-2014 - pancake */
/* radare - LGPL - Copyright 2008-2015 - pancake */
#include <r_cons.h>
#include <r_print.h>
@ -350,8 +350,7 @@ R_API void r_cons_flush() {
r_cons_filter ();
if (I.is_interactive) {
/* Use a pager if the output doesn't fit on the terminal window. */
if (I.pager && *(I.pager)
&& I.buffer_len > 0
if (I.pager && *I.pager && I.buffer_len > 0
&& r_str_char_count (I.buffer, '\n') >= I.rows) {
I.buffer[I.buffer_len-1] = 0;
r_sys_cmd_str_full (I.pager, I.buffer, NULL, NULL, NULL);

View file

@ -415,17 +415,17 @@ static int cmd_cmp(void *data, const char *input) {
free (b);
}
break;
case 'g':
case 'g': // "cg"
{ // XXX: this is broken
int diffops = 0;
RCore *core2;
char *file2 = NULL;
switch (input[1]) {
case 'o':
case 'o': // "cgo"
file2 = (char*)r_str_chop_ro (input+2);
r_anal_diff_setup (core->anal, R_TRUE, -1, -1);
break;
case 'f':
case 'f': // "cgf"
eprintf ("TODO: agf is experimental\n");
r_anal_diff_setup (core->anal, R_TRUE, -1, -1);
r_core_gdiff_fcn (core, core->offset,
@ -470,6 +470,8 @@ static int cmd_cmp(void *data, const char *input) {
r_config_get_i (core->config, "bin.baddr"));
r_core_gdiff (core, core2, 1);
r_core_diff_show (core, core2);
/* exchange a segfault with a memleak */
core2->config = NULL;
r_core_free (core2);
}
break;