From 5ecf422335fd2e7a8981336d4bc26b909359ecaa Mon Sep 17 00:00:00 2001 From: pancake Date: Thu, 14 Nov 2013 04:15:40 +0100 Subject: [PATCH] Fix two more segfaults reported by zlul --- libr/core/yank.c | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/libr/core/yank.c b/libr/core/yank.c index 8a6dd06f08..a3e48f44b4 100644 --- a/libr/core/yank.c +++ b/libr/core/yank.c @@ -18,9 +18,11 @@ R_API int r_core_yank_set (RCore *core, const char *str) { R_API int r_core_yank(struct r_core_t *core, ut64 addr, int len) { ut64 oldbsz = 0LL; ut64 curseek = core->offset; - free (core->yank_buf); - if (len<0) + if (len<0) { + eprintf ("r_core_yank: cannot yank negative bytes\n"); return R_FALSE; + } + free (core->yank_buf); core->yank_buf = (ut8 *)malloc (len); if (addr != core->offset) r_core_seek (core, addr, 1); @@ -30,7 +32,7 @@ R_API int r_core_yank(struct r_core_t *core, ut64 addr, int len) { } else if (len > core->blocksize) { oldbsz = core->blocksize; - r_core_block_size (core, len); + len = r_core_block_size (core, len); } memcpy (core->yank_buf, core->block, len); core->yank_off = addr;