Remove legacy unit tests (#3088)

This commit is contained in:
Anton Kochkov 2023-01-23 17:46:21 +08:00 committed by GitHub
parent ead601655c
commit a3885e8f99
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
72 changed files with 4 additions and 1980 deletions

View file

@ -75,6 +75,10 @@ Files: **/meson_options.txt
Copyright: 2021 RizinOrg <info@rizin.re>
License: LGPL-3.0-only
Files: doc/examples/egg/*
Copyright: 2009 RadareOrg <pancake@nopcode.org>
License: LGPL-3.0-only
Files: doc/fortunes*
Copyright: 2009 RadareOrg <pancake@nopcode.org>
License: LGPL-3.0-only

View file

@ -1,11 +0,0 @@
CFLAGS+=-I../../include
LDFLAGS+=-lrz_cons -L../../librz/cons
LDFLAGS+=-lrz_util -L../../librz/util
all: graph test-rgb
test-rgb: test-rgb.o
$(CC) -o test-rgb test-rgb.o $(LDFLAGS)
graph: graph.o
$(CC) -o graph graph.o $(LDFLAGS)

View file

@ -1,132 +0,0 @@
/* Copyright rizin 2014 - Author: pancake */
#include <rz_cons.h>
typedef struct {
int x;
int y;
int w;
int h;
ut64 addr;
const char *text;
} Node;
typedef struct {
int nth;
int from;
int to;
} Edge;
int curnode = 0;
static Node nodes[] = {
{ 25, 4, 18, 6, 0x8048320, "push ebp\nmov esp, ebp\njz 0x8048332" },
{ 10, 13, 18, 5, 0x8048332, "xor eax, eax\nint 0x80\n" },
{ 30, 13, 18, 5, 0x8048324, "pop ebp\nret" },
{ NULL }
};
static Edge edges[] = {
{ 0, 0, 1 },
{ 1, 0, 2 },
{ -1 }
};
#define G(x, y) rz_cons_canvas_gotoxy(can, x, y)
#define W(x) rz_cons_canvas_write(can, x)
#define B(x, y, w, h) rz_cons_canvas_box(can, x, y, w, h)
#define L(x, y, x2, y2) rz_cons_canvas_line(can, x, y, x2, y2, 0)
#define F(x, y, x2, y2, c) rz_cons_canvas_fill(can, x, y, x2, y2, c, 0)
static void Node_print(RzConsCanvas *can, Node *n, int cur) {
char title[128];
n->w = rz_str_bounds(n->text, &n->h);
n->w += 4;
n->h += 4;
n->w = RZ_MAX(18, n->w);
if (cur) {
F(n->x, n->y, n->w, n->h, '.');
snprintf(title, sizeof(title) - 1,
"-[ 0x%08" PFMT64x " ]-", n->addr);
} else {
snprintf(title, sizeof(title) - 1,
" 0x%08" PFMT64x " ", n->addr);
}
G(n->x + 1, n->y + 1);
W(title);
G(n->x + 2, n->y + 2);
W(n->text);
G(n->x + 1, n->y + 1);
W(title);
B(n->x, n->y, n->w, n->h);
}
static void Edge_print(RzConsCanvas *can, Node *a, Node *b, int nth) {
int x, y, x2, y2;
int xinc = 3 + (nth * 3);
x = a->x + xinc;
y = a->y + a->h;
x2 = b->x + xinc;
y2 = b->y;
L(x, y, x2, y2);
}
main() {
int w, h, i;
RzConsCanvas *can;
RzCons *c = rz_cons_new();
w = rz_cons_get_size(&h);
can = rz_cons_canvas_new(w - 1, h - 1);
repeat:
rz_cons_canvas_clear(can);
for (i = 0; edges[i].nth != -1; i++) {
Node *a = &nodes[edges[i].from];
Node *b = &nodes[edges[i].to];
Edge_print(can, a, b, edges[i].nth);
}
for (i = 0; nodes[i].text; i++) {
Node_print(can, &nodes[i], i == curnode);
}
// rz_cons_canvas_line (can, 12, 4+5, X+5, 5, 0);
rz_cons_canvas_print(can);
rz_cons_flush();
int key = rz_cons_readchar();
#define N nodes[curnode]
switch (key) {
case 9:
curnode++;
if (!nodes[curnode].text)
curnode = 0;
break;
case 'j': N.y++; break;
case 'k': N.y--; break;
case 'h': N.x--; break;
case 'l': N.x++; break;
case 'J': N.y += 2; break;
case 'K': N.y -= 2; break;
case 'H': N.x -= 2; break;
case 'L': N.x += 2; break;
case 'q': exit(0);
case 27: // ESC
if (rz_cons_readchar() == 91) {
if (rz_cons_readchar() == 90) {
if (curnode < 1) {
int i;
for (i = 0; nodes[i].text; i++) {
};
curnode = i - 1;
} else
curnode--;
}
}
break;
default:
eprintf("Key %d\n", key);
sleep(1);
}
goto repeat;
rz_cons_free(c);
}

View file

@ -1,32 +0,0 @@
#include <rz_cons.h>
int main() {
int i, j, k;
// char *str = "\x1b[38;5;231mpop\x1b[0m";
// char *str ="\x1b]4;%d;rgb:30/20/24pop\x1b[0m";
char *str = "\x1b\\pop\x1b[0m";
i = j = k = 0;
rz_cons_new();
// rz_cons_rgb_init ();
printf("3 == %d\n", rz_str_ansi_len(str));
for (i = 0; i < 255; i += 40) {
for (j = 0; j < 255; j += 40) {
for (k = 0; k < 255; k += 40) {
rz_cons_rgb(i, j, k, 0);
rz_cons_rgb(i, j, k, 1);
rz_cons_print("__");
rz_cons_reset_colors();
rz_cons_rgb(i, j, k, 0);
// rz_cons_rgb (155, 200, 200, 1);
rz_cons_printf(" RGB %d %d %d", i, j, k);
rz_cons_reset_colors();
rz_cons_newline();
}
}
}
rz_cons_flush();
return 0;
}

View file

@ -1,6 +0,0 @@
OBJ=main.o
BIN=main
BINDEPS=rz_debug rz_bp rz_io rz_reg rz_cons rz_analysis rz_socket rz_syscall rz_db rz_util
include ../../rules.mk
include ../../db/r.mk

View file

@ -1,83 +0,0 @@
// SPDX-FileCopyrightText: 2009-2010 pancake <pancake@nopcode.org>
// SPDX-License-Identifier: LGPL-3.0-only
#include <rz_util.h>
#include <rz_debug.h>
#include <rz_io.h>
#include <rz_core.h>
int main(int argc, char **argv) {
int ret, i;
RzIODesc *fd;
int tid, pid;
struct rz_io_t *io;
struct rz_debug_t *dbg = NULL;
RzCmdStateOutput state = { 0 };
rz_cmd_state_output_init(&state, RZ_OUTPUT_MODE_STANDARD);
io = rz_io_new();
printf("Supported IO pluggins:\n");
rz_core_io_plugins_print(io, &state);
rz_cmd_state_output_print(&state);
rz_cmd_state_output_fini(&state);
fd = rz_io_open_nomap(io, "dbg:///bin/ls", 0, 0);
if (!fd) {
printf("Cannot open dbg:///bin/ls\n");
goto beach;
}
// rz_io_set_fd(io, ret);
printf("rz_io_open_nomap dbg:///bin/ls' = %d\n", io->fd->fd);
{
/* dump process memory */
ut8 buf[128];
#if __arm__
int ret = rz_io_read_at(io, 0x8000, buf, 128);
#else
int ret = rz_io_read_at(io, 0x8048000, buf, 128);
#endif
if (ret != 128)
eprintf("OOps cannot read 128 bytes\n");
else
for (i = 0; i < 128; i++) {
printf("%02x ", buf[i]);
if (!((i + 1) % 16))
printf("\n");
}
}
dbg = rz_debug_new(true);
printf("Supported debugger backends:\n");
ret = rz_debug_use(dbg, "native");
printf("Using native debugger = %s\n", rz_str_bool(ret));
tid = pid = rz_io_system(io, "pid");
eprintf(" My pid is : %d\n", pid);
rz_debug_select(dbg, pid, tid);
// printf("--> regs pre step\n");
// rz_io_system(io, "reg");
rz_debug_reg_sync(dbg, RZ_REG_TYPE_GPR, 0);
rz_debug_reg_list(dbg, RZ_REG_TYPE_GPR, 32, NULL);
printf("--> perform 2 steps (only 1 probably?)\n");
rz_debug_step(dbg, 2);
rz_debug_reg_sync(dbg, RZ_REG_TYPE_GPR, 0);
rz_debug_reg_list(dbg, RZ_REG_TYPE_GPR, 32, NULL);
// printf("--> regs post step\n");
// rz_io_system(io, "reg");
printf("---\n");
rz_debug_continue(dbg);
printf("---\n");
beach:
rz_io_free(io);
rz_debug_free(dbg);
return 0;
}

View file

@ -1,25 +0,0 @@
TESTS=exit1 hello loop loop2 fun fun2 fun3 fun4
TESTS+=nest nest2 nest3
#ARG PASSING ERR
TESTS+=fun5 fun6
#INVALID SYNTAX
#TESTS+=looptail
include ../../config.mk
BINDEPS=rz_egg rz_asm rz_parse rz_syscall rz_db rz_util
BIN=test
OBJ=test.o
.PHONY: t tests myclean
include ../../rules.mk
include ../../db/r.mk
t tests:
@for TEST in ${TESTS} ; do sh t-$${TEST}.sh ; done
myclean:
rm -f test${EXT_EXE} test.o

View file

@ -1,12 +0,0 @@
#!/bin/sh
EXIT=1
OUTPUT=""
cat > t.r <<EOF
main@global(128) {
: push 1
: mov eax, 1
: push eax
: int 0x80
}
EOF
. ./t.sh

View file

@ -1,22 +0,0 @@
#!/bin/sh
EXIT=0
OUTPUT="loop
loop
loop"
cat > t.r <<EOF
exit@syscall(1);
write@syscall(4);
main();
fun@global(128,128) {
write (1, "loop\n", 5);
}
main@global(128,128) {
.var0 = 0;
while (.var0<2) {
fun ("loop\n", 5);
.var0 += 1;
}
exit (0);
}
EOF
. ./t.sh

View file

@ -1,23 +0,0 @@
#!/bin/sh
EXIT=0
OUTPUT="loop
loop
loop"
cat > t.r <<EOF
exit@syscall(1);
write@syscall(4);
main();
// naked function for wrapping calls
fun@global() {
write (1, .arg0, .arg1);
}
main@global(128,128) {
.var0 = 0;
while (.var0<2) {
fun ("loop\n", 5);
.var0 += 1;
}
exit (0);
}
EOF
. ./t.sh

View file

@ -1,24 +0,0 @@
#!/bin/sh
EXIT=0
OUTPUT="loop
loop
loop"
cat > t.r <<EOF
exit@syscall(1);
write@syscall(4);
main();
fun@(4) {
write (1, .arg0, .arg4);
}
main@global(128,128) {
.var0 = 0;
while (.var0<2) {
fun ("loop\n", 5);
.var0 += 1;
}
exit (0);
}
EOF
. ./t.sh

View file

@ -1,28 +0,0 @@
#!/bin/sh
EXIT=0
OUTPUT="loop
loop
loop"
cat > t.r <<EOF
exit@syscall(1);
write@syscall(4);
main();
fun2@(128) {
write (.arg0, .arg4, .arg8);
}
fun@(128) {
fun2 (1, .arg0, .arg4);
}
main@global(128,128) {
.var0 = 0;
while (.var0<2) {
fun ("loop\n", 5);
.var0 += 1;
}
exit (0);
}
EOF
. ./t.sh

View file

@ -1,28 +0,0 @@
#!/bin/sh
EXIT=0
OUTPUT="loop
loop
loop"
cat > t.r <<EOF
exit@syscall(1);
write@syscall(4);
main();
fun2@(1) {
write (.arg0, .arg4, .arg8);
}
fun@(1) {
fun2 (1, .arg0, .arg4);
}
main@global(128,128) {
.var0 = 0;
while (.var0<2) {
fun ("loop\n", 5);
.var0 += 1;
}
exit (0);
}
EOF
. ./t.sh

View file

@ -1,31 +0,0 @@
#!/bin/sh
EXIT=0
OUTPUT="loop
loop
loop"
cat > t.r <<EOF
exit@syscall(1);
write@syscall(4);
main();
fun2@(,8) {
// XXX: we cant access args in naked functions
// write (.arg0, .arg4, .arg8);
write (1, "pop\n", 4);
}
fun@(16) {
fun2 (1, .arg0, .arg4);
}
main@global(128,128) {
.var0 = 0;
while (.var0<2) {
fun ("loop\n", 5);
.var0 += 1;
}
exit (0);
}
EOF
. ./t.sh

View file

@ -1,13 +0,0 @@
#!/bin/sh
EXIT=0
OUTPUT="hello world"
cat > t.r <<EOF
exit@syscall(1);
write@syscall(4);
main@global(128,128) {
write (1, "hello world\n", 12);
exit (0);
}
EOF
. ./t.sh

View file

@ -1,19 +0,0 @@
#!/bin/sh
EXIT=0
OUTPUT="loop
loop
loop"
cat > t.r <<EOF
exit@syscall(1);
write@syscall(4);
main@global(128,128) {
.var0 = 3;
while (.var0) {
write (1, "loop\n", 5);
.var0 -= 1;
}
exit (0);
}
EOF
. ./t.sh

View file

@ -1,18 +0,0 @@
#!/bin/sh
EXIT=0
OUTPUT="loop
loop
loop"
cat > t.r <<EOF
exit@syscall(1);
write@syscall(4);
main@global(128,128) {
.var0 = 0;
while (.var0<2) {
write (1, "loop\n", 5);
.var0 += 1;
}
exit (0);
}
EOF
. ./t.sh

View file

@ -1,19 +0,0 @@
#!/bin/sh
EXIT=0
OUTPUT="loop
loop
loop"
cat > t.r <<EOF
exit@syscall(1);
write@syscall(4);
main@global(128,128) {
.var0 = 3;
{
write (1, "loop\n", 5);
.var0 -= 1;
} while (.var0);
exit (0);
}
EOF
. ./t.sh

View file

@ -1,30 +0,0 @@
#!/bin/sh
EXIT=0
OUTPUT="one
one
two
one
one
two"
cat > t.r <<EOF
exit@syscall(1);
write@syscall(4);
main@global(128,128) {
.var0 = 2;
: polla:
.var4 = 2;
while (.var4) {
write (1, "one\n", 4);
.var4 -= 1;
}
write (1, "two\n", 4);
.var0 -= 1;
if (.var0) {
goto(polla);
}
exit (0);
}
EOF
. ./t.sh

View file

@ -1,28 +0,0 @@
#!/bin/sh
EXIT=0
OUTPUT="one
one
two
one
one
two"
cat > t.r <<EOF
exit@syscall(1);
write@syscall(4);
main@global(128,128) {
.var0 = 2;
while (.var0) {
.var4 = 2;
while (.var4) {
write (1, "one\n", 4);
.var4 -= 1;
}
write (1, "two\n", 4);
.var0 -= 1;
}
exit (0);
}
EOF
. ./t.sh

View file

@ -1,41 +0,0 @@
#!/bin/sh
EXIT=0
OUTPUT="zero
zero
one
zero
zero
one
two
zero
zero
one
zero
zero
one
two"
cat > t.r <<EOF
exit@syscall(1);
write@syscall(4);
main@global(128,128) {
.var0 = 2;
while (.var0) {
.var4 = 2;
while (.var4) {
.var8 = 2;
while (.var8) {
write (1, "zero\n", 5);
.var8 -= 1;
}
write (1, "one\n", 4);
.var4 -= 1;
}
write (1, "two\n", 4);
.var0 -= 1;
}
exit (0);
}
EOF
. ./t.sh

View file

@ -1,20 +0,0 @@
#!/bin/sh
EXIT=0
OUTPUT="loop
loop
loop"
cat > t.r <<EOF
exit@syscall(1);
main();
main@global(128,128) {
.var0 = 0;
.var4 = &.var8;
.var8 = "helloworld";
while (*.var4:1) {
.var4 += 1;
.var0 += 1;
}
exit (.var0);
}
EOF
. ./t.sh

View file

@ -1,53 +0,0 @@
# test suite tool for r_egg #
DEBUG=
#DEBUG=gdb --args
#DEBUG=valgrind
case "$1" in
-h)
echo "Usage: $0 [-opt]"
echo " -r : show source (.r)"
echo " -s : show code (assembly)"
echo " -b : show bytes (binary)"
echo " -d : disassebly (code)"
echo " -x : execute"
echo " -t : create 't' program"
;;
-t)
rz_gg -FO t.r
exit
;;
-d)
rz_asm -d `rz_gg t.r`
;;
-b)
rz_gg t.r
;;
-r)
cat t.r
;;
-x)
rz_gg -FO t.r
./t
;;
-s)
rz_gg -s t.r > fail-t-$0.s
cat fail-t-$0.s
cp t fail-t-$0
;;
*)
eval ${DEBUG} rz_gg -FO t.r
rz_run '' program=./t timeout=1 > t.o
if [ $? = "${EXIT}" -a "`cat t.o`" = "${OUTPUT}" ]; then
out=SUCCESS
rm -f fail-t-$0*
else
out=FAIL
rz_gg -s t.r 2>&1 > fail-t-$0.s
cp -f t fail-t-$0
cp -f t.r fail-t-$0.r
fi
echo "Testing $0.. $out"
;;
esac
rm -f t.r t.o
exit 0

