[*] Binary protection state of dbus-daemon-launch-helper
Partial RELRO No Canary found NX disabled No PIE No RPATH No RUNPATH No Symbols
[*] Function printf tear down of dbus-daemon-launch-helper
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/unblob_extracted/firmware_extract/56048-12514271.gzip_extract/gzip.uncompressed_extract/5243916-15068666.gzip_extract/gzip.uncompressed_extract/usr/libexec/dbus-daemon-launch-helper @ 0x16318 */
| #include <stdint.h>
|
; (fcn) fcn.00016318 () | void fcn_00016318 (uint32_t arg1, int32_t arg2) {
| int32_t var_0h;
| int32_t var_8h;
| int32_t var_ch;
| int32_t var_18h;
| r0 = arg1;
| r1 = arg2;
0x00016318 push {r4, r5, r6, r7, r8, sb, sl, lr} |
0x0001631c ldr r8, [pc, 0x27c] | r8 = *(0x1659c);
0x00016320 cmp r0, 0 |
0x00016324 add r8, pc, r8 | r8 = pc + r8;
0x00016328 sub sp, sp, 0x18 |
0x0001632c mov r7, r1 | r7 = r1;
0x00016330 mov sb, r2 | sb = r2;
0x00016334 mov r5, r3 | r5 = r3;
| if (r0 == 0) {
0x00016338 beq 0x16490 | goto label_4;
| }
0x0001633c ldr r6, [r0] | r6 = *(r0);
0x00016340 mov r2, 0x1a4 | r2 = 0x1a4;
0x00016344 mov r1, 0xc1 | r1 = 0xc1;
0x00016348 mov r0, r6 | r0 = r6;
0x0001634c bl 0x12b18 | r0 = open64 ();
0x00016350 subs sl, r0, 0 | sl = r0 - 0;
| if (sl < r0) {
0x00016354 bge 0x16394 |
0x00016358 bl 0x1301c | r0 = errno_location ();
0x0001635c mov r4, r0 | r4 = r0;
0x00016360 ldr r0, [r0] | r0 = *(r0);
0x00016364 bl 0x12b54 | r0 = dbus_error_from_errno ();
0x00016368 mov r7, r0 | r7 = r0;
0x0001636c ldr r0, [r4] | r0 = *(r4);
0x00016370 bl 0x12ad0 | dbus_strerror ();
0x00016374 ldr r2, [pc, 0x228] | r2 = *(0x165a0);
0x00016378 mov r3, r6 | r3 = r6;
0x0001637c add r2, pc, r2 | r2 = pc + r2;
0x00016380 str r0, [sp] | *(sp) = r0;
| label_0:
0x00016384 mov r1, r7 | r1 = r7;
0x00016388 mov r0, r5 | r0 = r5;
0x0001638c bl 0x12e6c | dbus_set_error ();
0x00016390 b 0x163ec |
| } else {
0x00016394 ldr r1, [pc, 0x20c] | r1 = *(0x165a4);
0x00016398 add r1, pc, r1 | r1 = pc + r1;
0x0001639c bl 0x12ff8 | r0 = fdopen ();
0x000163a0 subs r4, r0, 0 | r4 = r0 - 0;
| if (r4 != r0) {
0x000163a4 bne 0x163f4 | goto label_5;
| }
0x000163a8 bl 0x1301c | r0 = errno_location ();
0x000163ac mov r6, r0 | r6 = r0;
0x000163b0 ldr r0, [r0] | r0 = *(r0);
0x000163b4 bl 0x12b54 | r0 = dbus_error_from_errno ();
0x000163b8 mov r7, r0 | r7 = r0;
0x000163bc ldr r0, [r6] | r0 = *(r6);
0x000163c0 bl 0x12ad0 | dbus_strerror ();
0x000163c4 ldr r2, [pc, 0x1e0] | r2 = *(0x165a8);
0x000163c8 mov r1, r7 | r1 = r7;
0x000163cc mov r3, sl | r3 = sl;
0x000163d0 add r2, pc, r2 | r2 = pc + r2;
0x000163d4 str r0, [sp] | *(sp) = r0;
0x000163d8 mov r0, r5 | r0 = r5;
0x000163dc bl 0x12e6c | dbus_set_error ();
0x000163e0 mov r1, r4 | r1 = r4;
0x000163e4 mov r0, sl | r0 = sl;
0x000163e8 bl 0x12fbc | dbus_close ();
| }
| do {
| label_1:
0x000163ec mov r0, 0 | r0 = 0;
0x000163f0 b 0x1649c | goto label_6;
| label_5:
0x000163f4 ldr r1, [pc, 0x1b4] | r1 = *(0x165ac);
0x000163f8 mov r2, sb | r2 = sb;
0x000163fc add r1, pc, r1 | r1 = pc + r1;
0x00016400 bl 0x12a70 | r0 = fprintf (r0, r1, r2)
0x00016404 cmp r0, 0 |
| if (r0 >= 0) {
0x00016408 bge 0x16450 | goto label_7;
| }
0x0001640c bl 0x1301c | r0 = errno_location ();
0x00016410 mov r7, r0 | r7 = r0;
0x00016414 ldr r0, [r0] | r0 = *(r0);
0x00016418 bl 0x12b54 | r0 = dbus_error_from_errno ();
0x0001641c mov r8, r0 | r8 = r0;
0x00016420 ldr r0, [r7] | r0 = *(r7);
0x00016424 bl 0x12ad0 | dbus_strerror ();
0x00016428 ldr r2, [pc, 0x184] | r2 = *(0x165b0);
0x0001642c mov r3, r6 | r3 = r6;
0x00016430 add r2, pc, r2 | r2 = pc + r2;
0x00016434 mov r1, r8 | r1 = r8;
0x00016438 str r0, [sp] | *(sp) = r0;
0x0001643c mov r0, r5 | r0 = r5;
0x00016440 bl 0x12e6c | dbus_set_error ();
0x00016444 mov r0, r4 | r0 = r4;
0x00016448 bl 0x12e90 | fclose (r0);
0x0001644c b 0x163ec |
| } while (1);
| label_7:
0x00016450 mov r0, r4 | r0 = r4;
0x00016454 bl 0x12e90 | r0 = fclose (r0);
0x00016458 cmn r0, 1 |
| if (r0 == 1) {
0x0001645c bne 0x16490 |
0x00016460 bl 0x1301c | r0 = errno_location ();
0x00016464 mov r4, r0 | r4 = r0;
0x00016468 ldr r0, [r0] | r0 = *(r0);
0x0001646c bl 0x12b54 | r0 = dbus_error_from_errno ();
0x00016470 mov r7, r0 | r7 = r0;
0x00016474 ldr r0, [r4] | r0 = *(r4);
0x00016478 bl 0x12ad0 | dbus_strerror ();
0x0001647c ldr r2, [pc, 0x134] | r2 = *(0x165b4);
0x00016480 mov r3, r6 | r3 = r6;
0x00016484 add r2, pc, r2 | r2 = pc + r2;
0x00016488 str r0, [sp] | *(sp) = r0;
0x0001648c b 0x16384 | goto label_0;
| }
| label_4:
0x00016490 cmp r7, 0 |
0x00016494 bne 0x164a4 |
| while (r0 == 0) {
| label_3:
0x00016498 mov r0, 1 | r0 = 1;
| label_6:
0x0001649c add sp, sp, 0x18 |
0x000164a0 pop {r4, r5, r6, r7, r8, sb, sl, pc} |
0x000164a4 mov r0, r7 | r0 = r7;
0x000164a8 bl 0x12ae8 | r0 = dbus_pipe_is_valid ();
0x000164ac cmp r0, 0 |
0x000164b0 beq 0x16498 |
| }
0x000164b4 add r4, sp, 8 | r4 += var_8h;
0x000164b8 mov r0, r4 | r0 = r4;
0x000164bc bl 0x12d34 | r0 = dbus_string_init ();
0x000164c0 cmp r0, 0 |
| if (r0 != 0) {
0x000164c4 bne 0x164e8 | goto label_8;
| }
0x000164c8 ldr r3, [pc, 0xec] | r3 = *(0x165b8);
0x000164cc ldr r1, [pc, 0xec] | r1 = *(0x165bc);
0x000164d0 ldr r3, [r8, r3] | r3 = *((r8 + r3));
0x000164d4 add r1, pc, r1 | r1 = pc + r1;
0x000164d8 ldr r2, [r3] | r2 = *(0x165b8);
| do {
0x000164dc mov r0, r5 | r0 = r5;
0x000164e0 bl 0x1295c | dbus_set_error_const ();
0x000164e4 b 0x163ec | goto label_1;
| label_8:
0x000164e8 mov r1, sb | r1 = sb;
0x000164ec mov r0, r4 | r0 = r4;
0x000164f0 bl 0x12e60 | r0 = dbus_string_append_int ();
0x000164f4 cmp r0, 0 |
| if (r0 != 0) {
0x000164f8 bne 0x1651c | goto label_9;
| }
| label_2:
0x000164fc mov r0, r4 | r0 = r4;
0x00016500 bl 0x12bb4 | dbus_string_free ();
0x00016504 ldr r3, [pc, 0xb0] | r3 = *(0x165b8);
0x00016508 ldr r1, [pc, 0xb4] | r1 = *(0x165c0);
0x0001650c ldr r3, [r8, r3] | r3 = *((r8 + r3));
0x00016510 add r1, pc, r1 | r1 = pc + r1;
0x00016514 ldr r2, [r3] | r2 = *(0x165b8);
0x00016518 b 0x164dc |
| } while (1);
| label_9:
0x0001651c ldr r1, [pc, 0xa4] | r1 = *(0x165c4);
0x00016520 mov r0, r4 | r0 = r4;
0x00016524 add r1, pc, r1 | r1 = pc + r1;
0x00016528 bl 0x12ef0 | r0 = dbus_string_append ();
0x0001652c cmp r0, 0 |
| if (r0 == 0) {
0x00016530 beq 0x164fc | goto label_2;
| }
0x00016534 ldr r6, [sp, 0xc] | r6 = var_ch;
0x00016538 str r5, [sp] | *(sp) = r5;
0x0001653c mov r3, r6 | r3 = r6;
0x00016540 mov r2, 0 | r2 = 0;
0x00016544 mov r1, r4 | r1 = r4;
0x00016548 mov r0, r7 | r0 = r7;
0x0001654c bl 0x12dac | r0 = dbus_pipe_write ();
0x00016550 cmp r6, r0 |
| if (r6 != r0) {
0x00016554 beq 0x16594 |
0x00016558 cmp r5, 0 |
| if (r5 != 0) {
0x0001655c beq 0x16588 |
0x00016560 mov r0, r5 | r0 = r5;
0x00016564 bl 0x12e84 | r0 = dbus_error_is_set ();
0x00016568 cmp r0, 0 |
| if (r0 != 0) {
0x0001656c bne 0x16588 | goto label_10;
| }
0x00016570 ldr r2, [pc, 0x54] | r2 = *(0x165c8);
0x00016574 ldr r1, [pc, 0x54] | r1 = *(0x165cc);
0x00016578 add r2, pc, r2 | r2 = pc + r2;
0x0001657c add r1, pc, r1 | r1 = pc + r1;
0x00016580 mov r0, r5 | r0 = r5;
0x00016584 bl 0x12e6c | dbus_set_error ();
| }
| label_10:
0x00016588 mov r0, r4 | r0 = r4;
0x0001658c bl 0x12bb4 | dbus_string_free ();
0x00016590 b 0x163ec | goto label_1;
| }
0x00016594 mov r0, r4 | r0 = r4;
0x00016598 bl 0x12bb4 | dbus_string_free ();
0x0001659c b 0x16498 | goto label_3;
| }
[*] Function printf used 2 times dbus-daemon-launch-helper