[*] Binary protection state of dbus-cleanup-sockets
Partial RELRO No Canary found NX disabled No PIE No RPATH No RUNPATH No Symbols
[*] Function fprintf tear down of dbus-cleanup-sockets
; 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/bin/dbus-cleanup-sockets @ 0x10f18 */
| #include <stdint.h>
|
; (fcn) fcn.00010f18 () | void fcn_00010f18 (int32_t arg1) {
| int32_t var_4h;
| int32_t var_0h;
| r0 = arg1;
0x00010f18 push {r4, lr} |
0x00010f1c mov r4, r0 | r4 = r0;
0x00010f20 bl 0x10724 | r0 = malloc (r0);
0x00010f24 cmp r0, 0 |
0x00010f28 popne {r4, pc} |
0x00010f2c ldr r3, [pc, 0x14] | r3 = *(0x10f44);
0x00010f30 mov r2, r4 | r2 = r4;
0x00010f34 ldr r1, [pc, 0x10] | r1 = stderr;
0x00010f38 ldr r0, [r3] | r0 = *(0x10f44);
0x00010f3c bl 0x10754 | fprintf (r0, r1, r2, r3, r4)
0x00010f40 mov r0, 1 | r0 = 1;
0x00010f44 bl 0x107f0 | exit (r0);
| if (r0 != 0) {
0x00010f48 andeq r2, r2, r8, lsl 1 | r2 &= (r8 << 1);
| }
| if (r0 != 0) {
0x00010f4c andeq r0, r1, r0, ror 30 | r0 = r1 & (r0 >>> 30);
| }
| /* [11] -r-x section size 16 named .fini */
0x00010f50 mov ip, sp |
0x00010f54 push {r4, r5, r6, r7, r8, sb, sl, fp, ip, lr, pc} |
0x00010f58 sub fp, ip, 4 |
0x00010f5c ldmdb fp, {r4, r5, r6, r7, r8, sb, sl, fp, sp, pc} | __asm ("ldmdb fp, {r4, r5, r6, r7, r8, sb, sl, fp, sp, pc}");
| }
; 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/bin/dbus-cleanup-sockets @ 0x10844 */
| #include <stdint.h>
|
; (fcn) main () | int32_t main (int32_t argc, char ** argv) {
| int32_t var_0h;
| int32_t var_ch;
| int32_t var_10h;
| int32_t var_14h;
| void * addr;
| char * dest;
| int32_t var_88h;
| int32_t var_8ch;
| r0 = argc;
| r1 = argv;
| /* [10] -r-x section size 1804 named .text */
0x00010844 push {r4, r5, r6, r7, r8, sb, sl, fp, lr} |
0x00010848 ldr sl, [pc, 0x550] | sl = "__version";
0x0001084c ldr fp, [pc, 0x550] | fp = "__version";
0x00010850 mov r4, 0 | r4 = 0;
0x00010854 sub sp, sp, 0x8c |
0x00010858 mov r8, r0 | r8 = r0;
0x0001085c mov sb, r1 | sb = r1;
0x00010860 mov r7, r4 | r7 = r4;
0x00010864 mov r6, 1 | r6 = 1;
| label_1:
0x00010868 cmp r6, r8 |
| if (r6 >= r8) {
0x0001086c blt 0x108c4 |
0x00010870 ldr r3, [pc, 0x530] | r3 = *(0x10da4);
0x00010874 cmp r4, 0 |
0x00010878 mov r0, 8 | r0 = 8;
| if (r4 != 0) {
0x0001087c moveq r4, r3 | r4 = r3;
| }
0x00010880 bl 0x10f18 | r0 = fcn_00010f18 (r0);
0x00010884 mov r5, r0 | r5 = r0;
0x00010888 mov r0, r4 | r0 = r4;
0x0001088c bl 0x107cc | r0 = opendir ();
0x00010890 subs sb, r0, 0 | sb = r0 - 0;
| if (sb != r0) {
0x00010894 bne 0x10b2c | goto label_10;
| }
0x00010898 ldr r3, [pc, 0x50c] | r3 = "/tmp";
0x0001089c ldr r5, [r3] | r5 = "/tmp";
0x000108a0 bl 0x107e4 | r0 = errno_location ();
0x000108a4 ldr r0, [r0] | r0 = *(r0);
0x000108a8 bl 0x1070c | strerror (r0);
0x000108ac mov r2, r4 | r2 = r4;
0x000108b0 ldr r1, [pc, 0x4f8] | r1 = stderr;
0x000108b4 mov r3, r0 | r3 = r0;
0x000108b8 mov r0, r5 | r0 = r5;
0x000108bc bl 0x10754 | fprintf (r0, r1, r2, r3)
0x000108c0 b 0x1097c | goto label_3;
| }
0x000108c4 ldr r5, [sb, r6, lsl 2] | offset_0 = r6 << 2;
| r5 = *((sb + offset_0));
0x000108c8 ldr r1, [pc, 0x4e4] | r1 = "Failed_to_open_directory__s:__s";
0x000108cc mov r0, r5 | r0 = r5;
0x000108d0 bl 0x107d8 | r0 = strcmp (r0, "Failed_to_open_directory__s:__s");
0x000108d4 cmp r0, 0 |
| if (r0 != 0) {
0x000108d8 beq 0x10904 |
0x000108dc ldr r1, [pc, 0x4d4] | r1 = "__help";
0x000108e0 mov r0, r5 | r0 = r5;
0x000108e4 bl 0x107d8 | r0 = strcmp (r0, "__help");
0x000108e8 cmp r0, 0 |
| if (r0 == 0) {
0x000108ec beq 0x10904 | goto label_11;
| }
0x000108f0 ldr r1, [pc, 0x4c4] | r1 = *(0x10db8);
0x000108f4 mov r0, r5 | r0 = r5;
0x000108f8 bl 0x107d8 | r0 = strcmp (r0, r1);
0x000108fc cmp r0, 0 |
| if (r0 != 0) {
0x00010900 bne 0x1091c | goto label_12;
| }
| }
| label_11:
0x00010904 ldr r3, [pc, 0x4a0] | r3 = "/tmp";
0x00010908 ldr r0, [pc, 0x4b0] | r0 = "__";
0x0001090c ldr r1, [r3] | r1 = "/tmp";
0x00010910 bl 0x10808 | fputs ("__", "/tmp");
| do {
0x00010914 mov r0, 0 | r0 = 0;
| label_0:
0x00010918 bl 0x107f0 | exit (r0);
| label_12:
0x0001091c mov r1, sl | r1 = sl;
0x00010920 mov r0, r5 | r0 = r5;
0x00010924 bl 0x107d8 | r0 = strcmp (r0, r1);
0x00010928 subs r3, r0, 0 | r3 = r0 - 0;
| if (r3 != r0) {
0x0001092c bne 0x10944 | goto label_13;
| }
0x00010930 ldr r1, [pc, 0x48c] | r1 = "dbus-cleanup-sockets [--version] [--help] <socketdir>\n";
0x00010934 ldr r0, [pc, 0x48c] | r0 = "_.12.10";
0x00010938 str r3, [sp, 0xc] | var_ch = r3;
0x0001093c bl 0x106f4 | printf ("_.12.10", "dbus-cleanup-sockets [--version] [--help] <socketdir>\n", r2, r3);
0x00010940 b 0x10914 |
| } while (1);
| label_13:
0x00010944 cmp r7, 0 |
| if (r7 != 0) {
0x00010948 bne 0x10984 | goto label_14;
| }
0x0001094c mov r1, fp | r1 = fp;
0x00010950 mov r0, r5 | r0 = r5;
0x00010954 bl 0x107d8 | r0 = strcmp (r0, r1);
0x00010958 cmp r0, 0 |
| if (r0 == 0) {
0x0001095c beq 0x1099c | goto label_15;
| }
0x00010960 ldrb r3, [r5] | r3 = *(r5);
0x00010964 cmp r3, 0x2d |
| if (r3 != 0x2d) {
0x00010968 bne 0x109a0 | goto label_16;
| }
0x0001096c ldr r3, [pc, 0x438] | r3 = "/tmp";
0x00010970 ldr r0, [pc, 0x448] | r0 = "__";
0x00010974 ldr r1, [r3] | r1 = "/tmp";
| do {
0x00010978 bl 0x10808 | fputs ("__", "/tmp");
| label_3:
0x0001097c mov r0, 1 | r0 = 1;
0x00010980 b 0x10918 | goto label_0;
| label_14:
0x00010984 cmp r4, 0 |
| if (r4 == 0) {
0x00010988 beq 0x109a8 | goto label_17;
| }
0x0001098c ldr r3, [pc, 0x418] | r3 = "/tmp";
0x00010990 ldr r0, [pc, 0x434] | r0 = "D_Bus_Socket_Cleanup_Utility__sCopyright__C__2003_Red_Hat__Inc.Copyright__C__2002_Michael_MeeksThis_is_free_software__see_the_source_for_copying_conditions.There_is_NO_warranty__not_even_for_MERCHANTABILITY_or_FITNESS_FOR_A_PARTICULAR_PURPOSE.";
0x00010994 ldr r1, [r3] | r1 = "/tmp";
0x00010998 b 0x10978 |
| } while (1);
| label_15:
0x0001099c mov r7, 1 | r7 = 1;
| do {
| label_16:
0x000109a0 add r6, r6, 1 | r6++;
0x000109a4 b 0x10868 | goto label_1;
| label_17:
0x000109a8 mov r4, r5 | r4 = r5;
0x000109ac b 0x109a0 |
| } while (1);
| do {
0x000109b0 add r7, r0, 0x13 | r7 = r0 + 0x13;
0x000109b4 mov r2, 5 | r2 = 5;
0x000109b8 mov r1, sl | r1 = sl;
0x000109bc mov r0, r7 | r0 = r7;
0x000109c0 bl 0x10778 | r0 = strncmp (r0, r1, r2);
0x000109c4 subs r2, r0, 0 | r2 = r0 - 0;
0x000109c8 str r2, [sp, 0x10] | var_10h = r2;
| if (r2 == r0) {
0x000109cc bne 0x10a60 |
0x000109d0 mov r0, 0x10 | r0 = 0x10;
0x000109d4 bl 0x10f18 | r0 = fcn_00010f18 (r0);
0x000109d8 mov r6, r0 | r6 = r0;
0x000109dc mov r0, r4 | r0 = r4;
0x000109e0 bl 0x107fc | strlen (r0);
0x000109e4 str r0, [sp, 0xc] | var_ch = r0;
0x000109e8 mov r0, r7 | r0 = r7;
0x000109ec bl 0x107fc | strlen (r0);
0x000109f0 ldr r3, [sp, 0xc] | r3 = var_ch;
0x000109f4 add r0, r3, r0 | r0 = r3 + r0;
0x000109f8 add r0, r0, 2 | r0 += 2;
0x000109fc bl 0x10f18 | fcn_00010f18 (r0);
0x00010a00 mov r1, r4 | r1 = r4;
0x00010a04 str r0, [r6] | *(r6) = r0;
0x00010a08 bl 0x106e8 | strcpy (r0, r1);
0x00010a0c ldr r1, [pc, 0x3bc] | r1 = "dbus_cleanup_sockets_only_supports_a_single_directory_name";
0x00010a10 ldr r0, [r6] | r0 = *(r6);
0x00010a14 bl 0x10760 | strcat (r0, "dbus_cleanup_sockets_only_supports_a_single_directory_name");
0x00010a18 mov r1, r7 | r1 = r7;
0x00010a1c ldr r0, [r6] | r0 = *(r6);
0x00010a20 bl 0x10760 | strcat (r0, r1);
0x00010a24 ldr r2, [sp, 0x10] | r2 = var_10h;
0x00010a28 mvn r3, 0 | r3 = ~0;
0x00010a2c cmp r8, fp |
0x00010a30 str r3, [r6, 4] | *((r6 + 4)) = r3;
0x00010a34 str r2, [r6, 8] | *((r6 + 8)) = r2;
0x00010a38 str r2, [r6, 0xc] | *((r6 + 0xc)) = r2;
| if (r8 == fp) {
0x00010a3c bne 0x10a58 |
0x00010a40 lsl r8, r8, 1 | r8 <<= 1;
0x00010a44 lsls r7, r8, 2 | r7 = r8 << 2;
| if (r7 != r8) {
0x00010a48 bne 0x10b00 | goto label_18;
| }
0x00010a4c mov r0, r5 | r0 = r5;
0x00010a50 bl 0x10838 | free (r0);
0x00010a54 mov r5, r7 | r5 = r7;
| }
| label_2:
0x00010a58 str r6, [r5, fp, lsl 2] | offset_1 = fp << 2;
| *((r5 + offset_1)) = r6;
0x00010a5c add fp, fp, 1 |
| }
| label_4:
0x00010a60 mov r0, sb | r0 = sb;
0x00010a64 bl 0x107a8 | r0 = readdir64 ();
0x00010a68 cmp r0, 0 |
0x00010a6c bne 0x109b0 |
| } while (r0 != 0);
0x00010a70 mov r0, sb | r0 = sb;
0x00010a74 bl 0x10814 | closedir ();
0x00010a78 ldr sb, [pc, 0x354] | sb = *(0x00010dd4);
0x00010a7c ldr r8, [pc, 0x328] | r8 = "/tmp";
| label_5:
0x00010a80 mov r3, 0 | r3 = 0;
0x00010a84 str r3, [sp, 0x10] | var_10h = r3;
0x00010a88 str r3, [sp, 0xc] | var_ch = r3;
| label_6:
0x00010a8c ldr r3, [sp, 0xc] | r3 = var_ch;
0x00010a90 cmp fp, r3 |
| if (fp != r3) {
0x00010a94 bne 0x10b54 | goto label_19;
| }
0x00010a98 ldr r3, [sp, 0x10] | r3 = var_10h;
0x00010a9c cmp r3, 0 |
| if (r3 != 0) {
0x00010aa0 bne 0x10b3c | goto label_20;
| }
0x00010aa4 ldr r2, [pc, 0x328] | r2 = *(0x10dd0);
0x00010aa8 cmp r5, 0 |
0x00010aac ldr r3, [r2, 8] |
0x00010ab0 ldr r1, [r2] | r1 = *(0x10dd0);
0x00010ab4 sub r3, fp, r3 | r3 = fp - r3;
0x00010ab8 sub r3, r3, r1 | r3 -= r1;
0x00010abc ldr r1, [r2, 4] | r1 = *(0x10dd4);
0x00010ac0 mov r6, r2 | r6 = r2;
0x00010ac4 add r3, r3, r1 | r3 = 0x10dd8;
0x00010ac8 str r3, [r2, 4] | *((r2 + 4)) = r3;
| if (r5 == 0) {
0x00010acc movne r8, r5 | r8 = r5;
| }
| if (r5 == 0) {
0x00010ad0 addne fp, r5, fp, lsl 2 |
| }
| if (r5 != 0) {
0x00010ad4 bne 0x10d78 | goto label_21;
| }
| label_9:
0x00010ad8 ldr r3, [r6, 4] | r3 = *((r6 + 4));
0x00010adc mov r2, r4 | r2 = r4;
0x00010ae0 str r3, [sp] | *(sp) = r3;
0x00010ae4 ldr r0, [pc, 0x2ec] | r0 = *(0x10dd4);
0x00010ae8 ldr r3, [r6, 8] | r3 = *((r6 + 8));
0x00010aec ldr r1, [r6] | r1 = *(r6);
0x00010af0 bl 0x106f4 | printf (r0, r1, r2, r3);
0x00010af4 mov r0, 0 | r0 = 0;
0x00010af8 add sp, sp, 0x8c |
0x00010afc pop {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| label_18:
0x00010b00 mov r0, r5 | r0 = r5;
0x00010b04 mov r1, r7 | r1 = r7;
0x00010b08 bl 0x1079c | r0 = realloc (r0, r1);
0x00010b0c subs r5, r0, 0 | r5 = r0 - 0;
| if (r5 != r0) {
0x00010b10 bne 0x10a58 | goto label_2;
| }
0x00010b14 ldr r1, [pc, 0x2c0] | r1 = "Cleaned_up__d_sockets_in__s___d_sockets_are_still_in_use___d_in_unknown_state";
0x00010b18 mov r2, r7 | r2 = r7;
| do {
0x00010b1c ldr r3, [pc, 0x288] | r3 = "/tmp";
0x00010b20 ldr r0, [r3] | r0 = "/tmp";
0x00010b24 bl 0x10754 | fprintf ("/tmp", "Cleaned_up__d_sockets_in__s___d_sockets_are_still_in_use___d_in_unknown_state", r2, "/tmp")
0x00010b28 b 0x1097c | goto label_3;
| label_10:
0x00010b2c mov r8, 2 | r8 = 2;
0x00010b30 mov fp, 0 |
0x00010b34 ldr sl, [pc, 0x2a4] | sl = "dbus-";
0x00010b38 b 0x10a60 | goto label_4;
| label_20:
0x00010b3c ldr r1, [r8] | r1 = *(r8);
0x00010b40 ldr r0, [pc, 0x29c] | r0 = "dbus-";
0x00010b44 bl 0x10808 | fputs ("dbus-", r1);
0x00010b48 mov r0, 2 | r0 = 2;
0x00010b4c bl 0x10730 | sleep (r0);
0x00010b50 b 0x10a80 | goto label_5;
| label_19:
0x00010b54 ldr r3, [sp, 0xc] | r3 = var_ch;
0x00010b58 ldr r6, [r5, r3, lsl 2] | offset_2 = r3 << 2;
| r6 = *((r5 + offset_2));
0x00010b5c add r3, r3, 1 | r3++;
0x00010b60 str r3, [sp, 0xc] | var_ch = r3;
0x00010b64 ldmib r6, {r3, r7} | __asm ("ldmib r6, {r3, r7}");
0x00010b68 cmp r3, 0 |
| if (r3 < 0) {
0x00010b6c movge r2, r7 | r2 = r7;
| }
| if (r3 < 0) {
0x00010b70 ldrge r1, [pc, 0x270] | r1 = "Internal error, socket has fd kept open while status = %d\n";
| }
0x00010b74 bge 0x10b1c |
| } while (r3 >= 0);
0x00010b78 cmp r7, 0 |
| if (r7 != 0) {
0x00010b7c bne 0x10a8c | goto label_6;
| }
0x00010b80 ldr r3, [r6, 0xc] | r3 = *((r6 + 0xc));
0x00010b84 cmp r3, 5 |
| if (r3 > 5) {
0x00010b88 ble 0x10ba4 |
0x00010b8c ldr r2, [r6] | r2 = *(r6);
0x00010b90 ldr r1, [pc, 0x254] | r1 = "Internal error, socket has fd kept open while status = %d\n";
0x00010b94 ldr r0, [r8] | r0 = *(r8);
0x00010b98 bl 0x10754 | fprintf (r0, "Internal error, socket has fd kept open while status = %d\n", r2)
| label_8:
0x00010b9c mov r7, 1 | r7 = 1;
0x00010ba0 b 0x10be8 |
| } else {
0x00010ba4 add r3, r3, 1 | r3++;
0x00010ba8 mov r1, 1 | r1 = 1;
0x00010bac str r3, [r6, 0xc] | *((r6 + 0xc)) = r3;
0x00010bb0 mov r2, r7 | r2 = r7;
0x00010bb4 mov r0, r1 | r0 = r1;
0x00010bb8 bl 0x1073c | r0 = socket (r0, r1, r2);
0x00010bbc cmp r0, 0 |
0x00010bc0 str r0, [r6, 4] | *((r6 + 4)) = r0;
| if (r0 >= 0) {
0x00010bc4 bge 0x10bf0 | goto label_22;
| }
0x00010bc8 bl 0x107e4 | errno_location ();
0x00010bcc ldr sl, [r8] | sl = *(r8);
0x00010bd0 ldr r0, [r0] | r0 = *(r0);
0x00010bd4 bl 0x1070c | strerror (r0);
0x00010bd8 ldr r1, [pc, 0x210] | r1 = "Warning:_giving_up_on_socket__s_after_several_retries__unable_to_determine_sockets_status";
0x00010bdc mov r2, r0 | r2 = r0;
0x00010be0 mov r0, sl | r0 = sl;
0x00010be4 bl 0x10754 | fprintf (r0, "Warning:_giving_up_on_socket__s_after_several_retries__unable_to_determine_sockets_status", r2)
| }
| do {
| label_7:
0x00010be8 str r7, [r6, 8] | *((r6 + 8)) = r7;
0x00010bec b 0x10d1c | goto label_23;
| label_22:
0x00010bf0 mov r2, 0x800 | r2 = 0x800;
0x00010bf4 mov r1, 4 | r1 = 4;
0x00010bf8 bl 0x10718 | r0 = fcntl64 ();
0x00010bfc cmp r0, 0 |
| if (r0 >= 0) {
0x00010c00 bge 0x10c34 | goto label_24;
| }
0x00010c04 ldr r2, [r6] | r2 = *(r6);
0x00010c08 ldr sl, [r8] | sl = *(r8);
0x00010c0c str r2, [sp, 0x14] | var_14h = r2;
0x00010c10 bl 0x107e4 | r0 = errno_location ();
0x00010c14 ldr r0, [r0] | r0 = *(r0);
0x00010c18 bl 0x1070c | strerror (r0);
0x00010c1c ldr r2, [sp, 0x14] | r2 = var_14h;
0x00010c20 ldr r1, [pc, 0x1cc] | r1 = "Warning:_failed_to_open_a_socket_to_use_for_connecting:__s";
0x00010c24 mov r3, r0 | r3 = r0;
0x00010c28 mov r0, sl | r0 = sl;
0x00010c2c bl 0x10754 | fprintf (r0, "Warning:_failed_to_open_a_socket_to_use_for_connecting:__s", r2, r3)
0x00010c30 b 0x10be8 |
| } while (1);
| label_24:
0x00010c34 mov r2, 0x6c | r2 = 0x6c;
0x00010c38 mov r1, r7 | r1 = r7;
0x00010c3c add r0, sp, 0x1a | r0 += dest;
0x00010c40 bl 0x107c0 | memset (r0, r1, r2);
0x00010c44 add sl, sp, 0x88 | sl += var_88h;
0x00010c48 mov r3, 1 | r3 = 1;
0x00010c4c strh r3, [sl, -0x70]! | *((sl -= 0x70)) = r3;
0x00010c50 mov r2, 0x6b | r2 = 0x6b;
0x00010c54 ldr r1, [r6] | r1 = *(r6);
0x00010c58 add r0, sp, 0x1a | r0 += dest;
0x00010c5c bl 0x10784 | strncpy (r0, r1, r2);
| do {
0x00010c60 mov r2, 0x6e | r2 = 0x6e;
0x00010c64 mov r1, sl | r1 = sl;
0x00010c68 ldr r0, [r6, 4] | r0 = *((r6 + 4));
0x00010c6c bl 0x10700 | r0 = connect (r0, r1, r2);
0x00010c70 cmp r0, 0 |
| if (r0 >= 0) {
0x00010c74 bge 0x10d8c | goto label_25;
| }
0x00010c78 bl 0x107e4 | r0 = errno_location ();
0x00010c7c mov r1, r0 | r1 = r0;
0x00010c80 ldr r0, [r0] | r0 = *(r0);
0x00010c84 cmp r0, 4 |
0x00010c88 beq 0x10c60 |
| } while (r0 == 4);
0x00010c8c cmp r0, 0x6f |
| if (r0 == 0x6f) {
0x00010c90 beq 0x10cc8 | goto label_26;
| }
0x00010c94 cmp r0, 0x73 |
| if (r0 == 0x73) {
0x00010c98 beq 0x10be8 | goto label_7;
| }
0x00010c9c cmp r0, 0xb |
| if (r0 == 0xb) {
0x00010ca0 beq 0x10be8 | goto label_7;
| }
0x00010ca4 ldr r7, [r8] | r7 = *(r8);
0x00010ca8 ldr sl, [r6] | sl = *(r6);
0x00010cac bl 0x1070c | strerror (r0);
0x00010cb0 ldr r1, [pc, 0x140] | r1 = "Warning:_failed_set_socket__s_nonblocking:__s";
0x00010cb4 mov r2, sl | r2 = sl;
0x00010cb8 mov r3, r0 | r3 = r0;
0x00010cbc mov r0, r7 | r0 = r7;
0x00010cc0 bl 0x10754 | fprintf (r0, "Warning:_failed_set_socket__s_nonblocking:__s", r2, r3)
0x00010cc4 b 0x10b9c | goto label_8;
| label_26:
0x00010cc8 ldr r3, [sb] | r3 = *(sb);
0x00010ccc ldr r0, [r6] | r0 = *(r6);
0x00010cd0 add r3, r3, 1 | r3++;
0x00010cd4 str r1, [sp, 0x14] | var_14h = r1;
0x00010cd8 str r3, [sb] | *(sb) = r3;
0x00010cdc bl 0x10790 | unlink (r0);
0x00010ce0 ldr r1, [sp, 0x14] | r1 = var_14h;
0x00010ce4 cmp r0, 0 |
| if (r0 < 0) {
0x00010ce8 movge r3, 4 | r3 = 4;
| }
| if (r0 < 0) {
0x00010cec bge 0x10d18 |
0x00010cf0 ldr r0, [r1] | r0 = *(r1);
0x00010cf4 ldr r7, [r8] | r7 = *(r8);
0x00010cf8 ldr sl, [r6] | sl = *(r6);
0x00010cfc bl 0x1070c | strerror (r0);
0x00010d00 ldr r1, [pc, 0xf4] | r1 = "Warning: unexpected error connecting to socket %s: %s\n";
0x00010d04 mov r2, sl | r2 = sl;
0x00010d08 mov r3, r0 | r3 = r0;
0x00010d0c mov r0, r7 | r0 = r7;
0x00010d10 bl 0x10754 | fprintf (r0, "Warning: unexpected error connecting to socket %s: %s\n", r2, r3)
0x00010d14 mov r3, 1 | r3 = 1;
| }
0x00010d18 str r3, [r6, 8] | *((r6 + 8)) = r3;
| label_23:
0x00010d1c ldr r0, [r6, 4] | r0 = *((r6 + 4));
0x00010d20 cmp r0, 0 |
| if (r0 >= 0) {
0x00010d24 blt 0x10d34 |
0x00010d28 bl 0x1082c | close (r0);
0x00010d2c mvn r3, 0 | r3 = ~0;
0x00010d30 str r3, [r6, 4] | *((r6 + 4)) = r3;
| }
0x00010d34 ldr r3, [r6, 8] | r3 = *((r6 + 8));
0x00010d38 cmp r3, 0 |
| if (r3 != 0) {
0x00010d3c ldreq r3, [sp, 0x10] | r3 = var_10h;
| }
| if (r3 != 0) {
0x00010d40 addeq r3, r3, 1 | r3++;
| }
| if (r3 != 0) {
0x00010d44 streq r3, [sp, 0x10] | var_10h = r3;
| }
0x00010d48 b 0x10a8c | goto label_6;
| do {
0x00010d4c ldr r7, [r8], 4 | r7 = *(r8);
| r8 += 4;
0x00010d50 cmp r7, 0 |
| if (r7 != 0) {
0x00010d54 beq 0x10d78 |
0x00010d58 ldr r0, [r7] | r0 = *(r7);
0x00010d5c bl 0x10838 | free (r0);
0x00010d60 ldr r0, [r7, 4] | r0 = *((r7 + 4));
0x00010d64 cmp r0, 0 |
| if (r0 >= 0) {
0x00010d68 blt 0x10d70 |
0x00010d6c bl 0x1082c | close (r0);
| }
0x00010d70 mov r0, r7 | r0 = r7;
0x00010d74 bl 0x10838 | free (r0);
| }
| label_21:
0x00010d78 cmp fp, r8 |
0x00010d7c bne 0x10d4c |
| } while (fp != r8);
0x00010d80 mov r0, r5 | r0 = r5;
0x00010d84 bl 0x10838 | free (r0);
0x00010d88 b 0x10ad8 | goto label_9;
| label_25:
0x00010d8c ldr r3, [sb, 8] | r3 = *((sb + 8));
0x00010d90 mov r7, 3 | r7 = 3;
0x00010d94 add r3, r3, 1 | r3++;
0x00010d98 str r3, [sb, 8] | *((sb + 8)) = r3;
0x00010d9c b 0x10be8 | goto label_7;
| }
[*] Function fprintf used 9 times dbus-cleanup-sockets