View file

@ -1,61 +0,0 @@
// SPDX-FileCopyrightText: 2011-2012 pancake <pancake@nopcode.org>
// SPDX-License-Identifier: LGPL-3.0-only
#include <rz_egg.h>
#include <getopt.h>
static int usage(void) {
eprintf("./test [-a x86|arm] [-b 32|64] hi.r\n");
return 1;
}
int main(int argc, char **argv) {
const char *arch = "x86";
int bits = 32;
int c, i;
RzBuffer *b;
RzEgg *egg = rz_egg_new();
while ((c = getopt(argc, argv, "ha:b:")) != -1) {
switch (c) {
case 'a':
arch = optarg;
break;
case 'b':
bits = atoi(optarg);
break;
case 'h':
return usage();
}
}
if (optind == argc)
return usage();
rz_egg_setup(egg, arch, bits, 0, 0);
rz_egg_include(egg, argv[optind], 0);
rz_egg_compile(egg);
rz_egg_assemble(egg);
// rz_egg_setup (egg, "x86", 32, 0, 0);
// rz_egg_setup (egg, "x86", 64, 0, 0);
// printf ("src (%s)\n", rz_egg_get_source (egg));
printf("asm (%s)\n", rz_egg_get_assembly(egg));
b = rz_egg_get_bin(egg);
if (b == NULL) {
eprintf("Cannot assemble egg :(\n");
} else {
printf("BUFFER : %d\n", b->length);
for (i = 0; i < b->length; i++) {
printf("%02x", b->buf[i]);
}
printf("\n");
}
#if VALA
var egg = new RzEgg();
egg.include("test.r", 'r');
egg.compile();
#endif
rz_egg_free(egg);
return 0;
}

