[*] Binary protection state of connmand

  
  	Partial RELRO  No Canary found   NX disabled  No PIE       No RPATH     No RUNPATH   No Symbols


[*] Function fprintf tear down of connmand

    ; 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/sbin/connmand @ 0x42240 */
                                             | #include <stdint.h>
                                             |  
    ; (fcn) fcn.00042240 ()                  | void fcn_00042240 (int32_t arg1) {
                                             |     r0 = arg1;
    0x00042240 push {r4, r5, r6, lr}         |     
    0x00042244 ldr r1, [pc, 0x28]            |     r1 = *(0x42270);
    0x00042248 mov r5, r0                    |     r5 = r0;
    0x0004224c ldr r0, [pc, 0x24]            |     r0 = *(0x42274);
    0x00042250 bl 0x1b660                    |     r0 = fopen64 ();
    0x00042254 subs r4, r0, 0                |     r4 = r0 - 0;
    0x00042258 popeq {r4, r5, r6, pc}        |     
    0x0004225c mov r2, r5                    |     r2 = r5;
    0x00042260 ldr r1, [pc, 0x14]            |     r1 = "_proc_sys_net_ipv4_conf_all_rp_filter";
    0x00042264 bl 0x1b8e8                    |     fprintf (r0, "_proc_sys_net_ipv4_conf_all_rp_filter", r2, r3, r4)
    0x00042268 mov r0, r4                    |     r0 = r4;
    0x0004226c pop {r4, r5, r6, lr}          |     
    0x00042270 b 0x1c2e4                     |     return void (*0x1c2e4)() ();
                                             | }
    ; 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/sbin/connmand @ 0x423e0 */
                                             | #include <stdint.h>
                                             |  
                                             | #define BIT_MASK(t,v) ((t)(-((v)!= 0)))&(((t)-1)>>((sizeof(t)*CHAR_BIT)-(v)))
                                             |  
    ; (fcn) fcn.000423e0 ()                  | void fcn_000423e0 (int32_t arg1, int32_t arg2) {
                                             |     r0 = arg1;
                                             |     r1 = arg2;
    0x000423e0 push {r4, r5, r6, lr}         |     
    0x000423e4 mov r5, r1                    |     r5 = r1;
    0x000423e8 mov r1, r0                    |     r1 = r0;
    0x000423ec ldr r0, [pc, 0x40]            |     r0 = *(0x42430);
    0x000423f0 bl 0x1bc78                    |     r0 = g_strdup_printf ();
    0x000423f4 subs r6, r0, 0                |     r6 = r0 - 0;
    0x000423f8 popeq {r4, r5, r6, pc}        |     
    0x000423fc ldr r1, [pc, 0x34]            |     r1 = "/proc/sys/net/ipv6/conf/%s/use_tempaddr";
    0x00042400 bl 0x1b660                    |     r0 = fopen64 ();
    0x00042404 mov r4, r0                    |     r4 = r0;
    0x00042408 mov r0, r6                    |     r0 = r6;
    0x0004240c bl 0x1b60c                    |     g_free ();
    0x00042410 cmp r4, 0                     |     
    0x00042414 popeq {r4, r5, r6, pc}        |     
    0x00042418 bic r2, r5, r5, asr 31        |     r2 = BIT_MASK (r5, r5);
    0x0004241c mov r0, r4                    |     r0 = r4;
    0x00042420 ldr r1, [pc, 0x14]            |     r1 = *(0x42438);
    0x00042424 bl 0x1b8e8                    |     fprintf (r0, r1)
    0x00042428 mov r0, r4                    |     r0 = r4;
    0x0004242c pop {r4, r5, r6, lr}          |     
    0x00042430 b 0x1c2e4                     |     return void (*0x1c2e4)() ();
                                             | }
    ; 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/sbin/connmand @ 0x60c38 */
                                                     | #include <stdint.h>
                                                     |  
    ; (fcn) fcn.00060c38 ()                          | void fcn_00060c38 (int32_t arg1) {
                                                     |     r0 = arg1;
    0x00060c38 ldr r3, [pc, 0xfc]                    |     
    0x00060c3c push {r4, r5, r6, r7, r8, lr}         |     
    0x00060c40 ldr r3, [r3, 8]                       |     r3 = "__connman_bridge_create";
    0x00060c44 mov r5, r0                            |     r5 = r0;
    0x00060c48 tst r3, 1                             |     
                                                     |     if ((r3 & 1) != 0) {
    0x00060c4c beq 0x60c64                           |         
    0x00060c50 mov r3, r0                            |         r3 = r0;
    0x00060c54 ldr r2, [pc, 0xe4]                    |         r2 = *(0x60d3c);
    0x00060c58 ldr r1, [pc, 0xe4]                    |         r1 = "__connman_bridge_create";
    0x00060c5c ldr r0, [pc, 0xe4]                    |         r0 = "src_bridge.c";
    0x00060c60 bl 0x2acc4                            |         connman_debug ();
                                                     |     }
    0x00060c64 mov r2, 0                             |     r2 = 0;
    0x00060c68 ldr r1, [pc, 0xdc]                    |     r1 = "_s:_s___name__s";
    0x00060c6c mov r0, 2                             |     r0 = 2;
    0x00060c70 bl 0x1c1e8                            |     r0 = socket (r0, "_s:_s___name__s", r2);
    0x00060c74 subs r6, r0, 0                        |     r6 = r0 - 0;
                                                     |     if (r6 >= r0) {
    0x00060c78 blt 0x60ca8                           |         
    0x00060c7c mov r2, r5                            |         r2 = r5;
    0x00060c80 ldr r1, [pc, 0xc8]                    |         r1 = *(0x60d4c);
    0x00060c84 bl 0x1c35c                            |         r0 = ioctl (r0, r1);
    0x00060c88 cmn r0, 1                             |         
                                                     |         if (r0 != 1) {
    0x00060c8c bne 0x60cb0                           |             goto label_1;
                                                     |         }
    0x00060c90 bl 0x1c770                            |         r0 = errno_location ();
    0x00060c94 ldr r3, [r0]                          |         r3 = *(r0);
    0x00060c98 cmp r3, 0x11                          |         
                                                     |         if (r3 == 0x11) {
    0x00060c9c beq 0x60cb0                           |             goto label_1;
                                                     |         }
    0x00060ca0 mov r0, r6                            |         r0 = r6;
    0x00060ca4 bl 0x1b66c                            |         close (r0);
                                                     |     }
    0x00060ca8 mvn r4, 0x5e                          |     r4 = ~0x5e;
    0x00060cac b 0x60cfc                             |     goto label_2;
                                                     | label_1:
    0x00060cb0 mov r1, r5                            |     r1 = r5;
    0x00060cb4 ldr r0, [pc, 0x98]                    |     r0 = *(0x60d50);
    0x00060cb8 bl 0x1bc78                            |     r0 = g_strdup_printf ();
    0x00060cbc subs r7, r0, 0                        |     r7 = r0 - 0;
                                                     |     if (r7 == r0) {
    0x00060cc0 beq 0x60d24                           |         goto label_3;
                                                     |     }
    0x00060cc4 ldr r1, [pc, 0x8c]                    |     r1 = "/sys/class/net/%s/bridge/forward_delay";
    0x00060cc8 bl 0x1b660                            |     r0 = fopen64 ();
    0x00060ccc mov r4, r0                            |     r4 = r0;
    0x00060cd0 mov r0, r7                            |     r0 = r7;
    0x00060cd4 bl 0x1b60c                            |     g_free ();
    0x00060cd8 cmp r4, 0                             |     
                                                     |     if (r4 != 0) {
    0x00060cdc bne 0x60d04                           |         goto label_4;
                                                     |     }
    0x00060ce0 bl 0x1c770                            |     r0 = errno_location ();
    0x00060ce4 ldr r3, [r0]                          |     r3 = *(r0);
    0x00060ce8 cmp r3, 0                             |     
    0x00060cec rsb r4, r3, 0                         |     r4 = r3 - ;
                                                     |     if (r3 > 0) {
    0x00060cf0 bgt 0x60d28                           |         goto label_5;
                                                     |     }
                                                     |     do {
                                                     | label_0:
    0x00060cf4 mov r0, r6                            |         r0 = r6;
    0x00060cf8 bl 0x1b66c                            |         close (r0);
                                                     | label_2:
    0x00060cfc mov r0, r4                            |         r0 = r4;
    0x00060d00 pop {r4, r5, r6, r7, r8, pc}          |         
                                                     | label_4:
    0x00060d04 mov r2, 0                             |         r2 = 0;
    0x00060d08 ldr r1, [pc, 0x4c]                    |         r1 = *(0x60d58);
    0x00060d0c mov r0, r4                            |         r0 = r4;
    0x00060d10 bl 0x1b8e8                            |         fprintf (r0, r1, r2)
    0x00060d14 mov r0, r4                            |         r0 = r4;
    0x00060d18 bl 0x1c2e4                            |         fclose (r0);
    0x00060d1c mov r4, 0                             |         r4 = 0;
    0x00060d20 b 0x60cf4                             |         
                                                     |     } while (1);
                                                     | label_3:
    0x00060d24 mvn r4, 0xb                           |     r4 = ~0xb;
                                                     | label_5:
    0x00060d28 mov r2, r5                            |     r2 = r5;
    0x00060d2c ldr r1, [pc, 0x2c]                    |     r1 = "_u";
    0x00060d30 mov r0, r6                            |     r0 = r6;
    0x00060d34 bl 0x1c35c                            |     ioctl (r0, "_u");
    0x00060d38 b 0x60cf4                             |     goto label_0;
                                                     | }

[*] Function fprintf used 4 times connmand