[*] Binary protection state of mDNSResponderPosix

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


[*] Function strcpy tear down of mDNSResponderPosix

    ; assembly                           | /* r2dec pseudo code output */
                                         | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/bin/mDNSResponderPosix @ 0x7434 */
                                         | #include <stdint.h>
                                         |  
    ; (fcn) fcn.00007434 ()              | uint32_t fcn_00007434 (int16_t arg1) {
                                         |     r0 = arg1;
    0x00007434 ldrb r2, [r0]             |     r2 = *(r0);
    0x00007436 uxth r3, r2               |     r3 = (int16_t) r2;
                                         |     if (r1 == 0) {
    0x00007438 cbz r1, 0x7496            |         goto label_1;
                                         |     }
    0x0000743a cmp r3, 3                 |     
                                         |     if (r3 < 3) {
    0x0000743c bls 0x74a8                |         goto label_2;
                                         |     }
    0x0000743e ldrb r2, [r0, r2]         |     r2 = *((r0 + r2));
    0x00007440 cmp r2, 0x29              |     
                                         |     if (r2 != 0x29) {
    0x00007442 bne 0x74a8                |         goto label_2;
                                         |     }
    0x00007444 subs r2, r3, 1            |     r2 = r3 - 1;
    0x00007446 uxth r2, r2               |     r2 = (int16_t) r2;
    0x00007448 ldrb r2, [r0, r2]         |     r2 = *((r0 + r2));
    0x0000744a subs r2, 0x30             |     r2 -= 0x30;
    0x0000744c cmp r2, 9                 |     
                                         |     if (r2 > 9) {
    0x0000744e bhi 0x74a8                |         goto label_2;
                                         |     }
    0x00007450 subs r3, 2                |     r3 -= 2;
    0x00007452 push {r4, lr}             |     
    0x00007454 uxth r3, r3               |     r3 = (int16_t) r3;
    0x00007456 cmp r3, 2                 |     
                                         |     if (r3 == 2) {
    0x00007458 beq 0x74e2                |         goto label_3;
                                         |     }
    0x0000745a adds r2, r3, 1            |     r2 = r3 + 1;
    0x0000745c add r2, r0                |     r2 += r0;
    0x0000745e b 0x7466                  |     
                                         |     while (ip < 9) {
    0x00007460 cmp.w lr, 2               |         
                                         |         if (lr == 2) {
    0x00007464 beq 0x74e2                |             goto label_3;
                                         |         }
    0x00007466 ldrb r1, [r2, -0x1]!      |         r1 = *((r2 -= 0x1));
    0x0000746a mov r4, r3                |         r4 = r3;
    0x0000746c subs r3, 1                |         r3--;
    0x0000746e uxth.w lr, r3             |         lr = (int16_t) r3;
    0x00007472 sub.w ip, r1, 0x30        |         
    0x00007474 lsrs r0, r6, 0x10         |         r0 = r6 >> 0x10;
    0x00007476 cmp.w ip, 9               |         
    0x0000747a bls 0x7460                |         
                                         |     }
                                         | label_0:
    0x0000747c cmp r1, 0x28              |     
    0x0000747e itett eq                  |     
                                         |     if (r1 != 0x28) {
    0x00007480 addeq r4, r4, r0          |         r4 += r0;
                                         |     }
                                         |     if (r1 == 0x28) {
    0x00007482 movne r0, 0               |         r0 = 0;
                                         |     }
                                         |     if (r1 != 0x28) {
    0x00007484 ldrbeq r1, [r4, -0x1]     |         r1 = *((r4 - 0x1));
                                         |     }
                                         |     if (r1 == 0x28) {
    0x00007488 sub.w r0, r1, 0x20        |         r0 = r1 - 0x20;
                                         |     }
    0x0000748c itt eq                    |     
                                         |     if (r1 == 0x28) {
    0x0000748e clzeq r0, r0              |         __asm ("clzeq r0, r0");
                                         |     }
                                         |     if (r1 == 0x28) {
    0x00007492 lsrs r0, r0, 5            |         r0 >>= 5;
                                         |     }
    0x00007494 pop {r4, pc}              |     
                                         | label_1:
    0x00007496 cmp r3, 1                 |     
                                         |     if (r3 >= 1) {
    0x00007498 bls 0x74a8                |         
    0x0000749a ldrb.w ip, [r0, r2]       |         ip = *((r0 + r2));
    0x0000749e sub.w ip, ip, 0x30        |         
    0x000074a2 cmp.w ip, 9               |         
                                         |         if (ip < 9) {
    0x000074a6 bls 0x74ac                |             goto label_4;
                                         |         }
                                         |     }
                                         | label_2:
    0x000074a8 movs r0, 0                |     r0 = 0;
    0x000074aa bx lr                     |     return r0;
                                         | label_4:
    0x000074ac subs r3, 1                |     r3--;
    0x000074ae uxth r3, r3               |     r3 = (int16_t) r3;
    0x000074b0 cmp r3, 2                 |     
    0x000074b2 it ls                     |     
                                         |     if (r3 > 2) {
    0x000074b4 ldrbls r1, [r0, r3]       |         r1 = *((r0 + r3));
                                         |     }
                                         |     if (r3 < 2) {
    0x000074b6 bls 0x74d2                |         goto label_5;
                                         |     }
    0x000074b8 add r2, r0                |     r2 += r0;
    0x000074ba b 0x74c0                  |     
                                         |     while (ip < 9) {
    0x000074bc cmp r3, 2                 |         
                                         |         if (r3 == 2) {
    0x000074be beq 0x74de                |             goto label_6;
                                         |         }
    0x000074c0 ldrb r1, [r2, -0x1]!      |         r1 = *((r2 -= 0x1));
    0x000074c4 subs r3, 1                |         r3--;
    0x000074c6 uxth r3, r3               |         r3 = (int16_t) r3;
    0x000074c8 sub.w ip, r1, 0x30        |         
    0x000074cc cmp.w ip, 9               |         
    0x000074d0 bls 0x74bc                |         
                                         |     }
                                         |     do {
                                         | label_5:
    0x000074d2 sub.w r0, r1, 0x2d        |         r0 = r1 - 0x2d;
    0x000074d6 clz r0, r0                |         r0 &= r0;
    0x000074da lsrs r0, r0, 5            |         r0 >>= 5;
    0x000074dc bx lr                     |         return r0;
                                         | label_6:
    0x000074de ldrb r1, [r0, 2]          |         r1 = *((r0 + 2));
    0x000074e0 b 0x74d2                  |         
                                         |     } while (1);
                                         | label_3:
    0x000074e2 ldrb r1, [r0, 2]          |     r1 = *((r0 + 2));
    0x000074e4 movs r4, 2                |     r4 = 2;
    0x000074e6 b 0x747c                  |     goto label_0;
                                         | }

[*] Function strcpy used 1 times mDNSResponderPosix