View file

@ -1,14 +0,0 @@
/* test calling a function */
call@global(128) {
.arg0
}
main@global(128) {
#// printf ("Hello World\n");
: nop
: mov eax, 1
: push eax
: int 0x80
call(1,2);
}

View file

@ -1,7 +0,0 @@
include ../../config.mk
OBJS=parse.o
BIN=parse
BINDEPS=rz_parse rz_util rz_flags rz_cons rz_analysis rz_reg rz_syscall rz_db
include ../../rules.mk

View file

@ -1,38 +0,0 @@
#include "rz_parse.h"
int main(int argc, char **argv) {
char str[128];
struct rz_parse_t *p;
p = rz_parse_new();
if (argc == 1) {
printf("List: \n");
rz_parse_list(p);
printf("Using plugin: \n");
rz_parse_use(p, "x86.pseudo");
str[0] = '\0';
rz_parse_assemble(p, str, strdup("eax=1;int 0x80"));
printf("--output--\n");
printf("%s\n", str);
printf("\n----\n\n");
rz_parse_use(p, "att2intel");
rz_parse_pseudocode(p, "movl $3, %eax", str); //, sizeof (str));
// rz_parse_filter (p, NULL, "movl $3, %eax", str, sizeof (str));
printf("%s\n", str);
} else {
char buf[128];
rz_parse_use(p, "att2intel");
while (!feof(stdin)) {
buf[0] = 0;
fgets(buf, sizeof(buf) - 1, stdin);
if (feof(stdin))
break;
buf[strlen(buf) - 1] = 0;
if (*buf) {
rz_parse_pseudocode(p, buf, str); //, sizeof (str));
printf("%s\n", str);
}
}
}
return 0;
}

View file

@ -1,5 +0,0 @@
OBJ=test.o
BIN=regtest
BINDEPS=rz_reg rz_util
include ../../rules.mk

View file

@ -1,27 +0,0 @@
#include <sys/syscall.h>
#include <stdio.h>
#include <unistd.h>
#include <sys/ptrace.h>
#include <sys/user.h>
#define offsetof(TYPE, MEMBER) ((unsigned long)&((TYPE *)0)->MEMBER)
int main() {
struct user_regs_struct regs;
printf("gpr\teip .32 %d 0\n", offsetof(struct user_regs_struct, eip));
printf("gpr\toeax .32 %d 0\n", offsetof(struct user_regs_struct, orig_eax));
printf("gpr\teax .32 %d 0\n", offsetof(struct user_regs_struct, eax));
printf("gpr\tebx .32 %d 0\n", offsetof(struct user_regs_struct, ebx));
printf("gpr\tecx .32 %d 0\n", offsetof(struct user_regs_struct, ecx));
printf("gpr\tedx .32 %d 0\n", offsetof(struct user_regs_struct, edx));
printf("gpr\tesp .32 %d 0\n", offsetof(struct user_regs_struct, esp));
printf("gpr\tebp .32 %d 0\n", offsetof(struct user_regs_struct, ebp));
printf("gpr\tesi .32 %d 0\n", offsetof(struct user_regs_struct, esi));
printf("gpr\tedi .32 %d 0\n", offsetof(struct user_regs_struct, edi));
printf("gpr\txfs .32 %d 0\n", offsetof(struct user_regs_struct, xfs));
printf("gpr\txgs .32 %d 0\n", offsetof(struct user_regs_struct, xgs));
printf("gpr\txcs .32 %d 0\n", offsetof(struct user_regs_struct, xcs));
printf("gpr\txss .32 %d 0\n", offsetof(struct user_regs_struct, xcs));
printf("gpr\teflags .32 %d 0\n", offsetof(struct user_regs_struct, eflags));
return 0;
}

View file

