72 resource_value_t
value;
126 n = ((
n & 0x7f) << 8) | *
start++;
136 n = ((
n & 0x7f) << 8) | *
start++;
177 if ((
ut64)start16 > (
ut64)data + data_size -
sizeof(
ut32) -
n - 1) {
198 resource_value_t *
value) {
199 switch (
value->type) {
222 const ut8 *data,
ut64 data_size, start_element_t *element,
227 for (
i = 0;
i < *depth;
i++) {
234 if (*depth == 0 &&
namespace) {
235 char *
key = string_lookup(pool, data, data_size, namespace->prefix,
NULL);
236 char *
value = string_lookup(pool, data, data_size, namespace->uri,
NULL);
249 const char *
key = (
const char *)string_lookup(pool, data, data_size, key_index,
NULL);
250 bool resource_key =
false;
252 if (
key && *
key ==
'\0') {
255 if (resource_map && key_index < resource_map_length) {
257 if (resource >= 0x1010000) {
258 resource -= 0x1010000;
272 if (
rz_read_le32(&
a.namespace) != -1 &&
namespace && namespace->prefix != -1) {
273 char *ns = string_lookup(pool, data, data_size, namespace->prefix,
NULL);
305 namespace_t *
namespace =
NULL;
307 ut32 resource_map_length = 0;
312 if (data_size == 0) {
324 chunk_header_t
header = { 0 };
334 if (binary_size > data_size) {
342 while (
offset < binary_size) {
356 if (header_size == 0 || header_size > data_size) {
360 pool =
malloc(header_size);
377 if (header_size == 0 || header_size > data_size) {
381 start_element_t *element =
malloc(header_size);
392 resource_map, resource_map_length, &depth,
true)) {
416 resource_map, resource_map_length, &depth,
false)) {
424 namespace =
malloc(sizeof(*
namespace));
433 resource_map_length =
header.size;
434 if (resource_map_length > data_size -
offset) {
437 resource_map_length /=
sizeof(
ut32);
static char * resource_value(string_pool_t *pool, const ut8 *data, ut64 data_size, resource_value_t *value)
static bool dump_element(RzStrBuf *sb, string_pool_t *pool, namespace_t *namespace, const ut8 *data, ut64 data_size, start_element_t *element, const ut32 *resource_map, ut32 resource_map_length, st32 *depth, bool start)
RZ_PACKED(typedef struct { ut16 type;ut16 header_size;ut32 size;})
RZ_API RZ_OWN char * rz_axml_decode(RZ_NONNULL const ut8 *data, const ut64 data_size)
Decode a buffer with Android XML to regular XML string representation.
size_t ANDROID_ATTRIBUTE_NAMES_SIZE
const char * ANDROID_ATTRIBUTE_NAMES[]
static static sync static getppid static getegid const char static filename char static len const char char static bufsiz static mask static vfork const void static prot static getpgrp const char static swapflags static arg static fd static protocol static who struct sockaddr static addrlen static backlog struct timeval struct timezone static tz const struct iovec static count static mode const void const struct sockaddr static tolen const char static pathname void count
static static sync static getppid static getegid const char static filename char static len const char char static bufsiz static mask static vfork const void static prot static getpgrp const char static swapflags static arg static fd static protocol static who struct sockaddr static addrlen static backlog struct timeval struct timezone static tz const struct iovec static count static mode const void const struct sockaddr static tolen const char static pathname void static offset struct stat static buf void long static basep static whence static length const void static len static semflg const void static shmflg const struct timespec struct timespec static rem const char static group const void start
static static sync static getppid static getegid const char static filename char static len const char char static bufsiz static mask static vfork const void static prot static getpgrp const char static swapflags static arg static fd static protocol static who struct sockaddr static addrlen static backlog struct timeval struct timezone static tz const struct iovec static count static mode const void const struct sockaddr static tolen const char static pathname void static offset struct stat static buf void long static basep static whence static length const void static len key
static static sync static getppid static getegid const char static filename char static len const char char static bufsiz static mask static vfork const void static prot static getpgrp const char static swapflags static arg static fd static protocol static who struct sockaddr static addrlen static backlog struct timeval struct timezone static tz const struct iovec static count static mode const void const struct sockaddr static tolen const char static pathname void static offset struct stat static buf void long static basep static whence static length const void static len static semflg const void static shmflg const struct timespec struct timespec static rem const char static group const void length
unsigned short prefix[65536]
RZ_API void Ht_() free(HtName_(Ht) *ht)
memcpy(mem, inblock.get(), min(CONTAINING_RECORD(inblock.get(), MEMBLOCK, data) ->size, size))
void * malloc(size_t size)
void * calloc(size_t number, size_t size)
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")
#define header(is_bt, len_min, ret_op)
#define rz_return_val_if_fail(expr, val)
RZ_API st64 rz_buf_read_at(RZ_NONNULL RzBuffer *b, ut64 addr, RZ_NONNULL RZ_OUT ut8 *buf, ut64 len)
Read len bytes of the buffer at the specified address.
RZ_API RZ_OWN RzBuffer * rz_buf_new_with_pointers(const ut8 *bytes, ut64 len, bool steal)
Creates a new buffer with a bytes array.
RZ_API st64 rz_buf_fread_at(RZ_NONNULL RzBuffer *b, ut64 addr, RZ_NONNULL ut8 *buf, RZ_NONNULL const char *fmt, int n)
...
RZ_API void rz_buf_free(RzBuffer *b)
Free all internal data hold by the buffer and the buffer.
static ut16 rz_read_le16(const void *src)
static ut32 rz_read_le32(const void *src)
#define RZ_LOG_WARN(fmtstr,...)
#define RZ_LOG_ERROR(fmtstr,...)
RZ_API int rz_str_utf16_to_utf8(ut8 *dst, int len_dst, const ut8 *src, int len_src, bool little_endian)
RZ_API char * rz_str_newf(const char *fmt,...) RZ_PRINTF_CHECK(1
RZ_API char * rz_str_new(const char *str)
RZ_API RZ_OWN char * rz_strbuf_drain(RzStrBuf *sb)
RZ_API RzStrBuf * rz_strbuf_new(const char *s)
RZ_API void rz_strbuf_free(RzStrBuf *sb)
RZ_API bool rz_strbuf_appendf(RzStrBuf *sb, const char *fmt,...) RZ_PRINTF_CHECK(2
static struct sockaddr static addrlen static backlog const void static flags void flags
_W64 unsigned int uintptr_t
void error(const char *msg)
ut64(WINAPI *w32_GetEnabledXStateFeatures)()