[*] Binary protection state of libavahi-common.so.3.5.3

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


[*] Function sprintf tear down of libavahi-common.so.3.5.3

    ; 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/lib/libavahi-common.so.3.5.3 @ 0x27d0 */
                                     | #include <stdint.h>
                                     |  
    ; (fcn) sym.avahi_malloc ()      | uint32_t avahi_malloc (int32_t arg1) {
                                     |     r0 = arg1;
    0x000027d0 subs r3, r0, 0        |     r3 = r0 - 0;
                                     |     if (r3 != r0) {
    0x000027d4 beq 0x2838            |         
    0x000027d8 ldr r3, [pc, 0x60]    |         
    0x000027dc push {r4, lr}         |         
    0x000027e0 add r3, pc, r3        |         r3 = pc + r3;
    0x000027e4 ldr r3, [r3]          |         r3 = *(0x283c);
    0x000027e8 cmp r3, 0             |         
                                     |         if (r3 == 0) {
    0x000027ec bne 0x2800            |             
    0x000027f0 bl 0x21d4             |             r0 = malloc (r0);
    0x000027f4 cmp r0, 0             |             
    0x000027f8 popne {r4, pc}        |             
    0x000027fc bl 0x2558             |             entry0 ();
                                     |         }
    0x00002800 ldr r3, [r3]          |         r3 = *(r3);
    0x00002804 cmp r3, 0             |         
                                     |         if (r3 == 0) {
    0x00002808 bne 0x2830            |             
    0x0000280c ldr r3, [pc, 0x30]    |             
    0x00002810 ldr r1, [pc, 0x30]    |             r1 = *(0x2844);
    0x00002814 ldr r0, [pc, 0x30]    |             r0 = *(0x2848);
    0x00002818 add r3, pc, r3        |             r3 = pc + r3;
    0x0000281c add r3, r3, 0x1d      |             r3 = 0x285d;
    0x00002820 mov r2, 0x6d          |             r2 = 0x6d;
    0x00002824 add r1, pc, r1        |             r1 = pc + r1;
    0x00002828 add r0, pc, r0        |             r0 = pc + r0;
    0x0000282c bl 0x24ec             |             assert ();
                                     |         }
    0x00002830 pop {r4, lr}          |         
    0x00002834 bx r3                 |         return uint32_t (*r3)() ();
                                     |     }
    0x00002838 mov r0, r3            |     r0 = r3;
    0x0000283c bx lr                 |     return r0;
                                     | }
    ; 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/lib/libavahi-common.so.3.5.3 @ 0x2850 */
                                         | #include <stdint.h>
                                         |  
    ; (fcn) sym.avahi_malloc0 ()         | void avahi_malloc0 (int32_t arg1) {
                                         |     r0 = arg1;
    0x00002850 push {r4, r5, r6, lr}     |     
    0x00002854 subs r4, r0, 0            |     r4 = r0 - 0;
                                         |     if (r4 != r0) {
    0x00002858 beq 0x28f4                |         
    0x0000285c ldr r3, [pc, 0x98]        |         
    0x00002860 mov r6, r4                |         r6 = r4;
    0x00002864 add r3, pc, r3            |         r3 = pc + r3;
    0x00002868 ldr r3, [r3]              |         r3 = *(0x28f8);
    0x0000286c cmp r3, 0                 |         
                                         |         if (r3 == 0) {
    0x00002870 bne 0x288c                |             
    0x00002874 mov r1, r4                |             r1 = r4;
    0x00002878 mov r0, 1                 |             r0 = 1;
    0x0000287c bl 0x2288                 |             r0 = calloc (r0, r1);
    0x00002880 subs r4, r0, 0            |             r4 = r0 - 0;
                                         |             if (r4 != r0) {
    0x00002884 bne 0x28f4                |                 goto label_0;
                                         |             }
    0x00002888 bl 0x2558                 |             entry0 ();
                                         |         }
    0x0000288c ldr r5, [r3, 0xc]         |         r5 = *((r3 + 0xc));
    0x00002890 cmp r5, 0                 |         
                                         |         if (r5 != 0) {
    0x00002894 beq 0x28ac                |             
    0x00002898 mov r1, r4                |             r1 = r4;
    0x0000289c mov r3, r5                |             r3 = r5;
    0x000028a0 mov r0, 1                 |             r0 = 1;
    0x000028a4 pop {r4, r5, r6, lr}      |             
    0x000028a8 bx r3                     |             return uint32_t (*r3)() ();
                                         |         }
    0x000028ac ldr r3, [r3]              |         r3 = *(r3);
    0x000028b0 cmp r3, 0                 |         
                                         |         if (r3 == 0) {
    0x000028b4 bne 0x28dc                |             
    0x000028b8 ldr r3, [pc, 0x40]        |             
    0x000028bc ldr r1, [pc, 0x40]        |             r1 = *(0x2900);
    0x000028c0 ldr r0, [pc, 0x40]        |             r0 = *(0x2904);
    0x000028c4 add r3, pc, r3            |             r3 = pc + r3;
    0x000028c8 add r3, r3, 0x2a          |             r3 = 0x2926;
    0x000028cc mov r2, 0x7d              |             r2 = 0x7d;
    0x000028d0 add r1, pc, r1            |             r1 = pc + r1;
    0x000028d4 add r0, pc, r0            |             r0 = pc + r0;
    0x000028d8 bl 0x24ec                 |             assert ();
                                         |         }
    0x000028dc blx r3                    |         r0 = uint32_t (*r3)(uint32_t) (r0);
    0x000028e0 subs r4, r0, 0            |         r4 = r0 - 0;
                                         |         if (r4 == r0) {
    0x000028e4 beq 0x28f4                |             goto label_0;
                                         |         }
    0x000028e8 mov r2, r6                |         r2 = r6;
    0x000028ec mov r1, r5                |         r1 = r5;
    0x000028f0 bl 0x23b4                 |         memset (r0, r1, r2);
                                         |     }
                                         | label_0:
    0x000028f4 mov r0, r4                |     r0 = r4;
    0x000028f8 pop {r4, r5, r6, pc}      |     
                                         | }
    ; 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/lib/libavahi-common.so.3.5.3 @ 0x2850 */
                                         | #include <stdint.h>
                                         |  
    ; (fcn) sym.avahi_malloc0 ()         | void avahi_malloc0 (int32_t arg1) {
                                         |     r0 = arg1;
    0x00002850 push {r4, r5, r6, lr}     |     
    0x00002854 subs r4, r0, 0            |     r4 = r0 - 0;
                                         |     if (r4 != r0) {
    0x00002858 beq 0x28f4                |         
    0x0000285c ldr r3, [pc, 0x98]        |         
    0x00002860 mov r6, r4                |         r6 = r4;
    0x00002864 add r3, pc, r3            |         r3 = pc + r3;
    0x00002868 ldr r3, [r3]              |         r3 = *(0x28f8);
    0x0000286c cmp r3, 0                 |         
                                         |         if (r3 == 0) {
    0x00002870 bne 0x288c                |             
    0x00002874 mov r1, r4                |             r1 = r4;
    0x00002878 mov r0, 1                 |             r0 = 1;
    0x0000287c bl 0x2288                 |             r0 = calloc (r0, r1);
    0x00002880 subs r4, r0, 0            |             r4 = r0 - 0;
                                         |             if (r4 != r0) {
    0x00002884 bne 0x28f4                |                 goto label_0;
                                         |             }
    0x00002888 bl 0x2558                 |             entry0 ();
                                         |         }
    0x0000288c ldr r5, [r3, 0xc]         |         r5 = *((r3 + 0xc));
    0x00002890 cmp r5, 0                 |         
                                         |         if (r5 != 0) {
    0x00002894 beq 0x28ac                |             
    0x00002898 mov r1, r4                |             r1 = r4;
    0x0000289c mov r3, r5                |             r3 = r5;
    0x000028a0 mov r0, 1                 |             r0 = 1;
    0x000028a4 pop {r4, r5, r6, lr}      |             
    0x000028a8 bx r3                     |             return uint32_t (*r3)() ();
                                         |         }
    0x000028ac ldr r3, [r3]              |         r3 = *(r3);
    0x000028b0 cmp r3, 0                 |         
                                         |         if (r3 == 0) {
    0x000028b4 bne 0x28dc                |             
    0x000028b8 ldr r3, [pc, 0x40]        |             
    0x000028bc ldr r1, [pc, 0x40]        |             r1 = *(0x2900);
    0x000028c0 ldr r0, [pc, 0x40]        |             r0 = *(0x2904);
    0x000028c4 add r3, pc, r3            |             r3 = pc + r3;
    0x000028c8 add r3, r3, 0x2a          |             r3 = 0x2926;
    0x000028cc mov r2, 0x7d              |             r2 = 0x7d;
    0x000028d0 add r1, pc, r1            |             r1 = pc + r1;
    0x000028d4 add r0, pc, r0            |             r0 = pc + r0;
    0x000028d8 bl 0x24ec                 |             assert ();
                                         |         }
    0x000028dc blx r3                    |         r0 = uint32_t (*r3)(uint32_t) (r0);
    0x000028e0 subs r4, r0, 0            |         r4 = r0 - 0;
                                         |         if (r4 == r0) {
    0x000028e4 beq 0x28f4                |             goto label_0;
                                         |         }
    0x000028e8 mov r2, r6                |         r2 = r6;
    0x000028ec mov r1, r5                |         r1 = r5;
    0x000028f0 bl 0x23b4                 |         memset (r0, r1, r2);
                                         |     }
                                         | label_0:
    0x000028f4 mov r0, r4                |     r0 = r4;
    0x000028f8 pop {r4, r5, r6, pc}      |     
                                         | }
    ; 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/lib/libavahi-common.so.3.5.3 @ 0x2974 */
                                     | #include <stdint.h>
                                     |  
    ; (fcn) sym.avahi_realloc ()     | void avahi_realloc (int32_t arg2, void * ptr) {
                                     |     r1 = arg2;
                                     |     r0 = ptr;
    0x00002974 push {r4, lr}         |     
    0x00002978 subs r4, r1, 0        |     r4 = r1 - 0;
                                     |     if (r4 == r1) {
    0x0000297c bne 0x298c            |         
    0x00002980 bl 0x2258             |         fcn_00002258 ();
    0x00002984 mov r0, r4            |         r0 = r4;
    0x00002988 pop {r4, pc}          |         
                                     |     }
    0x0000298c ldr r3, [pc, 0x54]    |     
    0x00002990 add r3, pc, r3        |     r3 = pc + r3;
    0x00002994 ldr r3, [r3]          |     r3 = *(0x29e4);
    0x00002998 cmp r3, 0             |     
                                     |     if (r3 == 0) {
    0x0000299c bne 0x29b0            |         
    0x000029a0 bl 0x2348             |         r0 = realloc (r0, r1);
    0x000029a4 cmp r0, 0             |         
    0x000029a8 popne {r4, pc}        |         
    0x000029ac bl 0x2558             |         entry0 ();
                                     |     }
    0x000029b0 ldr r3, [r3, 8]       |     r3 = *((r3 + 8));
    0x000029b4 cmp r3, 0             |     
                                     |     if (r3 == 0) {
    0x000029b8 bne 0x29e0            |         
    0x000029bc ldr r3, [pc, 0x28]    |         
    0x000029c0 ldr r1, [pc, 0x28]    |         r1 = *(0x29ec);
    0x000029c4 ldr r0, [pc, 0x28]    |         r0 = *(0x29f0);
    0x000029c8 add r3, pc, r3        |         r3 = pc + r3;
    0x000029cc add r3, r3, 0x43      |         r3 = 0x2a2b;
    0x000029d0 mov r2, 0x9c          |         r2 = 0x9c;
    0x000029d4 add r1, pc, r1        |         r1 = pc + r1;
    0x000029d8 add r0, pc, r0        |         r0 = pc + r0;
    0x000029dc bl 0x24ec             |         assert ();
                                     |     }
    0x000029e0 pop {r4, lr}          |     
    0x000029e4 bx r3                 |     return uint32_t (*r3)() ();
                                     | }

[*] Function sprintf used 1 times libavahi-common.so.3.5.3