@ -1,85 +0,0 @@
#include <rz_reg.h>
#include <rz_util.h>
#include <rz_print.h>
const char *reg_profile =
"gpr eax .32 0 0\n"
"gpr ecx .32 4 0\n"
"gpr edx .32 8 0\n"
"gpr ebx .32 12 0\n"
"gpr esp .32 16 0\n"
"gpr ebp .32 20 0\n"
"gpr esi .32 24 0\n"
"gpr edi .32 28 0\n"
"gpr eip .32 32 0\n"
"gpr eflags .32 36 0\n"
#if 1
"seg cs .32 40 0\n"
"seg ss .32 44 0\n"
"seg ds .32 48 0\n"
"seg es .32 52 0\n"
"seg fs .32 56 0\n"
"seg gs .32 60 0\n"
#endif
#if 1
"gpr st0 .80 64 0\n"
"gpr st1 .80 74 0\n"
"gpr st2 .80 84 0\n"
"gpr st3 .80 94 0\n"
"gpr st4 .80 104 0\n"
"gpr st5 .80 114 0\n"
"gpr st6 .80 124 0\n"
"gpr st7 .80 134 0\n"
#endif
"gpr fctrl .32 144 0\n"
"gpr fstat .32 148 0\n"
"gpr ftag .32 152 0\n"
"gpr fiseg .32 156 0\n"
"gpr fioff .32 160 0\n"
"gpr foseg .32 164 0\n"
"gpr fooff .32 168 0\n"
"gpr fop .32 172 0\n"
#if 1
"gpr xmm0 .128 176 0\n"
"gpr xmm1 .128 192 0\n"
"gpr xmm2 .128 208 0\n"
"gpr xmm3 .128 224 0\n"
"gpr xmm4 .128 240 0\n"
"gpr xmm5 .128 256 0\n"
"gpr xmm6 .128 272 0\n"
"gpr xmm7 .128 288 0\n"
#endif
"gpr mxcsr .32 304 0\n";
static void dumpregs(RzReg *reg) {
int sz;
ut8 *buf = rz_reg_get_bytes(reg, RZ_REG_TYPE_GPR, &sz);
rz_print_hexdump(NULL, 0, buf, sz, 16, 16);
free(buf);
}
int main() {
int sz, type = RZ_REG_TYPE_GPR;
RzReg *reg = rz_reg_new();
RzReg *reg2 = rz_reg_new();
rz_reg_set_profile_string(reg, reg_profile);
rz_reg_set_profile_string(reg2, reg_profile);
rz_reg_setv(reg2, "ecx", 0xdeadbeef);
RzRegItem *current = NULL;
free(rz_reg_get_bytes(reg, RZ_REG_TYPE_GPR, &sz));
eprintf("arena: %d\n", sz);
if (sz != 308) {
eprintf("ARENA SIZE IS WRONG\n");
}
dumpregs(reg);
dumpregs(reg2);
for (;;) {
current = rz_reg_next_diff(reg, type,
reg2->regset[type].arena->bytes,
sz, current, 32);
if (!current)
break;
eprintf("Reg: <%s>\n", current->name);
}
return 0;
}

View file

@ -1,90 +0,0 @@
#include <rz_reg.h>
void show_regs(struct rz_reg_t *reg, int bitsize) {
RzList *reglist;
RzListIter *iter;
RzRegItem *ri;
printf("%d bit registers:\n", bitsize);
reglist = rz_reg_get_list(reg, bitsize == 1 ? RZ_REG_TYPE_FLG : RZ_REG_TYPE_GPR);
rz_list_foreach (reglist, iter, ri) {
if (ri->size == bitsize)
printf(" - %s : 0x%08" PFMT64x "\n", ri->name, rz_reg_get_value(reg, ri));
}
}
void print_eflags_bits(RzReg *reg) {
int a;
a = rz_reg_getv(reg, "cf");
printf(" c:%d", a);
printf(" 1");
a = rz_reg_getv(reg, "pf");
printf(" p:%d", a);
printf(" 0");
a = rz_reg_getv(reg, "af");
printf(" a:%d", a);
printf(" 0");
a = rz_reg_getv(reg, "zf");
printf(" z:%d", a);
a = rz_reg_getv(reg, "sf");
printf(" s:%d", a);
a = rz_reg_getv(reg, "tf");
printf(" t:%d", a);
a = rz_reg_getv(reg, "if");
printf(" i:%d", a);
a = rz_reg_getv(reg, "df");
printf(" d:%d", a);
a = rz_reg_getv(reg, "of");
printf(" o:%d", a);
printf("\n");
}
int main() {
int i;
int foo[128];
const char *type;
struct rz_reg_t *reg;
for (i = 0; i < 128; i++)
foo[i] = i;
reg = rz_reg_new();
rz_reg_set_profile(reg, "./test.regs");
rz_reg_read_regs(reg, (const ut8 *)foo, sizeof(foo));
{
ut64 a;
RzRegItem *item;
item = rz_reg_get(reg, "eflags", RZ_REG_TYPE_GPR);
rz_reg_set_value(reg, item, 0x00000346); // 0xffffffffffff);
a = rz_reg_get_value(reg, item);
eprintf("A32 = 0x%x\n", (int)a);
if ((int)a != -1) {
eprintf("1 FAIL\n");
}
print_eflags_bits(reg);
item = rz_reg_get(reg, "zf", RZ_REG_TYPE_GPR);
a = rz_reg_get_value(reg, item);
eprintf("A = %d\n", (int)a);
if (a != 1) {
eprintf("2 FAIL\n");
}
item = rz_reg_get(reg, "zf", RZ_REG_TYPE_GPR);
rz_reg_set_value(reg, item, 1);
a = rz_reg_get_value(reg, item);
eprintf("A = %d\n", (int)a);
if (a != 1) {
eprintf("3 FAIL\n");
}
rz_reg_set_value(reg, item, 0);
a = rz_reg_get_value(reg, item);
eprintf("A = %d\n", (int)a);
if (a != 0) {
eprintf("4 FAIL\n");
}
}
show_regs(reg, 1); // 32);
exit(0);
return 0;
}

View file

@ -1,57 +0,0 @@
=PC eip
=SP esp
=BP ebp
=A0 eax
=A1 ebx
=A2 ecx
=A3 edi
=ZF zf
=SF sf
=OF of
=CF cf
gpr eip .32 128 0
gpr ip .16 128 0
gpr oeax .32 120 0
gpr eax .32 80 0
gpr ax .16 80 0
gpr ah .8 80 0
gpr al .8 81 0
gpr ebx .32 40 0
gpr bx .16 40 0
gpr bh .8 40 0
gpr bl .8 41 0
gpr ecx .32 88 0
gpr cx .16 88 0
gpr ch .8 88 0
gpr cl .8 89 0
gpr edx .32 96 0
gpr dx .16 96 0
gpr dh .8 96 0
gpr dl .8 97 0
gpr esp .32 152 0
gpr sp .16 152 0
gpr ebp .32 32 0
gpr bp .16 32 0
gpr esi .32 104 0
gpr si .16 104 0
gpr edi .32 112 0
gpr di .16 112 0
seg xfs .32 200 0
seg xgs .32 208 0
seg xcs .32 136 0
seg cs .16 136 0
seg xss .32 160 0
gpr eflags .32 144 0 c1p.a.zstido.n.rv
gpr flags .16 144 0
gpr cf .1 .1152 0 carry
gpr pf .1 .1154 0 parity
gpr af .1 .1156 0 adjust
gpr zf .1 .1158 0 zero
gpr sf .1 .1159 0 sign
gpr tf .1 .1160 0 trap
gpr if .1 .1161 0 interrupt
gpr df .1 .1162 0 direction
gpr of .1 .1163 0 overflow
drx dr0 .32 0 0
drx dr1 .32 4 0
drx dr2 .32 8 0

View file

