[*] Binary protection state of busctl

  
  	Full RELRO     Canary found      NX enabled   PIE enabled  RPATH        No RUNPATH   No Symbols


[*] Function strcpy tear down of busctl

    ; assembly                                                   | /* r2dec pseudo code output */
                                                                 | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-80367616.squashfs_v4_le_extract/usr/bin/busctl @ 0x6624 */
                                                                 | #include <stdint.h>
                                                                 |  
                                                                 | #define BIT_MASK(t,v) ((t)(-((v)!= 0)))&(((t)-1)>>((sizeof(t)*CHAR_BIT)-(v)))
                                                                 |  
    ; (fcn) fcn.00006624 ()                                      | void fcn_00006624 (int16_t arg_140h, int16_t arg_258h, int16_t arg1, int16_t arg2, int16_t arg3) {
                                                                 |     int16_t var_0h;
                                                                 |     char * dest;
                                                                 |     int16_t var_18h;
                                                                 |     r0 = arg1;
                                                                 |     r1 = arg2;
                                                                 |     r2 = arg3;
                                                                 | label_6:
    0x00002ec8 bx pc                                             |     return void (*pc)() ();
    0x00006624 push.w {r4, r5, r6, r7, r8, sb, sl, fp, lr}       |     
    0x00006628 mov sb, r0                                        |     sb = r0;
    0x0000662a sub sp, 0x24                                      |     
    0x0000662c mov r5, r2                                        |     r5 = r2;
    0x0000662e add r7, sp, 8                                     |     r7 += dest;
    0x00006630 ldr r0, [r2]                                      |     r0 = *(r2);
    0x00006632 ldr r2, [pc, 0x214]                               |     
    0x00006634 ldr r3, [pc, 0x214]                               |     r3 = *(0x684c);
    0x00006636 add r2, pc                                        |     r2 = 0xce84;
    0x00006638 ldr r3, [r2, r3]                                  |     
    0x0000663a ldr r3, [r3]                                      |     r3 = imp.string_hash_ops;
    0x0000663c str r3, [r7, 0x14]                                |     *((r7 + 0x14)) = r3;
    0x0000663e mov.w r3, 0                                       |     r3 = 0;
    0x00006642 cmp r0, 0                                         |     
                                                                 |     if (r0 == 0) {
    0x00006644 beq.w 0x6778                                      |         goto label_7;
                                                                 |     }
    0x00006648 mov r6, r1                                        |     r6 = r1;
    0x0000664a b 0x6656                                          |     
                                                                 |     while (r0 == 0) {
    0x0000664c ldr r0, [r5, 4]!                                  |         r0 = *((r5 += 4));
    0x00006650 cmp r0, 0                                         |         
                                                                 |         if (r0 == 0) {
    0x00006652 beq.w 0x6778                                      |             goto label_7;
                                                                 |         }
    0x00006656 mov r1, r6                                        |         r1 = r6;
    0x00006658 blx 0x2ea4                                        |         r0 = fcn_00002ea4 ();
    0x0000665c cmp r0, 0                                         |         
    0x0000665e beq 0x664c                                        |         
                                                                 |     }
    0x00006660 movs r0, 0                                        |     r0 = 0;
    0x00006662 blx 0x2c54                                        |     r0 = special_glyph ();
    0x00006666 mov r4, r0                                        |     r4 = r0;
    0x00006668 mov r0, sb                                        |     r0 = sb;
    0x0000666a blx 0x2e04                                        |     r0 = strlen (r0);
    0x0000666e add.w r8, r0, 1                                   |     r8 = r0 + 1;
    0x00006672 cmp r4, 0                                         |     
                                                                 |     if (r4 == 0) {
    0x00006674 beq.w 0x6814                                      |         goto label_8;
                                                                 |     }
    0x00006678 mov r0, r4                                        |     r0 = r4;
    0x0000667a blx 0x2e04                                        |     r0 = strlen (r0);
    0x0000667e add.w r3, r8, r0                                  |     r3 = r8 + r0;
    0x00006680 lsls r0, r0, 0xc                                  |     r0 <<= 0xc;
    0x00006682 cmp.w r3, 0x400000                                |     
                                                                 |     if (r3 > 0x400000) {
    0x00006686 bhi.w 0x67c8                                      |         goto label_3;
                                                                 |     }
    0x0000668a adds r3, 7                                        |     r3 += 7;
    0x0000668c mov r1, sb                                        |     r1 = sb;
    0x0000668e bic r3, r3, 7                                     |     r3 = BIT_MASK (r3, 7);
    0x00006692 sub.w sp, sp, r3                                  |     
    0x00006696 add r3, sp, 8                                     |     r3 += dest;
    0x00006698 mov r0, r3                                        |     r0 = r3;
    0x0000669a str r3, [r7, 8]                                   |     *((r7 + 8)) = r3;
    0x0000669c blx 0x2948                                        |     stpcpy ();
    0x0000669e ldrd r4, r6, [r4, -0x84]                          |     __asm ("ldrd r4, r6, [r4, -0x84]");
    0x000066a2 blx 0x2aec                                        |     strcpy (r0, r1)
    0x000066a6 movs r0, 3                                        |     r0 = 3;
    0x000066a8 blx 0x2c54                                        |     r0 = special_glyph ();
    0x000066ac mov r4, r0                                        |     r4 = r0;
    0x000066ae cmp r0, 0                                         |     
                                                                 |     if (r0 == 0) {
    0x000066b0 beq.w 0x67f4                                      |         goto label_9;
                                                                 |     }
                                                                 | label_4:
    0x000066b4 mov r0, r4                                        |     r0 = r4;
    0x000066b6 blx 0x2e04                                        |     strlen (r0);
    0x000066ba add r0, r8                                        |     r0 += r8;
    0x000066bc cmp.w r0, 0x400000                                |     
                                                                 |     if (r0 > 0x400000) {
    0x000066c0 bhi.w 0x67de                                      |         goto label_10;
                                                                 |     }
    0x000066c4 adds r0, 7                                        |     r0 += 7;
    0x000066c6 mov r1, sb                                        |     r1 = sb;
    0x000066c8 bic r0, r0, 7                                     |     r0 = BIT_MASK (r0, 7);
    0x000066cc sub.w sp, sp, r0                                  |     
    0x000066d0 add.w sl, sp, 8                                   |     sl += dest;
    0x000066d4 mov r0, sl                                        |     r0 = sl;
    0x000066d6 blx 0x2948                                        |     r0 = stpcpy ();
    0x000066d8 ldmdb r8!, {r0, r5, sb, sl, lr}                   |     __asm ("ldmdb r8!, {r0, r5, sb, sl, lr}");
    0x000066dc blx 0x2948                                        |     stpcpy ();
                                                                 | label_2:
    0x000066e0 ldr.w r8, [r5]                                    |     r8 = *(r5);
    0x000066e4 movs r3, 0                                        |     r3 = 0;
    0x000066e6 strb r3, [r0]                                     |     *(r0) = r3;
    0x000066e8 cmp.w r8, 0                                       |     
                                                                 |     if (r8 == 0) {
    0x000066ec beq 0x6778                                        |         goto label_7;
                                                                 |     }
    0x000066ee ldr r3, [pc, 0x160]                               |     
    0x000066f0 movs r2, 1                                        |     r2 = 1;
    0x000066f2 mov r1, r6                                        |     r1 = r6;
    0x000066f4 add r3, pc                                        |     r3 = 0xcf4a;
    0x000066f6 str r3, [r7, 0xc]                                 |     *((r7 + 0xc)) = r3;
    0x000066f8 ldr r3, [pc, 0x158]                               |     
    0x000066fa add r3, pc                                        |     r3 = 0xcf52;
    0x000066fc str r3, [r7, 4]                                   |     *((r7 + 4)) = r3;
    0x000066fe mov r3, r5                                        |     r3 = r5;
    0x00006700 mov r5, r8                                        |     r5 = r8;
    0x00006702 mov r8, r3                                        |     r8 = r3;
    0x00006704 mov r0, r5                                        |     r0 = r5;
    0x00006706 blx 0x2c3c                                        |     r0 = path_startswith_full ();
                                                                 |     if (r0 == 0) {
    0x0000670a cbz r0, 0x6778                                    |         goto label_7;
                                                                 |     }
                                                                 | label_0:
    0x0000670c ldr.w fp, [r8, 4]                                 |     fp = *((r8 + 4));
    0x00006710 add.w r4, r8, 4                                   |     r4 = r8 + 4;
    0x00006714 cmp.w fp, 0                                       |     
    0x00006716 lsrs r0, r0, 0x1c                                 |     r0 >>= 0x1c;
                                                                 |     if (r0 == r0) {
    0x00006718 beq 0x67ae                                        |         goto label_11;
                                                                 |     }
    0x0000671a mov r3, fp                                        |     r3 = fp;
    0x0000671c mov fp, r4                                        |     
    0x0000671e mov r4, r3                                        |     r4 = r3;
    0x00006720 b 0x6734                                          |     
                                                                 |     while (r0 != 0) {
    0x00006722 movs r2, 1                                        |         r2 = 1;
    0x00006724 mov r1, r5                                        |         r1 = r5;
    0x00006726 mov r0, r4                                        |         r0 = r4;
    0x00006728 blx 0x2c3c                                        |         r0 = path_startswith_full ();
    0x0000672a eor.w r3, r8, r0, lsr 14                          |         r3 = r8 ^ (r0 >> 14);
    0x0000672e ldr r4, [fp, 4]!                                  |         r4 = var_18h;
                                                                 |         if (r4 == 0) {
    0x00006732 cbz r4, 0x6742                                    |             goto label_12;
                                                                 |         }
    0x00006734 movs r2, 1                                        |         r2 = 1;
    0x00006736 mov r1, r6                                        |         r1 = r6;
    0x00006738 mov r0, r4                                        |         r0 = r4;
    0x0000673a blx 0x2c3c                                        |         r0 = path_startswith_full ();
    0x0000673e cmp r0, 0                                         |         
    0x00006740 bne 0x6722                                        |         
                                                                 |     }
                                                                 | label_12:
    0x00006742 movs r0, 2                                        |     r0 = 2;
    0x00006744 mov r4, fp                                        |     r4 = fp;
    0x00006746 blx 0x2c54                                        |     special_glyph ();
    0x0000674a str r5, [sp]                                      |     *(sp) = r5;
    0x0000674c mov r3, r0                                        |     r3 = r0;
    0x0000674e ldr r1, [r7, 0xc]                                 |     r1 = *((r7 + 0xc));
    0x00006750 mov r2, sb                                        |     r2 = sb;
    0x00006752 movs r0, 1                                        |     r0 = 1;
    0x00006754 blx 0x2ffc                                        |     hashmap_put ();
    0x00006758 mov r0, sl                                        |     r0 = sl;
                                                                 | label_1:
    0x0000675a ldr.w r1, [r8]                                    |     r1 = *(r8);
    0x0000675e mov r2, r8                                        |     r2 = r8;
    0x00006760 bl 0x6624                                         |     fcn_00006624 (r0, r1, r2, r3, r4);
    0x00006764 ldr r5, [r4]                                      |     r5 = *(r4);
                                                                 |     if (r5 == 0) {
    0x00006766 cbz r5, 0x6778                                    |         goto label_7;
                                                                 |     }
    0x00006768 movs r2, 1                                        |     r2 = 1;
    0x0000676a mov r1, r6                                        |     r1 = r6;
    0x0000676c mov r0, r5                                        |     r0 = r5;
    0x0000676e mov r8, r4                                        |     r8 = r4;
    0x00006770 blx 0x2c3c                                        |     r0 = path_startswith_full ();
    0x00006774 cmp r0, 0                                         |     
                                                                 |     if (r0 != 0) {
    0x00006776 bne 0x670c                                        |         goto label_0;
                                                                 |     }
                                                                 | label_7:
    0x00006778 ldr r2, [pc, 0xdc]                                |     
    0x0000677a ldr r3, [pc, 0xd0]                                |     r3 = *(0x684e);
    0x0000677c add r2, pc                                        |     r2 = 0xcfd8;
    0x0000677e ldr r3, [r2, r3]                                  |     r3 = *(0xcfd8);
    0x00006780 ldr r2, [r3]                                      |     r2 = *(0xcfd8);
    0x00006782 ldr r3, [r7, 0x14]                                |     r3 = *((r7 + 0x14));
    0x00006784 eors r2, r3                                       |     r2 ^= r3;
    0x00006786 mov.w r3, 0                                       |     r3 = 0;
                                                                 |     if (r2 != r3) {
    0x0000678a bne 0x6842                                        |         goto label_13;
                                                                 |     }
    0x0000678c adds r7, 0x1c                                     |     r7 += 0x1c;
    0x0000678e mov sp, r7                                        |     
    0x00006790 pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc}        |     
    0x00006794 movs r0, 1                                        |     r0 = 1;
    0x00006796 mov r4, fp                                        |     r4 = fp;
    0x00006798 blx 0x2c54                                        |     special_glyph ();
    0x0000679c str r5, [sp]                                      |     *(sp) = r5;
    0x0000679e mov r3, r0                                        |     r3 = r0;
    0x000067a0 ldr r1, [r7, 4]                                   |     r1 = *((r7 + 4));
    0x000067a2 mov r2, sb                                        |     r2 = sb;
    0x000067a4 movs r0, 1                                        |     r0 = 1;
    0x000067a6 blx 0x2ffc                                        |     hashmap_put ();
    0x000067aa ldr r0, [r7, 8]                                   |     r0 = *((r7 + 8));
    0x000067ac b 0x675a                                          |     goto label_1;
                                                                 | label_11:
    0x000067ae movs r0, 2                                        |     r0 = 2;
    0x000067b0 blx 0x2c54                                        |     special_glyph ();
    0x000067b4 ldr r1, [pc, 0xa4]                                |     
    0x000067b6 mov r3, r0                                        |     r3 = r0;
    0x000067b8 mov r2, sb                                        |     r2 = sb;
    0x000067ba movs r0, 1                                        |     r0 = 1;
    0x000067bc str r5, [sp]                                      |     *(sp) = r5;
    0x000067be add r1, pc                                        |     r1 = 0xd01e;
    0x000067c0 blx 0x2ffc                                        |     hashmap_put ();
    0x000067c4 mov r0, sl                                        |     r0 = sl;
    0x000067c6 b 0x675a                                          |     goto label_1;
                                                                 | label_3:
    0x000067c8 ldr r1, [pc, 0x94]                                |     
    0x000067ca mov.w r2, 0x178                                   |     r2 = 0x178;
    0x000067ce ldr r3, [pc, 0x94]                                |     
    0x000067d0 ldr r0, [pc, 0x94]                                |     
    0x000067d2 add r1, pc                                        |     r1 = 0xd036;
    0x000067d4 add r3, pc                                        |     r3 = 0xd03e;
    0x000067d6 adds r1, 7                                        |     r1 += 7;
    0x000067d8 add r0, pc                                        |     r0 = 0xd044;
    0x000067da blx 0x2804                                        |     log_assert_failed ();
                                                                 |     do {
                                                                 | label_10:
    0x000067de ldr r1, [pc, 0x8c]                                |         
    0x000067e0 movw r2, 0x179                                    |         r2 = 0x179;
    0x000067e4 ldr r3, [pc, 0x88]                                |         
    0x000067e6 ldr r0, [pc, 0x8c]                                |         
    0x000067e8 add r1, pc                                        |         r1 = 0xd05a;
    0x000067ea add r3, pc                                        |         r3 = 0xd05e;
    0x000067ec adds r1, 7                                        |         r1 += 7;
    0x000067ee add r0, pc                                        |         r0 = "er";
    0x000067f0 blx 0x2804                                        |         log_assert_failed ();
                                                                 | label_9:
    0x000067f4 cmp.w r8, 0x400000                                |         
    0x000067f8 bhi 0x67de                                        |         
                                                                 |     } while (r8 > 0x400000);
                                                                 | label_5:
    0x000067fa add.w r3, r8, 7                                   |     r3 = r8 + 7;
    0x000067fe mov r1, sb                                        |     r1 = sb;
    0x00006800 bic r3, r3, 7                                     |     r3 = BIT_MASK (r3, 7);
    0x00006804 sub.w sp, sp, r3                                  |     
    0x00006808 add.w sl, sp, 8                                   |     sl += dest;
    0x0000680c mov r0, sl                                        |     r0 = sl;
    0x0000680e blx 0x2948                                        |     stpcpy ();
    0x00006812 b 0x66e0                                          |     goto label_2;
                                                                 | label_8:
    0x00006814 cmp.w r8, 0x400000                                |     
                                                                 |     if (r8 > 0x400000) {
    0x00006818 bhi 0x67c8                                        |         goto label_3;
                                                                 |     }
    0x0000681a add.w r3, r0, 8                                   |     r3 = r0 + 8;
    0x0000681e mov r1, sb                                        |     r1 = sb;
    0x00006820 bic r3, r3, 7                                     |     r3 = BIT_MASK (r3, 7);
    0x00006824 sub.w sp, sp, r3                                  |     
    0x00006828 add r3, sp, 8                                     |     r3 += dest;
    0x0000682a mov r0, r3                                        |     r0 = r3;
    0x0000682c str r3, [r7, 8]                                   |     *((r7 + 8)) = r3;
    0x0000682e blx 0x2aec                                        |     strcpy (r0, r1)
    0x00006832 movs r0, 3                                        |     r0 = 3;
    0x00006834 blx 0x2c54                                        |     r0 = special_glyph ();
    0x00006838 mov r4, r0                                        |     r4 = r0;
    0x0000683a cmp r0, 0                                         |     
                                                                 |     if (r0 != 0) {
    0x0000683c bne.w 0x66b4                                      |         goto label_4;
                                                                 |     }
    0x00006840 b 0x67fa                                          |     goto label_5;
                                                                 | label_13:
    0x00006842 blx 0x2be8                                        |     stack_chk_fail ();
    0x00006846 nop                                               |     
    0x00006848 str r6, [sp, 0x258]                               |     *(arg_258h) = r6;
    0x0000684a movs r0, r0                                       |     
    0x0000684c lsls r0, r7, 0xb                                  |     r0 = r7 << 0xb;
    0x0000684e movs r0, r0                                       |     
    0x00006850 str r4, [r5, 0x78]                                |     *((r5 + 0x78)) = r4;
    0x00006852 movs r0, r0                                       |     
    0x00006854 str r6, [r4, 0x78]                                |     *((r4 + 0x78)) = r6;
    0x00006856 movs r0, r0                                       |     
    0x00006858 str r5, [sp, 0x140]                               |     *(arg_140h) = r5;
    0x0000685a movs r0, r0                                       |     
    0x0000685c str r2, [r4, 0x6c]                                |     *((r4 + 0x6c)) = r2;
    0x0000685e movs r0, r0                                       |     
    0x00006860 ldr r2, [r7, r4]                                  |     r2 = *((r7 + r4));
    0x00006862 movs r0, r0                                       |     
    0x00006864 strb r4, [r1, 0x14]                               |     *((r1 + 0x14)) = r4;
    0x00006866 movs r0, r0                                       |     
    0x00006868 str r4, [r6, 0x68]                                |     *((r6 + 0x68)) = r4;
    0x0000686a movs r0, r0                                       |     
    0x0000686c ldr r4, [r4, r4]                                  |     r4 = *((r4 + r4));
    0x0000686e movs r0, r0                                       |     
    0x00006870 strb r6, [r6, 0x13]                               |     *((r6 + 0x13)) = r6;
    0x00006872 movs r0, r0                                       |     
    0x00006874 str r6, [r3, 0x68]                                |     *((r3 + 0x68)) = r6;
    0x00006876 movs r0, r0                                       |     
    0x00006878 ldr r3, [pc, 8]                                   |     
    0x0000687a mov r2, r1                                        |     r2 = r1;
    0x0000687c add r3, pc                                        |     r3 = "Failed to process bus: %m";
    0x0000687e ldr r1, [r3]                                      |     r1 = "Failed to process bus: %m";
    0x00006880 b.w 0x2ec8                                        |     goto label_6;
                                                                 | }

[*] Function strcpy used 3 times busctl