[*] Binary protection state of libwssecurity_user_handling.so

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


[*] Function printf tear down of libwssecurity_user_handling.so

    ; assembly                                                       | /* r2dec pseudo code output */
                                                                     | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/lib/libwssecurity_user_handling.so @ 0x3734 */
                                                                     | #include <stdint.h>
                                                                     |  
    ; (fcn) sym.wssecurity_uh_map_vapix_user_to_onvif_group ()       | void wssecurity_uh_map_vapix_user_to_onvif_group (int16_t arg1, int16_t arg2, int16_t arg3) {
                                                                     |     int16_t var_bp_0h;
                                                                     |     int16_t var_0h_2;
                                                                     |     int16_t var_ch_2;
                                                                     |     int16_t var_18h;
                                                                     |     int16_t var_1ch;
                                                                     |     int16_t var_20h;
                                                                     |     int16_t var_30h;
                                                                     |     int16_t var_4ch;
                                                                     |     int16_t var_24ch;
                                                                     |     r0 = arg1;
                                                                     |     r1 = arg2;
                                                                     |     r2 = arg3;
    0x00003734 svcmi 0xf0e92d                                        |     __asm ("svcmi 0xf0e92d");
    0x00003738 sub.w sp, sp, 0x254                                   |     
    0x0000373c str r1, [sp, 0xc]                                     |     var_ch_2 = r1;
    0x0000373e mov sl, r2                                            |     sl = r2;
    0x00003740 movs r3, 0x80                                         |     r3 = 0x80;
    0x00003742 mov r5, r0                                            |     r5 = r0;
    0x00003744 ldr r1, [pc, 0x118]                                   |     
    0x00003746 add r7, sp, 0x18                                      |     r7 += var_18h;
    0x00003748 ldr r2, [pc, 0x118]                                   |     r2 = *(0x3864);
    0x0000374a add.w fp, sp, 0x14                                    |     
    0x0000374e mov.w r0, 0x400                                       |     r0 = 0x400;
    0x00003752 add r6, sp, 0x30                                      |     r6 += var_30h;
    0x00003754 add r1, pc                                            |     r1 = 0x6fb8;
    0x00003756 ldr r2, [r1, r2]                                      |     
    0x00003758 ldr r2, [r2]                                          |     r2 = *(0x6fb8);
    0x0000375a str r2, [sp, 0x24c]                                   |     var_24ch = r2;
    0x0000375c mov.w r2, 0                                           |     r2 = 0;
    0x00003760 str.w r3, [fp]                                        |     __asm ("str.w r3, [fp]");
    0x00003764 blx 0x1b48                                            |     g_strdup_printf ()
    0x00003768 str r7, [sp]                                          |     *(sp) = r7;
    0x0000376a mov r2, r0                                            |     r2 = r0;
    0x0000376c mov r4, r0                                            |     r4 = r0;
    0x0000376e mov.w r3, 0x400                                       |     r3 = 0x400;
    0x00003772 mov r1, r6                                            |     r1 = r6;
    0x00003774 mov r0, r5                                            |     r0 = r5;
    0x00003776 blx 0x1bfc                                            |     g_key_file_load_from_file ();
    0x0000377a ldr r7, [sp, 0x18]                                    |     r7 = var_18h;
    0x0000377c cmp r7, 0                                             |     
                                                                     |     if (r7 == 0) {
    0x0000377e beq 0x3830                                            |         goto label_3;
                                                                     |     }
    0x00003780 mov r0, r5                                            |     r0 = r5;
    0x00003782 add r5, sp, 0x4c                                      |     r5 += var_4ch;
    0x00003784 ldr r1, [r6, 0xc]                                     |     r1 = *((r6 + 0xc));
    0x00003786 mov r3, fp                                            |     r3 = fp;
    0x00003788 mov r2, r5                                            |     r2 = r5;
    0x0000378a blx 0x1c44                                            |     r0 = g_hash_table_insert ();
    0x0000378e mov r6, r0                                            |     r6 = r0;
    0x00003790 mov r0, r4                                            |     r0 = r4;
    0x00003792 adds r3, r6, 1                                        |     r3 = r6 + 1;
                                                                     |     if (r3 == r6) {
    0x00003794 beq 0x380e                                            |         goto label_4;
                                                                     |     }
    0x00003796 movs r6, 0                                            |     r6 = 0;
    0x00003798 blx 0x1a24                                            |     fcn_00001a24 ();
    0x0000379c movs r0, 0x14                                         |     r0 = 0x14;
    0x0000379e str.w r6, [sl]                                        |     __asm ("str.w r6, [sl]");
    0x000037a2 blx 0x1d60                                            |     fcn_00001d60 ();
    0x000037a6 ldr r2, [sp, 0xc]                                     |     r2 = var_ch_2;
    0x000037a8 str r0, [r2]                                          |     *(r2) = r0;
    0x000037aa cmp r0, 0                                             |     
                                                                     |     if (r0 == 0) {
    0x000037ac beq 0x3842                                            |         goto label_5;
                                                                     |     }
    0x000037ae mov.w r0, 0x400                                       |     r0 = 0x400;
    0x000037b2 blx 0x1b48                                            |     g_strdup_printf ()
    0x000037b6 ldr.w r3, [fp]                                        |     r3 = *(fp);
    0x000037ba mov r4, r0                                            |     r4 = r0;
    0x000037bc cmp r3, 0                                             |     
                                                                     |     if (r3 <= 0) {
    0x000037be ble 0x380a                                            |         goto label_6;
                                                                     |     }
    0x000037c0 mov r8, r6                                            |     r8 = r6;
    0x000037c2 mov.w sb, 0x400                                       |     sb = 0x400;
    0x000037c6 add r6, sp, 0x1c                                      |     r6 += var_1ch;
    0x000037c8 add r7, sp, 0x20                                      |     r7 += var_20h;
                                                                     |     if (r4 == 0) {
                                                                     | label_0:
    0x000037ca cbz r4, 0x37f0                                        |         goto label_7;
                                                                     |     }
                                                                     |     do {
    0x000037cc ldr r0, [r5]                                          |         r0 = *(r5);
    0x000037ce mov r3, sb                                            |         r3 = sb;
    0x000037d0 mov r2, r4                                            |         r2 = r4;
    0x000037d2 mov r1, r7                                            |         r1 = r7;
    0x000037d4 str r6, [sp]                                          |         *(sp) = r6;
    0x000037d6 blx 0x1cc0                                            |         r0 = fcn_00001cc0 ();
    0x000037da cmp r0, 0x22                                          |         
                                                                     |         if (r0 != 0x22) {
    0x000037dc bne 0x37f0                                            |             goto label_7;
                                                                     |         }
    0x000037de lsl.w sb, sb, 1                                       |         sb <<= 1;
    0x000037e2 mov r0, r4                                            |         r0 = r4;
    0x000037e4 mov r1, sb                                            |         r1 = sb;
    0x000037e6 blx 0x1a9c                                            |         r0 = fcn_00001a9c ();
    0x000037ea mov r4, r0                                            |         r4 = r0;
    0x000037ec cmp r4, 0                                             |         
    0x000037ee bne 0x37cc                                            |         
                                                                     |     } while (r4 != 0);
                                                                     | label_7:
    0x000037f0 ldr r0, [r6]                                          |     r0 = *(r6);
    0x000037f2 mov r2, sl                                            |     r2 = sl;
    0x000037f4 ldr r1, [sp, 0xc]                                     |     r1 = var_ch_2;
    0x000037f6 add.w r8, r8, 1                                       |     r8++;
    0x000037fa adds r5, 4                                            |     r5 += 4;
    0x000037fc ldr r0, [r0]                                          |     r0 = *(r0);
    0x000037fe bl 0x2f34                                             |     fcn_00002f34 (r0, r1, r2);
    0x00003802 ldr.w r2, [fp]                                        |     r2 = *(fp);
    0x00003806 cmp r2, r8                                            |     
                                                                     |     if (r2 > r8) {
    0x00003808 bgt 0x37ca                                            |         goto label_0;
                                                                     |     }
                                                                     | label_6:
    0x0000380a movs r6, 0                                            |     r6 = 0;
    0x0000380c mov r0, r4                                            |     r0 = r4;
                                                                     | label_4:
    0x0000380e blx 0x1a24                                            |     fcn_00001a24 ();
                                                                     |     do {
                                                                     | label_1:
    0x00003812 ldr r2, [pc, 0x54]                                    |         
    0x00003814 ldr r3, [pc, 0x4c]                                    |         r3 = *(0x3864);
    0x00003816 add r2, pc                                            |         r2 = 0x7084;
    0x00003818 ldr r3, [r2, r3]                                      |         r3 = *(0x7084);
    0x0000381a ldr r2, [r3]                                          |         r2 = *(0x7084);
    0x0000381c ldr r3, [sp, 0x24c]                                   |         r3 = var_24ch;
    0x0000381e eors r2, r3                                           |         r2 ^= r3;
    0x00003820 mov.w r3, 0                                           |         r3 = 0;
                                                                     |         if (r2 != r3) {
    0x00003824 bne 0x383e                                            |             goto label_8;
                                                                     |         }
    0x00003826 mov r0, r6                                            |         r0 = r6;
    0x00003828 add.w sp, sp, 0x254                                   |         
    0x0000382c pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc}            |         
                                                                     |         if (r0 != 0) {
                                                                     | label_3:
    0x00003830 cbnz r0, 0x384c                                       |             goto label_9;
                                                                     |         }
                                                                     | label_2:
    0x00003832 mov r0, r4                                            |         r0 = r4;
    0x00003834 mov.w r6, -1                                          |         r6 = -1;
    0x00003838 blx 0x1a24                                            |         fcn_00001a24 ();
    0x0000383c b 0x3812                                              |         
                                                                     |     } while (1);
                                                                     | label_8:
    0x0000383e blx 0x1a90                                            |     fcn_00001a90 ();
                                                                     | label_5:
    0x00003842 mov.w r6, -1                                          |     r6 = -1;
    0x00003846 blx 0x19f0                                            |     fcn_000019f0 ();
    0x0000384a b 0x3812                                              |     goto label_1;
                                                                     | label_9:
    0x0000384c ldr r3, [pc, 0x1c]                                    |     
    0x0000384e movs r1, 0x10                                         |     r1 = 0x10;
    0x00003850 ldr r2, [pc, 0x1c]                                    |     
    0x00003852 mov r0, r7                                            |     r0 = r7;
    0x00003854 add r3, pc                                            |     r3 = 0x70c4;
    0x00003856 add r2, pc                                            |     r2 = 0x70ca;
    0x00003858 blx 0x1c9c                                            |     fcn_00001c9c ();
    0x0000385c b 0x3832                                              |     goto label_2;
                                                                     | }

[*] Function printf used 3 times libwssecurity_user_handling.so