@ -1,37 +0,0 @@
R=../rz_gg
all:
${MAKE} hello
#${MAKE} foo
foo:
rz_bin -c mach0:`rz_asm -a x86.nz -f hello.s` a.out
bla:
${MAKE} hello
hello:
rm -f a.out
$R -s hello.r -o hello.s
cat hello.s
$R -x hello.r
$R -F -o a.out hello.r
#-./a.out ; RET=$$? ; if [ $$RET = 0 ]; then echo It Works ; else echo Oops.. Fail ; fi
hi:
rm -f a.out
$R -s hi.r
$R -F -o a.out hi.r
-./a.out ; RET=$$? ; if [ $$RET = 0 ]; then echo It Works ; else echo Oops.. Fail ; fi
customsyscall:
rm -f a.out
$R -s customsyscall.r
$R -F -o a.out customsyscall.r
-./a.out ; RET=$$? ; if [ $$RET = 2 ]; then echo It Works ; else echo Oops.. Fail ; fi
exithello:
rm -f a.out
$R -s exithello.r
$R -F -o a.out exithello.r
-./a.out ; RET=$$? ; if [ $$RET = 2 ]; then echo It Works ; else echo Oops.. Fail ; fi

View file

@ -1,11 +0,0 @@
/* Hello World */
exit@syscall(1);
@syscall() {
: int3
}
main@global() {
exit(2);
}

View file

@ -1,7 +0,0 @@
/* Hello World */
exit@syscall(1);
main@global() {
exit(2);
}

View file

@ -1,15 +0,0 @@
/* hello world in r_egg */
write@syscall(4);
exit@syscall(1);
main@global(128) {
.var0 = 4;
.var4 = "Hello World\n";
.var40 = "LOL\n";
while (.var0 > 0) {
write (1, .var4, 12);
// if (.var0 == 2) { write (1, .var20, 4); }
.var0 -= 2;
}
exit (0);
}

View file

@ -1,9 +0,0 @@
/* hello world in r_egg */
write@syscall(4);
exit@syscall(1);
main@global(128) {
.var0 = "hi!\n";
write(1,.var0, 4);
exit(0);
}

View file

@ -1,8 +0,0 @@
BINDEPS=rz_search rz_util
BINS=test${EXT_EXE} test-str${EXT_EXE} test-regexp${EXT_EXE}
include ../../rules.mk
myclean:
rm -f test${EXT_EXE} test.o test-str${EXT_EXE} test-str.o test-regexp${EXT_EXE} test-regexp.o

View file

@ -1,21 +0,0 @@
#include <rz_search.h>
static const ut8 *buffer = (const ut8 *)"ELF,e,e,e,ELF--fooo";
static int hit(RzSearchKeyword *kw, void *user, ut64 addr) {
const ut8 *buf = (const ut8 *)user;
printf("HIT %d AT %" PFMT64d " (%s)\n", kw->count, addr, buf + addr);
return 1;
}
int main(int argc, char **argv) {
RzSearch *rs = rz_search_new(RZ_SEARCH_REGEXP);
rz_search_set_callback(rs, &hit, (void *)buffer);
rz_search_kw_add(rs, /* search for /E.F/i */
rz_search_keyword_new_str("E.F", "i", NULL, 0));
rz_search_begin(rs);
printf("Searching strings in '%s'\n", buffer);
rz_search_update_i(rs, 0LL, buffer, strlen((const char *)buffer));
rs = rz_search_free(rs);
return 0;
}

View file

@ -1,22 +0,0 @@
#include <rz_search.h>
const ut8 *buffer = (const ut8 *)"hellowor\x01\x02ldlibis\x01\x02niceandcoolib2loblubljb";
int hit(RzSearchKeyword *kw, void *user, ut64 addr) {
const ut8 *buf = (const ut8 *)user;
printf("HIT %d AT %" PFMT64d " (%s)\n", kw->count, addr, buf + addr);
return 1;
}
int main(int argc, char **argv) {
struct rz_search_t *rs;
rs = rz_search_new(RZ_SEARCH_STRING);
rz_search_set_callback(rs, &hit, (void *)buffer);
rz_search_begin(rs);
printf("Searching strings in '%s'\n", buffer);
rz_search_update_i(rs, 0LL, buffer, strlen((const char *)buffer));
rs = rz_search_free(rs);
return 0;
}

View file

@ -1,48 +0,0 @@
#include <rz_search.h>
// static char *buffer = "helloworldlibisniceandcoolib2loblubljb";
char *buffer = "helloworldlibisnlizbiceandcoolib2loblubljb";
static int hit(RzSearchKeyword *kw, void *user, ut64 addr) {
// const ut8 *buf = (ut8*)user;
printf("HIT %d AT %" PFMT64d " (%s)\n", kw->count, addr, buffer + addr);
return 1;
}
int main(int argc, char **argv) {
RzSearch *rs = rz_search_new(RZ_SEARCH_KEYWORD);
rz_search_kw_add(rs,
rz_search_keyword_new_str("lib", "", NULL, 0));
rz_search_set_callback(rs, &hit, buffer);
rz_search_set_distance(rs, 0);
printf("Distance: %d\n", rs->distance);
rz_search_begin(rs);
printf("Searching for '%s' in '%s'\n", "lib", buffer);
rz_search_update_i(rs, 0LL, (ut8 *)buffer, strlen(buffer));
printf("--\n");
rz_search_set_distance(rs, 4);
printf("Distance: %d\n", rs->distance);
rz_search_begin(rs);
printf("Searching for '%s' in '%s'\n", "lib", buffer);
rz_search_update_i(rs, 0LL, (ut8 *)buffer, strlen(buffer));
rs = rz_search_free(rs);
printf("--\n");
/* test binmask */
rs = rz_search_new(RZ_SEARCH_KEYWORD);
{
RzSearchKeyword *kw = rz_search_keyword_new_str("lib", "ff00ff", NULL, 0);
printf("Keyword (%02x %02x %02x)\n", kw->bin_binmask[0],
kw->bin_binmask[1], kw->bin_binmask[2]);
rz_search_kw_add(rs, kw);
}
rz_search_set_callback(rs, &hit, buffer);
rz_search_begin(rs);
printf("Searching for '%s' with binmask 'ff00ff' in '%s'\n", "lib", buffer);
rz_search_update_i(rs, 0LL, (ut8 *)buffer, strlen(buffer));
rs = rz_search_free(rs);
return 0;
}

View file

@ -1,5 +0,0 @@
OBJ=serverssl.o
BIN=serverssl
BINDEPS=rz_socket
include ../../rules.mk

View file

@ -1,14 +0,0 @@
#include <rz_socket.h>
int main() {
int ret;
char buf[1024];
RzSocket *s = rz_socket_new(false);
if (rz_socket_connect(s, "localhost", "9090", 0, 10)) {
do {
ret = rz_socket_gets(s, buf, sizeof(buf));
eprintf("((%s))\n", buf);
} while (ret >= 0);
}
rz_socket_free(s);
}

View file

@ -1,31 +0,0 @@
#include <rz_socket.h>
#define MAX_LINE 2048
#define PORT "4433"
int main(int argc, char **argv) {
char buf[MAX_LINE + 1];
RzSocket *s, *cli;
if (argc < 2) {
eprintf("Use %s <cert>\n", argv[0]);
return 1;
}
s = rz_socket_new(true);
if (!rz_socket_listen(s, PORT, argv[1])) {
eprintf("Error, cant listen at port: %s\n", PORT);
return 1;
}
while (1) {
if (!(cli = rz_socket_accept(s)))
break;
rz_socket_read(cli, (unsigned char *)buf, 9);
strcpy(buf, "HTTP/1.0 200 OK\r\n"
"Server: EKRServer\r\n\r\n"
"Server test page\r\n");
rz_socket_write(cli, buf, strlen(buf));
rz_socket_flush(cli);
rz_socket_free(cli);
}
rz_socket_free(s);
return 0;
}

View file

@ -1,27 +0,0 @@
#include <rz_socket.h>
int main() {
int ret;
struct rz_socket_proc_t *sp;
char buf[256];
char *const args[4] = { "/usr/bin/telnet", "localhost", "9999", 0 };
sp = rz_socket_proc_open(args);
// ret = rz_socket_proc_read(sp, buf, 128);
rz_socket_proc_printf(sp, "GET / HTTP/1.1\r\n\r\n");
printf("Waiting...\n");
for (;;) {
if (!rz_socket_proc_ready(sp, 0, 0))
break;
ret = rz_socket_proc_gets(sp, buf, 128);
printf("RET=%d\n", ret);
if (ret < 0)
break;
else if (ret > 0)
printf("%d=\"%s\"\n", ret, buf);
else
printf("--\n");
}
rz_socket_proc_close(sp);
return 0;
}

