Rizin
unix-like reverse engineering framework and cli tools
utils.c File Reference
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "utils.h"

Go to the source code of this file.

Functions

char * strcat_dup (char *s1, char *s2, st32 n_free)
 
char * get_hex_str (ut32 hex_num)
 

Variables

static char hex_str [] = "01234567890abcdef"
 

Function Documentation

◆ get_hex_str()

char* get_hex_str ( ut32  hex_num)

Definition at line 38 of file utils.c.

38  {
39  char aux[3];
40 
41  aux[2] = '\0';
42  aux[1] = hex_str[hex_num & 0xF];
43  aux[0] = hex_str[(hex_num >> 4) & 0xF];
44 
45  return strdup(aux);
46 }
static char hex_str[]
Definition: utils.c:9
return strdup("=SP r13\n" "=LR r14\n" "=PC r15\n" "=A0 r0\n" "=A1 r1\n" "=A2 r2\n" "=A3 r3\n" "=ZF zf\n" "=SF nf\n" "=OF vf\n" "=CF cf\n" "=SN or0\n" "gpr lr .32 56 0\n" "gpr pc .32 60 0\n" "gpr cpsr .32 64 0 ____tfiae_________________qvczn\n" "gpr or0 .32 68 0\n" "gpr tf .1 64.5 0 thumb\n" "gpr ef .1 64.9 0 endian\n" "gpr jf .1 64.24 0 java\n" "gpr qf .1 64.27 0 sticky_overflow\n" "gpr vf .1 64.28 0 overflow\n" "gpr cf .1 64.29 0 carry\n" "gpr zf .1 64.30 0 zero\n" "gpr nf .1 64.31 0 negative\n" "gpr itc .4 64.10 0 if_then_count\n" "gpr gef .4 64.16 0 great_or_equal\n" "gpr r0 .32 0 0\n" "gpr r1 .32 4 0\n" "gpr r2 .32 8 0\n" "gpr r3 .32 12 0\n" "gpr r4 .32 16 0\n" "gpr r5 .32 20 0\n" "gpr r6 .32 24 0\n" "gpr r7 .32 28 0\n" "gpr r8 .32 32 0\n" "gpr r9 .32 36 0\n" "gpr r10 .32 40 0\n" "gpr r11 .32 44 0\n" "gpr r12 .32 48 0\n" "gpr r13 .32 52 0\n" "gpr r14 .32 56 0\n" "gpr r15 .32 60 0\n" "gpr r16 .32 64 0\n" "gpr r17 .32 68 0\n")

References hex_str, and strdup().

Referenced by do_decode().

◆ strcat_dup()

char* strcat_dup ( char *  s1,
char *  s2,
st32  n_free 
)

Definition at line 12 of file utils.c.

12  {
13  char *res;
14  ut32 len_s1 = s1 ? strlen(s1) : 0;
15  ut32 len_s2 = s2 ? strlen(s2) : 0;
16 
17  if (!(res = (char *)malloc(len_s1 + len_s2 + 1))) {
18  return NULL;
19  }
20  if (len_s1 > 0) {
21  memcpy(res, s1, len_s1);
22  }
23  if (len_s2 > 0) {
24  memcpy(res + len_s1, s2, len_s2);
25  }
26  res[len_s1 + len_s2] = '\0';
27  if (n_free == 1) {
28  RZ_FREE(s1);
29  } else if (n_free == 2) {
30  RZ_FREE(s2);
31  } else if (n_free == 3) {
32  RZ_FREE(s1);
33  RZ_FREE(s2);
34  }
35  return res;
36 }
#define NULL
Definition: cris-opc.c:27
uint32_t ut32
memcpy(mem, inblock.get(), min(CONTAINING_RECORD(inblock.get(), MEMBLOCK, data) ->size, size))
void * malloc(size_t size)
Definition: malloc.c:123
#define RZ_FREE(x)
Definition: rz_types.h:369
#define s1(x)
Definition: sha256.c:60

References malloc(), memcpy(), NULL, RZ_FREE, s1, and s2.

Referenced by c55plus_decode(), decode_ins(), do_decode(), get_opers(), get_sim_reg(), and get_token_decoded().

Variable Documentation

◆ hex_str

char hex_str[] = "01234567890abcdef"
static

Definition at line 9 of file utils.c.

Referenced by get_hex_str(), rz_core_asm_back_disassemble(), test_invalids(), and test_valids().