[*] Binary protection state of conf-migrate

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


[*] Function strcpy tear down of conf-migrate

    ; assembly                           | /* r2dec pseudo code output */
                                         | /* /logs/firmware/unblob_extracted/firmware_extract/4325012-58052244.squashfs_v4_le_extract/usr/libexec/conf-migrate @ 0x295c */
                                         | #include <stdint.h>
                                         |  
    ; (fcn) fcn.0000295c ()              | void fcn_0000295c () {
    0x0000295c lui gp, 2                 |     
    0x00002960 addiu gp, gp, -0x694c     |     
    0x00002964 addu gp, gp, t9           |     gp += t9;
    0x00002968 addiu sp, sp, -0xf8       |     
    0x0000296c lw t9, -0x7f80(gp)        |     t9 = sym.imp.__lxstat;
    0x00002970 sw s2, 0xd8(sp)           |     *(var_d8h) = s2;
    0x00002974 lw s2, -0x7f00(gp)        |     s2 = *((gp - 8128));
    0x00002978 sw gp, 0x10(sp)           |     *(var_10h_2) = gp;
    0x0000297c sw s5, 0xe4(sp)           |     *(var_e4h) = s5;
    0x00002980 lw v0, (s2)               |     v0 = *(s2);
    0x00002984 sw s3, 0xdc(sp)           |     *(var_dch) = s3;
    0x00002988 sw s0, 0xd0(sp)           |     *(var_d0h) = s0;
    0x0000298c sw ra, 0xf4(sp)           |     *(var_f4h) = ra;
    0x00002990 sw fp, 0xf0(sp)           |     *(var_f0h) = fp;
    0x00002994 sw s7, 0xec(sp)           |     *(var_ech) = s7;
    0x00002998 sw s6, 0xe8(sp)           |     *(var_e8h) = s6;
    0x0000299c sw s4, 0xe0(sp)           |     *(var_e0h) = s4;
    0x000029a0 sw s1, 0xd4(sp)           |     *(var_d4h) = s1;
    0x000029a4 move s5, a0               |     s5 = a0;
    0x000029a8 sw zero, (a0)             |     *(a0) = 0;
    0x000029ac move s0, a2               |     s0 = a2;
    0x000029b0 addiu a0, zero, 3         |     a0 = 3;
    0x000029b4 addiu a2, sp, 0x3c        |     a2 = sp + 0x3c;
    0x000029b8 sw v0, 0xcc(sp)           |     *(var_cch) = v0;
    0x000029bc move s3, a1               |     s3 = a1;
    0x000029c0 jalr t9                   |     t9 ();
    0x000029c4 lw gp, 0x10(sp)           |     gp = *(var_10h_2);
                                         |     if (v0 < 0) {
    0x000029c8 bltz v0, 0x2ae0           |         goto label_3;
                                         |     }
    0x000029cc lw v0, 0x50(sp)           |     v0 = *(var_50h);
    0x000029d0 ori v1, zero, 0x8000      |     v1 = 0x8000;
    0x000029d4 andi v0, v0, 0xf000       |     v0 &= 0xf000;
    0x000029d8 lw t9, -0x7f30(gp)        |     t9 = sym.imp.open;
                                         |     if (v0 == v1) {
    0x000029dc beq v0, v1, 0x2a3c        |         goto label_4;
                                         |     }
    0x000029e0 lw a1, -0x7fdc(gp)        |     a1 = *((gp - 8183));
    0x000029e4 lw t9, -0x7fd4(gp)        |     t9 = sym.msg;
    0x000029e8 move a2, s3               |     a2 = s3;
    0x000029ec addiu a1, a1, 0x3880      |     a1 += str.Not_a_regular_file__s.;
    0x000029f0 addiu a0, zero, 3         |     a0 = 3;
    0x000029f4 bal 0x30a0                |     sym_msg ();
    0x000029f8 lw gp, 0x10(sp)           |     gp = *(var_10h_2);
    0x000029fc move v0, zero             |     v0 = 0;
                                         |     do {
                                         | label_0:
    0x00002a00 lw a0, 0xcc(sp)           |         a0 = *(var_cch);
    0x00002a04 lw v1, (s2)               |         v1 = *(s2);
    0x00002a08 lw ra, 0xf4(sp)           |         ra = *(var_f4h);
                                         |         if (a0 != v1) {
    0x00002a0c bne a0, v1, 0x2d20        |             goto label_5;
                                         |         }
    0x00002a10 lw fp, 0xf0(sp)           |         fp = *(var_f0h);
    0x00002a14 lw s7, 0xec(sp)           |         s7 = *(var_ech);
    0x00002a18 lw s6, 0xe8(sp)           |         s6 = *(var_e8h);
    0x00002a1c lw s5, 0xe4(sp)           |         s5 = *(var_e4h);
    0x00002a20 lw s4, 0xe0(sp)           |         s4 = *(var_e0h);
    0x00002a24 lw s3, 0xdc(sp)           |         s3 = *(var_dch);
    0x00002a28 lw s2, 0xd8(sp)           |         s2 = *(var_d8h);
    0x00002a2c lw s1, 0xd4(sp)           |         s1 = *(var_d4h);
    0x00002a30 lw s0, 0xd0(sp)           |         s0 = *(var_d0h);
    0x00002a34 addiu sp, sp, 0xf8        |         
    0x00002a38 jr ra                     |         return v0;
                                         | label_4:
    0x00002a3c move a1, zero             |         a1 = 0;
    0x00002a40 move a0, s3               |         a0 = s3;
    0x00002a44 jalr t9                   |         t9 ();
    0x00002a48 move s0, v0               |         s0 = v0;
    0x00002a4c lw gp, 0x10(sp)           |         gp = *(var_10h_2);
                                         |         if (v0 < 0) {
    0x00002a50 bltz v0, 0x2cd4           |             goto label_6;
                                         |         }
    0x00002a54 lw v0, -0x7fdc(gp)        |         v0 = *((gp - 8183));
    0x00002a58 lw a0, 0x6c(sp)           |         a0 = *(var_6ch);
    0x00002a5c addiu t9, v0, 0x2900      |         t9 = v0 + fcn.00002900;
    0x00002a60 addiu a0, a0, 1           |         a0++;
    0x00002a64 sw t9, 0x28(sp)           |         *(var_28h) = t9;
    0x00002a68 bal 0x2900                |         fcn_00002900 ();
    0x00002a6c lw gp, 0x10(sp)           |         gp = *(var_10h_2);
    0x00002a70 lw a2, 0x6c(sp)           |         a2 = *(var_6ch);
    0x00002a74 move a1, v0               |         a1 = v0;
    0x00002a78 lw t9, -0x7ef0(gp)        |         t9 = sym.imp.read;
    0x00002a7c move a0, s0               |         a0 = s0;
    0x00002a80 move s7, v0               |         s7 = v0;
    0x00002a84 jalr t9                   |         t9 ();
    0x00002a88 move s1, v0               |         s1 = v0;
    0x00002a8c lw gp, 0x10(sp)           |         gp = *(var_10h_2);
                                         |         if (v0 < 0) {
    0x00002a90 bltz v0, 0x2b4c           |             goto label_7;
                                         |         }
    0x00002a94 lw t9, -0x7f90(gp)        |         t9 = sym.imp.close;
    0x00002a98 move a0, s0               |         a0 = s0;
    0x00002a9c jalr t9                   |         t9 ();
    0x00002aa0 lw v0, 0x6c(sp)           |         v0 = *(var_6ch);
    0x00002aa4 lw gp, 0x10(sp)           |         gp = *(var_10h_2);
                                         |         if (v0 == s1) {
    0x00002aa8 beq v0, s1, 0x2b7c        |             goto label_8;
                                         |         }
    0x00002aac lw a1, -0x7fdc(gp)        |         a1 = *((gp - 8183));
    0x00002ab0 lw t9, -0x7fd4(gp)        |         t9 = sym.msg;
    0x00002ab4 move a2, s3               |         a2 = s3;
    0x00002ab8 addiu a1, a1, 0x3c84      |         a1 += str.Short_read_of__s.;
    0x00002abc addiu a0, zero, 3         |         a0 = 3;
    0x00002ac0 bal 0x30a0                |         sym_msg ();
    0x00002ac4 lw gp, 0x10(sp)           |         gp = *(var_10h_2);
                                         | label_1:
    0x00002ac8 lw t9, -0x7efc(gp)        |         t9 = sym.imp.free;
    0x00002acc move a0, s7               |         a0 = s7;
    0x00002ad0 jalr t9                   |         t9 ();
    0x00002ad4 lw gp, 0x10(sp)           |         gp = *(var_10h_2);
    0x00002ad8 move v0, zero             |         v0 = 0;
    0x00002adc b 0x2a00                  |         
                                         |     } while (1);
                                         | label_3:
    0x00002ae0 lw t9, -0x7f50(gp)        |     t9 = sym.imp.__errno_location;
    0x00002ae4 jalr t9                   |     t9 ();
    0x00002ae8 nop                       |     
    0x00002aec lw gp, 0x10(sp)           |     gp = *(var_10h_2);
    0x00002af0 lw v1, (v0)               |     v1 = *(v0);
    0x00002af4 addiu v0, zero, 2         |     v0 = 2;
    0x00002af8 move a2, s3               |     a2 = s3;
    0x00002afc lw t9, -0x7fd4(gp)        |     t9 = sym.msg;
                                         |     if (v1 == v0) {
    0x00002b00 bne v1, v0, 0x2b0c        |         
                                         |         if (s0 == 0) {
    0x00002b04 beql s0, zero, 0x2b28     |             goto label_9;
                                         |         }
    0x00002b08 lw a1, -0x7fdc(gp)        |         a1 = *((gp - 8183));
                                         |     }
    0x00002b0c lw a1, -0x7fdc(gp)        |     a1 = *((gp - 8183));
    0x00002b10 addiu a0, zero, 3         |     a0 = 3;
    0x00002b14 addiu a1, a1, 0x3650      |     a1 += str.Could_not_stat__s:__m;
    0x00002b18 bal 0x30a0                |     sym_msg ();
    0x00002b1c lw gp, 0x10(sp)           |     gp = *(var_10h_2);
    0x00002b20 move v0, zero             |     v0 = 0;
    0x00002b24 b 0x2a00                  |     goto label_0;
                                         | label_9:
    0x00002b28 addiu a0, zero, 4         |     a0 = 4;
    0x00002b2c addiu a1, a1, 0x3c40      |     a1 += str.File__s_does_not_exist._Will_not_translate_ownership_of_files.;
    0x00002b30 bal 0x30a0                |     sym_msg ();
    0x00002b34 lw gp, 0x10(sp)           |     gp = *(var_10h_2);
    0x00002b38 addiu a0, zero, 1         |     a0 = 1;
    0x00002b3c addiu v0, zero, 1         |     v0 = 1;
    0x00002b40 lw v1, -0x7fc0(gp)        |     v1 = *((gp - 8176));
    0x00002b44 sb a0, 0x4150(v1)         |     *((v1 + 16720)) = a0;
    0x00002b48 b 0x2a00                  |     goto label_0;
                                         | label_7:
    0x00002b4c lw a1, -0x7fdc(gp)        |     a1 = *((gp - 8183));
    0x00002b50 lw t9, -0x7fd4(gp)        |     t9 = sym.msg;
    0x00002b54 move a2, s3               |     a2 = s3;
    0x00002b58 addiu a1, a1, 0x38d0      |     a1 += str.Could_not_read__s:__m;
    0x00002b5c addiu a0, zero, 3         |     a0 = 3;
    0x00002b60 bal 0x30a0                |     sym_msg ();
    0x00002b64 lw gp, 0x10(sp)           |     gp = *(var_10h_2);
    0x00002b68 lw t9, -0x7f90(gp)        |     t9 = sym.imp.close;
    0x00002b6c move a0, s0               |     a0 = s0;
    0x00002b70 jalr t9                   |     t9 ();
    0x00002b74 lw gp, 0x10(sp)           |     gp = *(var_10h_2);
    0x00002b78 b 0x2ac8                  |     goto label_1;
                                         | label_8:
    0x00002b7c lw s6, -0x7fdc(gp)        |     s6 = *((gp - 8183));
    0x00002b80 addu v0, s7, v0           |     v0 = s7 + v0;
    0x00002b84 lw t9, -0x7f60(gp)        |     t9 = sym.imp.strtok;
    0x00002b88 sb zero, (v0)             |     *(v0) = 0;
    0x00002b8c addiu a1, s6, 0x3c98      |     a1 = s6 + 0x3c98;
    0x00002b90 move a0, s7               |     a0 = s7;
    0x00002b94 sw zero, 0x34(sp)         |     *(var_34h) = 0;
    0x00002b98 jalr t9                   |     t9 ();
    0x00002b9c move s1, v0               |     s1 = v0;
    0x00002ba0 lw gp, 0x10(sp)           |     gp = *(var_10h_2);
                                         |     if (v0 == 0) {
    0x00002ba4 beqz v0, 0x2d18           |         goto label_10;
                                         |     }
    0x00002ba8 lw fp, -0x7fdc(gp)        |     fp = *((gp - 8183));
    0x00002bac addiu v0, sp, 0x34        |     v0 = sp + 0x34;
    0x00002bb0 sw v0, 0x2c(sp)           |     *(var_2ch) = v0;
    0x00002bb4 addiu v0, fp, 0x3c9c      |     v0 = fp + str.Bad_line__s_found_in__s.;
    0x00002bb8 sw v0, 0x20(sp)           |     *(var_20h_2) = v0;
    0x00002bbc addiu fp, sp, 0x38        |     fp = sp + 0x38;
    0x00002bc0 addiu s6, s6, 0x3c98      |     s6 += 0x3c98;
    0x00002bc4 b 0x2c50                  |     
                                         |     while (v0 != 0) {
    0x00002bc8 move a0, s0               |         a0 = s0;
    0x00002bcc addiu a2, zero, 0xa       |         a2 = 0xa;
    0x00002bd0 move a1, fp               |         a1 = fp;
    0x00002bd4 jalr t9                   |         t9 ();
    0x00002bd8 lw a0, 0x38(sp)           |         a0 = *(var_38h);
    0x00002bdc lw v1, 0x1c(sp)           |         v1 = *(var_1ch_3);
    0x00002be0 lw gp, 0x10(sp)           |         gp = *(var_10h_2);
    0x00002be4 sw v0, 0x24(sp)           |         *(var_24h_2) = v0;
                                         |         if (a0 != v1) {
    0x00002be8 bne a0, v1, 0x2cb4        |             goto label_11;
                                         |         }
    0x00002bec lw t9, 0x28(sp)           |         t9 = *(var_28h);
                                         |         if (s0 == a0) {
    0x00002bf0 beq s0, a0, 0x2cb4        |             goto label_11;
                                         |         }
    0x00002bf4 addiu a0, zero, 0x2c      |         a0 = 0x2c;
    0x00002bf8 jalr t9                   |         t9 ();
    0x00002bfc lw gp, 0x10(sp)           |         gp = *(var_10h_2);
    0x00002c00 lw a2, 0x24(sp)           |         a2 = *(var_24h_2);
    0x00002c04 sb zero, (s4)             |         *(s4) = 0;
    0x00002c08 lw t9, -0x7f18(gp)        |         t9 = sym.imp.strcpy
    0x00002c0c move a1, s1               |         a1 = s1;
    0x00002c10 sw a2, 4(v0)              |         *((v0 + 1)) = a2;
    0x00002c14 addiu a0, v0, 8           |         a0 = v0 + 8;
    0x00002c18 move s0, v0               |         s0 = v0;
    0x00002c1c jalr t9                   |         t9 ();
    0x00002c20 lw v0, 0x2c(sp)           |         v0 = *(var_2ch);
    0x00002c24 lw gp, 0x10(sp)           |         gp = *(var_10h_2);
    0x00002c28 sw s0, 0x2c(sp)           |         *(var_2ch) = s0;
    0x00002c2c sw zero, (s0)             |         *(s0) = 0;
    0x00002c30 sw s0, (v0)               |         *(v0) = s0;
                                         | label_2:
    0x00002c34 lw t9, -0x7f60(gp)        |         t9 = sym.imp.strtok;
    0x00002c38 move a1, s6               |         a1 = s6;
    0x00002c3c move a0, zero             |         a0 = 0;
    0x00002c40 jalr t9                   |         t9 ();
    0x00002c44 move s1, v0               |         s1 = v0;
    0x00002c48 lw gp, 0x10(sp)           |         gp = *(var_10h_2);
                                         |         if (v0 == 0) {
    0x00002c4c beqz v0, 0x2cf8           |             goto label_12;
                                         |         }
    0x00002c50 lw t9, -0x7f38(gp)        |         t9 = sym.imp.strchr;
    0x00002c54 addiu a1, zero, 0x3a      |         a1 = 0x3a;
    0x00002c58 move a0, s1               |         a0 = s1;
    0x00002c5c jalr t9                   |         t9 ();
    0x00002c60 move s4, v0               |         s4 = v0;
    0x00002c64 lw gp, 0x10(sp)           |         gp = *(var_10h_2);
                                         |         if (v0 == 0) {
    0x00002c68 beqz v0, 0x2cb4           |             goto label_11;
                                         |         }
    0x00002c6c lw t9, -0x7f38(gp)        |         t9 = sym.imp.strchr;
    0x00002c70 addiu a1, zero, 0x3a      |         a1 = 0x3a;
    0x00002c74 addiu a0, v0, 1           |         a0 = v0 + 1;
    0x00002c78 jalr t9                   |         t9 ();
    0x00002c7c lw gp, 0x10(sp)           |         gp = *(var_10h_2);
                                         |         if (v0 == 0) {
    0x00002c80 beqz v0, 0x2cb4           |             goto label_11;
                                         |         }
    0x00002c84 lw t9, -0x7f38(gp)        |         t9 = sym.imp.strchr;
    0x00002c88 addiu s0, v0, 1           |         s0 = v0 + 1;
    0x00002c8c addiu a1, zero, 0x3a      |         a1 = 0x3a;
    0x00002c90 move a0, s0               |         a0 = s0;
    0x00002c94 jalr t9                   |         t9 ();
    0x00002c98 sw v0, 0x1c(sp)           |         *(var_1ch_3) = v0;
    0x00002c9c lw gp, 0x10(sp)           |         gp = *(var_10h_2);
                                         |         if (v0 == 0) {
    0x00002ca0 beqz v0, 0x2cb4           |             goto label_11;
                                         |         }
    0x00002ca4 subu v0, s4, s1           |         __asm ("subu v0, s4, s1");
    0x00002ca8 slti v0, v0, 0x21         |         v0 = (v0 < 0x21) ? 1 : 0;
    0x00002cac lw t9, -0x7f34(gp)        |         t9 = sym.imp.strtoul;
    0x00002cb0 bnez v0, 0x2bc8           |         
                                         |     }
                                         | label_11:
    0x00002cb4 lw t9, -0x7fd4(gp)        |     t9 = sym.msg;
    0x00002cb8 lw a1, 0x20(sp)           |     a1 = *(var_20h_2);
    0x00002cbc move a3, s3               |     a3 = s3;
    0x00002cc0 move a2, s1               |     a2 = s1;
    0x00002cc4 addiu a0, zero, 4         |     a0 = 4;
    0x00002cc8 bal 0x30a0                |     sym_msg ();
    0x00002ccc lw gp, 0x10(sp)           |     gp = *(var_10h_2);
    0x00002cd0 b 0x2c34                  |     goto label_2;
                                         | label_6:
    0x00002cd4 lw a1, -0x7fdc(gp)        |     a1 = *((gp - 8183));
    0x00002cd8 lw t9, -0x7fd4(gp)        |     t9 = sym.msg;
    0x00002cdc move a2, s3               |     a2 = s3;
    0x00002ce0 addiu a1, a1, 0x389c      |     a1 += str.Could_not_open__s:__m;
    0x00002ce4 addiu a0, zero, 3         |     a0 = 3;
    0x00002ce8 bal 0x30a0                |     sym_msg ();
    0x00002cec lw gp, 0x10(sp)           |     gp = *(var_10h_2);
    0x00002cf0 move v0, zero             |     v0 = 0;
    0x00002cf4 b 0x2a00                  |     goto label_0;
                                         | label_12:
    0x00002cf8 lw s0, 0x34(sp)           |     s0 = *(var_34h);
                                         |     do {
    0x00002cfc lw t9, -0x7efc(gp)        |         t9 = sym.imp.free;
    0x00002d00 move a0, s7               |         a0 = s7;
    0x00002d04 jalr t9                   |         t9 ();
    0x00002d08 lw gp, 0x10(sp)           |         gp = *(var_10h_2);
    0x00002d0c addiu v0, zero, 1         |         v0 = 1;
    0x00002d10 sw s0, (s5)               |         *(s5) = s0;
    0x00002d14 b 0x2a00                  |         goto label_0;
                                         | label_10:
    0x00002d18 move s0, zero             |         s0 = 0;
    0x00002d1c b 0x2cfc                  |         
                                         |     } while (1);
                                         | label_5:
    0x00002d20 lw t9, -0x7f08(gp)        |     t9 = sym.imp.__stack_chk_fail;
    0x00002d24 jalr t9                   |     t9 ();
    0x00002d28 nop                       |     
                                         | }

[*] Function strcpy used 2 times conf-migrate