View file

@ -1,24 +0,0 @@
#include <rz_socket.h>
int main() {
int ret;
struct rz_socket_proc_t *sp;
char buf[256];
char *const args[3] = { "/bin/ls", "-l", 0 };
sp = rz_socket_proc_open(args);
for (;;) {
if (rz_socket_proc_ready(sp, 0, 0) < 0)
break;
ret = rz_socket_proc_gets(sp, buf, 128);
if (ret > 0)
printf("%d=\"%s\"\n", ret, buf);
else {
printf("%d=\n", ret);
break;
}
}
rz_socket_proc_close(sp);
return 0;
}

View file

@ -1,25 +0,0 @@
#include <rz_socket.h>
#define MAX_LINE 2048
//#define SERVER "www.openssl.org"
#define PORT "4433"
#define SERVER "127.0.0.1"
int main(int argc, char **argv) {
ut8 buf[MAX_LINE + 1];
memset(buf, 0, MAX_LINE + 1);
RzSocket *s = rz_socket_new(true);
if (s == NULL) {
fprintf(stderr, "Error, cannot create new socket \n");
return 1;
}
if (!rz_socket_connect_tcp(s, SERVER, PORT)) {
fprintf(stderr, "Error, cannot connect to " SERVER "\n");
return 1;
}
printf("%i\n", rz_socket_puts(s, "GET /\r\n\r\n"));
while (rz_socket_read(s, buf, MAX_LINE) > 0)
printf("%s", buf);
rz_socket_free(s);
return 0;
}

View file

@ -1,6 +0,0 @@
OBJ=hello.o
BIN=hello
BINDEPS=rz_syscall rz_db rz_util
include ../../rules.mk
include ../../db/r.mk

View file

@ -1,21 +0,0 @@
#include <stdio.h>
#include "rz_syscall.h"
int main() {
int i, num = 3;
RzSyscall *ctx = rz_syscall_new();
rz_syscall_setup(ctx, "x86", "linux", 32);
printf("4 = %s\n", rz_syscall_get_i(ctx, 4, -1));
printf("write = %d\n", rz_syscall_get_num(ctx, "write"));
// if args = 0 { no args }
for (i = 1; i <= num; i++) {
const char *arg = rz_syscall_reg(ctx, i, num);
printf("%d %d: %s\n", i, num, arg);
}
rz_syscall_free(ctx);
return 0;
}

View file

@ -1,51 +0,0 @@
#!/usr/bin/env python
# Auto-generate rizin syscall profile for OpenBSD from syscall.h
# (c) Edd Barrett 2011
import copy
import sys
with open("/usr/include/sys/syscall.h", "r", encoding="utf8") as f:
rec = {"name": None, "args": None}
recs = {}
for line in f:
if line.startswith("/* syscall:"):
# extract syscall name
openq = line.find('"')
closeq = line.find('"', openq + 1)
rec["name"] = line[openq + 1 : closeq]
# extract number of args
args = line.find("args:")
args = args + len("args: ")
rec["args"] = line[args:].count('"') / 2
elif line.startswith("#define"):
if "SYS_MAXSYSCALL" in line:
continue
# extract syscall number
sp = line.split("\t")
callnum = sp[2].rstrip()
# check required info is there
for i in rec:
if i is None:
print("missing info for %s" % str(rec))
sys.exit(1)
recs[int(callnum)] = copy.copy(rec)
rec = {"name": None, "args": None}
with open("openbsd.c", "w", encoding="utf8") as out:
out.write('#include "r_syscall.h"\n\n/* syscall-openbsd */\n')
out.write("RSyscallItem syscalls_openbsd_x86[] = {\n")
keys = recs.keys()
for call in keys:
out.write(
' { "%s", 0x80, %d, %d },\n'
% (recs[call]["name"], call, recs[call]["args"])
)
out.write("};\n")

View file

@ -1,30 +0,0 @@
include ../../config.mk
BINDEPS=rz_util
LDFLAGS+=-lrz_util -L..
BINS=sparse
BINS+=array
BINS+=pool
BINS+=argv
BINS+=test_sys
BINS+=test_str
BINS+=test_file_slurp_hexpairs
BINS+=test_cmd_str
BINS+=test_tree
BINS+=test_graph
all: ${BINS}
${BINS}: $(addsuffix .o,$(BINS))
$(CC) $(LDFLAGS) -o $@ $@.o
myclean:
rm -f ${BINS} *.o
clean:: myclean
.PHONY: myclean clean all
include ../../rules.mk

View file

@ -1,24 +0,0 @@
#include <rz_util.h>
static void test(const char *str) {
int i, argc;
char **argv = rz_str_argv(str, &argc);
printf("[%s]\n", str);
for (i = 0; i < argc; i++)
printf(" - %s\n", argv[i]);
rz_str_argv_free(argv);
}
int main() {
char buf[256];
int len = rz_str_bits(buf, (const ut8 *)"012345", 7 * 8, NULL);
printf("%d: %s\n", len, buf);
test(" hello world ");
test("hello world");
test("hello \"world\"");
test("'hello world'");
test("/bin/ls -l 'food is pure bar' \"barra cow is low\"");
test("'hello' \"world\"");
return 0;
}

View file

@ -1,67 +0,0 @@
#include "../big.c"
/*
#include "../big-ssl.c"
#include "../big-gmp.c"
*/
void main() {
int a, b;
RzNumBig n1, n2, n3, zero;
rz_big_set_st(&n2, -2);
rz_big_set_str(&n3, "-3");
// rz_big_set_st (&n3, -3);
printf("n3last = %d\n", n3.last);
printf("%d %d\n", n3.dgts[0], n3.dgts[1]);
rz_big_mul(&n2, &n2, &n3);
rz_big_print(&n2);
printf("--\n");
rz_big_set_st(&n1, 2);
rz_big_set_st(&n2, 3);
rz_big_mul(&n1, &n1, &n2);
rz_big_print(&n1);
rz_big_set_st(&n3, 923459999);
rz_big_mul(&n1, &n2, &n3);
rz_big_mul(&n2, &n1, &n3);
rz_big_mul(&n1, &n2, &n3);
rz_big_print(&n1);
rz_big_set_st64(&n2, 9999923459999999);
rz_big_set_st64(&n3, 9999992345999999);
rz_big_mul(&n1, &n2, &n3);
rz_big_mul(&n2, &n1, &n3);
rz_big_mul(&n1, &n2, &n3);
rz_big_print(&n1);
while (scanf("%d %d\n", &a, &b) != EOF) {
printf("a = %d b = %d\n", a, b);
rz_big_set_st(&n1, a);
rz_big_set_st(&n2, b);
rz_big_add(&n3, &n1, &n2);
printf("addition -- ");
rz_big_print(&n3);
printf("rz_big_cmp a ? b = %d\n", rz_big_cmp(&n1, &n2));
rz_big_sub(&n3, &n1, &n2);
printf("subtraction -- ");
rz_big_print(&n3);
rz_big_mul(&n3, &n1, &n2);
printf("multiplication -- ");
rz_big_print(&n3);
rz_big_set_st(&zero, 0);
if (rz_big_cmp(&zero, &n2) == 0)
printf("division -- NaN \n");
else {
rz_big_div(&n3, &n1, &n2);
printf("division -- ");
rz_big_print(&n3);
}
printf("--------------------------\n");
}
}

View file

@ -1,12 +0,0 @@
#include <rz_util.h>
#define F "/etc/services"
int main() {
size_t len;
char *out = rz_file_slurp(F, &len);
rz_file_dump("a", out, (int)len);
system("md5 " F);
system("md5 a");
return 0;
}

View file

