6400K .......... .......... .......... .......... .......... 21.7M 6450K .......... .......... .......... .......... .......... 21.3M 6500K ........ 76.8M=3.1s 2018-12-04 09:22:32 (2.04 MB/s) - ‘/usr/portage/distfiles/radare2-3.1.2.tar.gz’ saved [6664607] !!! Fetched file: radare2-3.1.2.tar.gz VERIFY FAILED! !!! Reason: Filesize does not match recorded size !!! Got: 6664607 !!! Expected: 6664534 Refetching... File renamed to '/usr/portage/distfiles/radare2-3.1.2.tar.gz._checksum_failure_.7mdxfb3k' !!! Couldn't download 'radare2-3.1.2.tar.gz'. Aborting.
Sergei, could you also share how do you monitor and bump it so fast? I wonder if you use some kind of software for it.
I'm using RSS feed from github's tag and release updates: https://github.com/radare/radare2/tags.atom https://github.com/radare/radare2/releases.atom But I'm bumpings packages manually. I guess tarball changes since last push. Let's see what is new.
The bug has been closed via the following commit(s): https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=f6900b62d8475d4502c7e1d61c2c73bbe934278f commit f6900b62d8475d4502c7e1d61c2c73bbe934278f Author: Sergei Trofimovich <slyfox@gentoo.org> AuthorDate: 2018-12-04 08:27:52 +0000 Commit: Sergei Trofimovich <slyfox@gentoo.org> CommitDate: 2018-12-04 08:35:50 +0000 dev-util/radare2: refetch upstream tarball, bug #672480 Anton reports validation failure as: !!! Got: 6664607 !!! Expected: 6664534 The upstream diff contains a few small diffs. Reported-by: Anton Bolshakov Closes: https://bugs.gentoo.org/672480 Package-Manager: Portage-2.3.52, Repoman-2.3.12 Signed-off-by: Sergei Trofimovich <slyfox@gentoo.org> dev-util/radare2/Manifest | 2 +- dev-util/radare2/{radare2-3.1.2.ebuild => radare2-3.1.2-r1.ebuild} | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-)
Posting diff here for posterity: $ diff -uraN radare2-3.1.2.old/ radare2-3.1.2.new/ diff -uraN radare2-3.1.2.old/libr/anal/bb.c radare2-3.1.2.new/libr/anal/bb.c --- radare2-3.1.2.old/libr/anal/bb.c 2018-12-03 15:42:26.000000000 +0000 +++ radare2-3.1.2.new/libr/anal/bb.c 2018-12-03 22:24:57.000000000 +0000 @@ -264,7 +264,7 @@ } last_delta = delta; } - return UT64_MAX; + return bb->addr + last_delta; } /* return true if an instruction starts at a given address of the given diff -uraN radare2-3.1.2.old/libr/bin/bin.c radare2-3.1.2.new/libr/bin/bin.c --- radare2-3.1.2.old/libr/bin/bin.c 2018-12-03 15:42:26.000000000 +0000 +++ radare2-3.1.2.new/libr/bin/bin.c 2018-12-03 22:24:57.000000000 +0000 @@ -1322,8 +1322,7 @@ return NULL; } -R_IPI RBinClass *r_bin_class_new(RBinFile *binfile, const char *name, - const char *super, int view) { +R_IPI RBinClass *r_bin_class_new(RBinFile *binfile, const char *name, const char *super, int view) { if (!binfile || !binfile->o) { return NULL; } diff -uraN radare2-3.1.2.old/libr/bin/format/mach0/mach0.c radare2-3.1.2.new/libr/bin/format/mach0/mach0.c --- radare2-3.1.2.old/libr/bin/format/mach0/mach0.c 2018-12-03 15:42:26.000000000 +0000 +++ radare2-3.1.2.new/libr/bin/format/mach0/mach0.c 2018-12-03 22:24:57.000000000 +0000 @@ -2175,7 +2175,7 @@ goto beach; } DO_BIND(); - addr += (ut64)imm * (ut64)(wordsize + wordsize); + addr += (ut64)imm * (ut64)wordsize + wordsize; break; case BIND_OPCODE_DO_BIND_ULEB_TIMES_SKIPPING_ULEB: count = ULEB(); @@ -2209,20 +2209,19 @@ if (amount < 0) { amount = 0; } - free (relocs); if (!(relocs = calloc (amount + 1, sizeof (struct reloc_t)))) { return NULL; } for (j = 0; j < amount; j++) { if (parse_import_ptr (bin, &relocs[i], bin->dysymtab.iundefsym + j)) { relocs[i].ord = j; - relocs[i++].last = 0; + relocs[i++].last = false; } } } beach: if (relocs) { - relocs[i].last = 1; + relocs[i].last = true; } return relocs; } diff -uraN radare2-3.1.2.old/libr/bin/format/nxo/nxo.c radare2-3.1.2.new/libr/bin/format/nxo/nxo.c --- radare2-3.1.2.old/libr/bin/format/nxo/nxo.c 2018-12-03 15:42:26.000000000 +0000 +++ radare2-3.1.2.new/libr/bin/format/nxo/nxo.c 2018-12-03 22:24:57.000000000 +0000 @@ -11,9 +11,9 @@ #include "nxo.h" ut32 readLE32(RBuffer *buf, int off) { - int left = 0; + //int left = 0; ut32 num = 0; - (void)r_buf_read_at (buf, off, &num, 4); + (void)r_buf_read_at (buf, off, (ut8 *)&num, 4); return num; //const ut8 *data = r_buf_get_at (buf, off, &left); //return left > 3? r_read_le32 (data): 0; diff -uraN radare2-3.1.2.old/libr/bin/obj.c radare2-3.1.2.new/libr/bin/obj.c --- radare2-3.1.2.old/libr/bin/obj.c 2018-12-03 15:42:26.000000000 +0000 +++ radare2-3.1.2.new/libr/bin/obj.c 2018-12-03 22:24:57.000000000 +0000 @@ -120,7 +120,6 @@ } } } - r_list_append (classes, c); } } if (r_list_empty (classes)) { @@ -181,7 +180,7 @@ } ut8 *bytes = malloc (sz); if (!bytes) { - eprintf ("Cannot allocate %d bytes\n", sz); + eprintf ("Cannot allocate %" PFMT64u " bytes\n", sz); return NULL; } r_buf_read_at (binfile->buf, offset, bytes, sz); diff -uraN radare2-3.1.2.old/libr/core/panels.c radare2-3.1.2.new/libr/core/panels.c --- radare2-3.1.2.old/libr/core/panels.c 2018-12-03 15:42:26.000000000 +0000 +++ radare2-3.1.2.new/libr/core/panels.c 2018-12-03 22:24:57.000000000 +0000 @@ -282,6 +282,7 @@ static void insertValue(RCore *core); static bool moveToDirection(RPanels *panels, Direction direction); static void showHelp(RCore *core, RPanelsMode mode); +static void createNewPanel(RCore *core, char *name, char *cmd, int caching); static RConsCanvas *createNewCanvas(RCore *core, int w, int h); static void panelPrint(RCore *core, RConsCanvas *can, RPanel *panel, int color) { @@ -1496,6 +1497,14 @@ } } +static void createNewPanel(RCore *core, char *name, char *cmd, int caching) { + RPanels *panels = core->panels; + addPanelFrame (core, panels, name, cmd, caching); + changePanelNum (panels, panels->n_panels - 1, 0); + r_core_panels_layout (panels); + setRefreshAll (panels, false); +} + static RConsCanvas *createNewCanvas(RCore *core, int w, int h) { RConsCanvas *can = r_cons_canvas_new (w, h); if (!can) { @@ -2978,36 +2987,15 @@ r_core_cmd0 (core, "s+"); break; case 'n': - { - r_cons_enable_mouse (false); - char *res = r_cons_input ("New panel with command: "); - int caching = r_cons_yesno ('y', "Cache the result? (Y/n)"); - if (res) { - if (*res) { - addPanelFrame (core, panels, res, res, caching); - changePanelNum (panels, panels->n_panels - 1, 0); - r_core_panels_layout (core->panels); - setRefreshAll (core->panels, false); - } - free (res); - } - r_cons_enable_mouse (true); - } - break; case 'N': { r_cons_enable_mouse (false); char *res = r_cons_input ("New panel with command: "); int caching = r_cons_yesno ('y', "Cache the result? (Y/n)"); - if (res) { - if (*res) { - addPanelFrame (core, panels, res, res, caching); - r_core_panels_layout (core->panels); - setRefreshAll (core->panels, false); - core->panels->panelsMenu->depth = 1; - } - free (res); + if (res && *res) { + createNewPanel (core, res, res, caching); } + free (res); r_cons_enable_mouse (true); } break; @@ -3156,7 +3144,7 @@ char *cmd = r_cons_input ("Command: "); int caching = r_cons_yesno ('y', "Cache the result? (Y/n)"); if (name && *name && cmd && *cmd) { - addPanelFrame (core, panels, name, cmd, caching); + createNewPanel (core, name, cmd, caching); } free (name); free (cmd); diff -uraN radare2-3.1.2.old/libr/core/visual.c radare2-3.1.2.new/libr/core/visual.c --- radare2-3.1.2.old/libr/core/visual.c 2018-12-03 15:42:26.000000000 +0000 +++ radare2-3.1.2.new/libr/core/visual.c 2018-12-03 22:24:57.000000000 +0000 @@ -1066,7 +1066,9 @@ RAnalFunction *fun = r_anal_get_fcn_in (core->anal, addr, R_ANAL_FCN_TYPE_NULL); if (fun) { if (xref) { // function xrefs - xrefs = r_anal_fcn_get_xrefs (core->anal, fun); + xrefs = r_anal_xrefs_get (core->anal, addr); + //XXX xrefs = r_anal_fcn_get_xrefs (core->anal, fun); + // this function is buggy so we must get the xrefs of the addr } else { // functon refs xrefs = r_anal_fcn_get_refs (core->anal, fun); } @@ -1248,8 +1250,8 @@ } goto repeat; } else if (ch == 'x' || ch == '<') { - xrefsMode = !xrefsMode; xref = true; + xrefsMode = !xrefsMode; goto repeat; } else if (ch == 'X' || ch == '>') { xref = false;