@ -1,5 +0,0 @@
BINDEPS=rz_util
BIN=test
OBJ=test.o
include ../../rules.mk

View file

@ -1,5 +0,0 @@
virum bonum quom laudabant, ita laudabant:
bonum agricolam bonumque colonum;
amplissime laudari existimabatur qui ita laudabatur.
mercatorem autem strenuum studiosumque rei quaerendae existimo,
verum, ut supra dixi, periculosum et calamitosum

View file

@ -1,4 +0,0 @@
virum bonum quom laudabant, ita laudabant:
bonum agricolam bonumque magisterum.
mercatorem autem strenuum studiosumque rei quaerendae existimo,
verum, ut supra dixi, periculosum et calamitosum

View file

@ -1,102 +0,0 @@
#include <rz_diff.h>
int cb(struct rz_diff_t *d, void *user, struct rz_diff_op_t *op) {
int i;
printf(" 0x%08" PFMT64x " ", op->a_off);
for (i = 0; i < op->a_len; i++)
printf("%02x", op->a_buf[i]);
printf(" => ");
for (i = 0; i < op->b_len; i++)
printf("%02x", op->b_buf[i]);
printf(" 0x%08" PFMT64x "\n", op->b_off);
return 1;
}
int test_equal() {
struct rz_diff_t *d;
char *bufa = "helloworld";
char *bufb = "heprswarld";
printf("Diffing '%s' vs '%s'\n", bufa, bufb);
d = rz_diff_new(0, 0);
rz_diff_set_delta(d, 0);
rz_diff_set_callback(d, &cb, NULL);
rz_diff_buffers(d, (ut8 *)bufa, strlen(bufa), (ut8 *)bufb, strlen((char *)bufb));
return 1;
}
int test_diff() {
struct rz_diff_t *d;
char *bufa = "hello";
char *bufb = "hellpworld";
printf("Truncated diffing '%s' vs '%s'\n", bufa, bufb);
d = rz_diff_new(0, 0);
rz_diff_set_delta(d, 0);
rz_diff_set_callback(d, &cb, NULL);
rz_diff_buffers(d, (ut8 *)bufa, strlen(bufa), (ut8 *)bufb, strlen(bufb));
return 1;
}
int test_delta() {
struct rz_diff_t *d;
char *bufa = "hello";
char *bufb = "heprpworld";
printf("Delta diffing '%s' vs '%s'\n", bufa, bufb);
d = rz_diff_new(0, 0);
rz_diff_set_delta(d, 1);
rz_diff_set_callback(d, &cb, NULL);
rz_diff_buffers(d, (ut8 *)bufa, strlen(bufa), (ut8 *)bufb, strlen(bufb));
return 1;
}
int test_distance() {
char *bufa = "hello";
char *bufb = "heprpworld";
ut32 distance = 0;
double similarity = 0;
printf("Similarity: '%s' vs '%s'\n", bufa, bufb);
rz_diff_buffers_distance(NULL, (ut8 *)bufa, strlen(bufa), (ut8 *)bufb, strlen(bufb),
&distance, &similarity);
printf("Levenshtein distance = %i\nSimilarity = %f\n",
distance, similarity);
return 1;
}
#if 0
int test_lines(char *file1, char *file2)
{
int ret;
char *b1, *b2;
int s1, s2;
b1 = rz_file_slurp(file1, &s1);
b2 = rz_file_slurp(file2, &s2);
if (b1==NULL || b2 == NULL) {
eprintf ("Cannot open %s or %s\n", file1, file2);
return 0;
}
ret = rz_diff_lines(file1, b1, s1, file2, b2, s2);
printf("Differences: %d\n", ret);
return ret;
}
#endif
int main() {
test_equal();
printf("--\n");
test_equal();
printf("--\n");
test_diff();
printf("--\n");
test_delta();
printf("--\n");
test_distance();
printf("--\n");
// test_lines("file1", "file2");
return 0;
}

View file

@ -1,12 +0,0 @@
7f45 4c46 0101 0100 0000 0000 0000 0000 #.ELF............
0200 0300 0100 0000 d09c 0408 3400 0000 #............4...
7c93 0100 0000 0000 3400 2000 0a00 2800 #|.......4. ...(.
1b00 1a00 0600 0000 3400 0000 3480 0408 #........4...4...
3480 0408 4001 0000 4001 0000 0500 0000 #4...@...@.......
0400 0000 0300 0000 7401 0000 7481 0408 #........t...t...
7481 0408 1300 0000 1300 0000 0400 0000 #t...............
0100 0000 0100 0000 0000 0000 0080 0408 #................
0080 0408 1c82 0100 1c82 0100 0500 0000 #................
0010 0000 0100 0000 f88e 0100 f81e 0608 #................
f81e 0608 b403 0000 e80f 0000 0600 0080 #................

View file

@ -1,16 +0,0 @@
#include <rz_util.h>
const char *buf[] = { "eax", "ebx", "ecx", NULL };
int main() {
struct rz_mem_pool_t *pool = rz_mem_pool_new(128, 0, 0);
void *foo = rz_mem_pool_alloc(pool);
eprintf("foo1 = %p\n", foo);
foo = rz_mem_pool_alloc(pool);
eprintf("foo1 = %p\n", foo);
printf("%d\n", rz_mem_count((const ut8 **)buf));
rz_mem_pool_free(pool);
return 0;
}

View file

@ -1,8 +0,0 @@
#include <rz_util.h>
int main() {
int out;
printf("%s\n", rz_sys_cmd_str("less", "hello world\nhow are you\n", &out));
printf("out=%d\n", out);
return 0;
}

View file

@ -1,15 +0,0 @@
#include <stdio.h>
#include <rz_util.h>
int main(int argc, char *argv[]) {
int i, size;
ut8 *ret = rz_file_slurp_hexpairs("hexpairs.txt", &size);
if (ret) {
for (i = 0; i < size; i++)
putchar(ret[i]);
} else
printf("Error processing the file.\n");
return 0;
}

View file

@ -1,147 +0,0 @@
#include <stdio.h>
#include "rz_util.h"
void check(const char *exp, const char *act, const char *desc) {
if (strcmp(exp, act) == 0)
printf("\x1b[34m[+][%s]\x1b[39;49m test passed\n", desc);
else
printf("\x1b[31m[-][%s]\x1b[39;49m test failed (actual = %s\x1b[39;49m, expected = %s\x1b[39;49m)\n", desc, act, exp);
}
void check_n(const char *exp, const char *act, int len, const char *desc) {
if (strncmp(exp, act, len) == 0)
printf("\x1b[34m[+][%s]\x1b[39;49m test passed\n", desc);
else
printf("\x1b[31m[-][%s]\x1b[39;49m test failed (actual = %s\x1b[39;49m, expected = %s\x1b[39;49m)\n", desc, act, exp);
}
void check_int(int exp, int act, const char *desc) {
if (exp == act)
printf("\x1b[34m[+][%s]\x1b[39;49m test passed\n", desc);
else
printf("\x1b[31m[-][%s]\x1b[39;49m test failed (actual = %d\x1b[39;49m, expected = %d\x1b[39;49m)\n", desc, act, exp);
}
void check_array(int *exp, int *act, int len, const char *desc) {
int i, err_found = 0;
for (i = 0; i < len; i++) {
if (exp[i] != act[i]) {
printf("\x1b[31m[-][%s]\x1b[39;49m test failed element %d (actual = %d\x1b[39;49m, expected = %d\x1b[39;49m)\n", desc, i, act[i], exp[i]);
err_found = 1;
}
}
if (!err_found)
printf("\x1b[34m[+][%s]\x1b[39;49m test passed\n", desc);
else
printf("\x1b[31m[-][%s]\x1b[39;49m test failed\n", desc);
}
int main(int argc, char *argv[]) {
char head[] = " a";
char tail[] = "a ";
char head_tail[] = " a ";
check("a", rz_str_trim_head(head), "trim head \" a\"");
check("a", rz_str_trim_tail(tail), "trim tail \"a \"");
check("a", rz_str_trim(head_tail), "trim head tail \" a \"");
char *crop =
"This is the first line\n"
"This is the second\n"
"\n"
"And this is the last\n";
char *crop_exp =
"is is the se\n"
"\n"
"d this is th\n";
check(crop_exp, rz_str_crop(crop, 2, 1, 14, 10), "crop text");
check("", rz_str_crop(NULL, 2, 1, 14, 10), "crop NULL");
char dst[256];
char src[] = "This is my text";
rz_str_ncpy(dst, src, 4);
check("This", dst, "rz_str_ncpy");
dst[0] = '\0';
rz_str_ncpy(dst, src, 100);
check("This is my text", dst, "rz_str_ncpy (n > src length)");
strcpy(dst, "This is a $mess < fin.txt");
rz_str_sanitize(dst);
check("This is a _hell _ fin.txt", dst, "rz_str_sanitize");
strcpy(dst, "\x1b[30mHel\x1b[28mlo");
check("lo", rz_str_ansi_chrn(dst, 4), "rz_str_ansi_chrn");
check_int(5, rz_str_ansi_len(dst), "rz_str_ansi_len 1");
strcpy(dst, "Hello");
check_int(5, rz_str_ansi_len(dst), "rz_str_ansi_len 2");
strcpy(dst, "\x1b[30m");
check_int(0, rz_str_ansi_len(dst), "rz_str_ansi_len 3");
strcpy(dst, "Hello");
check_int(5, rz_str_ansi_chop(dst, -1, 5), "rz_str_ansi_chop (normal string)");
check("Hello", dst, "rz_str_ansi_chop (normal string)(str)");
strcpy(dst, "Hello");
check_int(2, rz_str_ansi_chop(dst, -1, 2), "rz_str_ansi_chop 2 (normal string)");
check("He", dst, "rz_str_ansi_chop 2 (normal string)(str)");
strcpy(dst, "Hello");
check_int(0, rz_str_ansi_chop(dst, -1, 0), "rz_str_ansi_chop 3 (normal string)");
check("", dst, "rz_str_ansi_chop 3 (normal string)(str)");
strcpy(dst, "\x1b[30mHel\x1b[29mlo");
check_int(0, rz_str_ansi_chop(dst, -1, 0), "rz_str_ansi_chop 1");
check("", dst, "rz_str_ansi_chop 1 (str)");
strcpy(dst, "\x1b[30mHel\x1b[29mlo");
check_int(7, rz_str_ansi_chop(dst, -1, 2), "rz_str_ansi_chop 2");
check("\x1b[30mHe", dst, "rz_str_ansi_chop 2 (str)");
strcpy(dst, "\x1b[30mHel\x1b[29mlo");
check_int(8, rz_str_ansi_chop(dst, -1, 3), "rz_str_ansi_chop 3");
check("\x1b[30mHel", dst, "rz_str_ansi_chop 3 (str)");
char *orig;
int *cpos;
strcpy(dst, "Hello");
check_int(5, rz_str_ansi_filter(dst, NULL, NULL, -1), "rz_str_ansi_filter (normal string)");
check("Hello", dst, "rz_str_ansi_filter (normal string(str)");
strcpy(dst, "\x1b[30mHel\x1b[29mlo\x1b[28m");
check_int(5, rz_str_ansi_filter(dst, NULL, NULL, -1), "rz_str_ansi_filter");
check("Hello", dst, "rz_str_ansi_filter (str)");
strcpy(dst, "\x1b[30mHel\x1b[29mlo\x1b[28m");
check_int(3, rz_str_ansi_filter(dst, NULL, NULL, 8), "rz_str_ansi_filter (length)");
check_n("Hel", dst, 3, "rz_str_ansi_filter (length)(str)");
strcpy(dst, "\x1b[30mHel\x1b[29mlo\x1b[28m");
rz_str_ansi_filter(dst, &orig, NULL, -1);
check("\x1b[30mHel\x1b[29mlo\x1b[28m", orig, "rz_str_ansi_filter out orig");
strcpy(dst, "\x1b[30mHel\x1b[29mlo\x1b[28m");
int res = rz_str_ansi_filter(dst, NULL, &cpos, -1);
check_int(5, res, "rz_str_ansi_filter res");
int exp_cpos[] = { 5, 6, 7, 13, 14 };
check_array(exp_cpos, cpos, res, "rz_str_ansi_filter cpos");
char clean[256];
char *str = malloc(256);
strcpy(str, "\x1b[30mHell\x1b[32mo\nIt'\x1b[33ms a test\n");
strcpy(clean, "Hello\nIt's a test\n");
int thunk[] = { 5, 6, 7, 8, 14, 15, 16, 17, 18, 24, 25, 26, 27, 28, 29, 30, 31, 32 };
char *res_s = rz_str_replace_thunked(str, clean, thunk, 18, "est", "\x1b[31mest\x1b[39;49m", 1);
check("\x1b[30mHell\x1b[32mo\nIt'\x1b[33ms a t\x1b[31mest\x1b[39;49m\n", res_s, "rz_str_replace_thunked");
int l;
strcpy(str, "\x1b[30mMess\x1b[32mo\nIt'\x1b[33ms a mess\n");
l = rz_str_ansi_filter(str, &orig, &cpos, 0);
res_s = rz_str_replace_thunked(orig, str, cpos, l, "ell", "\x1b[31mell\x1b[39;49m", 1);
check("\x1b[30mH\x1b[31mell\x1b[39;49mo\nIt'\x1b[33ms an h\x1b[31mell\x1b[39;49m\n", res_s, "rz_str_ansi_filter + replace_thunked");
crop =
"\x1b[30mThis is the \x1b[34mfirst line\n"
"\x1b[32mThis \x1b[31mis the\x1b[39;49m second\n"
"\n"
"And this is the \x1b[32mlast\n";
crop_exp =
"\x1b[30m\x1b[34m\x1b[32mis \x1b[31mis the\x1b[39;49m se\n"
"\n"
"d this is th\n";
check(crop_exp, rz_str_ansi_crop(crop, 2, 1, 14, 10), "rz_str_ansi_crop");
return 0;
}

View file

@ -1,16 +0,0 @@
#include <stdio.h>
#include "rz_util.h"
int main(int argc, char *argv[]) {
int len = 0;
char *sterr;
char *output = rz_sys_cmd_str("find /etc", 0, &len);
int result = rz_sys_cmd_str_full("find /etc", 0, &output, &len, &sterr);
printf("RESULT: %d\n", result);
printf("STDOUT\n");
printf("%s", output);
printf("STDERR\n");
printf("%s", sterr);
printf("bytes in STDOUT: %d\n", len);
return 0;
}

View file

@ -1,53 +0,0 @@
#include <rz_th.h>
#include <rz_util.h>
int looper(struct rz_th_t *th) {
int i;
int *ctr = th->user;
for (i = 0; i < 9999; i++) {
if (th->breaked)
break;
(*ctr)++;
printf("%d loop %d\r", i, *ctr);
fflush(stdout);
#if __UNIX__
sleep(1);
#endif
}
return 0; // do not loop
}
int test1() {
int ctr = 0;
struct rz_th_t *th;
th = rz_th_new(&looper, &ctr, 0);
th = rz_th_new(&looper, &ctr, 0);
// th = rz_th_new (&looper, &ctr, 0);
#if __i386__ || __x86_64__
asm("int3");
#endif
// rz_th_start (th, true);
while (rz_th_wait_async(th)) {
printf("\nwaiting...\n");
fflush(stdout);
rz_sys_usleep(400);
// rz_th_break(th);
}
printf("\nfinished\n");
#if 0
rz_th_start(th, true);
sleep(1);
#endif
/* wait and free */
rz_th_wait(th);
rz_th_free(th);
printf("\nresult %d\n", ctr);
return 0;
}
int main() {
return test1();
}