Libseccomp: рдмрдЧ: рдЫрджреНрдо рд╕рд┐рд╕реНрдХрд▓ рдХреЗ рд▓рд┐рдП рдмреАрдкреАрдПрдл рдЙрддреНрдкрдиреНрди рди рдХрд░реЗрдВ

рдХреЛ рдирд┐рд░реНрдорд┐рдд 15 рдЬреВрди 2020  ┬╖  20рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ  ┬╖  рд╕реНрд░реЛрдд: seccomp/libseccomp

рдЕрдВрдХ #249 рджреЗрдЦреЗрдВ, рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдпрд╣ рдЯрд┐рдкреНрдкрдгреА :

рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЙрддреНрдкрдиреНрди рдмреАрдкреАрдПрдл рдореЗрдВ рдЧреИрд░-рдореМрдЬреВрдж syscall 4294957285 рдХреА рдЬрд╛рдВрдЪ рдХреНрдпреЛрдВ рдХрд░реЗрдВ?

рд╣рдореЗрдВ рдРрд╕рд╛ рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП рдерд╛, рдФрд░ рд╣рдо рдРрд╕рд╛ рдирд╣реАрдВ рдХрд░рддреЗ рдереЗ, рд▓реЗрдХрд┐рди рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╡рд░реНрддрдорд╛рди libseccomp рдореЗрдВ рдПрдХ рдмрдЧ рд╣реИред

рдЗрд╕ рдмрдЧ рдХреА рд░рд┐рдкреЛрд░реНрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП @vt-alt рдХреЛ рд╢реНрд░реЗрдпред

рд╕рднреА 20 рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

рдиреАрдЪреЗ рджрд┐рдП рдЧрдП рдмреЗрд╣рддрд░ рдорд╕реМрджреЗ рдХреЗ рдкрдХреНрд╖ рдореЗрдВ рд░рд┐рдкреНрд░реЛрдбреНрдпреВрд╕рд░ рдХреЛ рд╣рдЯрд╛рдпрд╛ рдЧрдпрд╛

рд╕реНрдкрд╖реНрдЯ рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдореЗрдВ рдЕрднреА рднреА PFC рдореЗрдВ рдбрд┐рдмрдЧрд┐рдВрдЧ рдЙрджреНрджреЗрд╢реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП рдЫрджреНрдо-рд╕рд┐рд╕рдХреЙрд▓ рдХрд╛ рдЙрддреНрд╕рд░реНрдЬрди рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП, рд▓реЗрдХрд┐рди рд╣рдореЗрдВ рдПрдХ (рдмреЗрдХрд╛рд░) BPF рдлрд╝рд┐рд▓реНрдЯрд░ рдирд┐рдпрдо рдХрд╛ рдЙрддреНрд╕рд░реНрдЬрди рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред

рдореЗрд░реА рд░рд┐рдкреЛрд░реНрдЯ рд╕реЗ рдореБрджреНрджрд╛ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рджред

рд╕реНрдкрд╖реНрдЯ рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдореЗрдВ рдЕрднреА рднреА PFC рдореЗрдВ рдбрд┐рдмрдЧрд┐рдВрдЧ рдЙрджреНрджреЗрд╢реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП рдЫрджреНрдо-рд╕рд┐рд╕рдХреЙрд▓ рдХрд╛ рдЙрддреНрд╕рд░реНрдЬрди рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП, рд▓реЗрдХрд┐рди рд╣рдореЗрдВ рдПрдХ (рдмреЗрдХрд╛рд░) BPF рдлрд╝рд┐рд▓реНрдЯрд░ рдирд┐рдпрдо рдХрд╛ рдЙрддреНрд╕рд░реНрдЬрди рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред

рдХреГрдкрдпрд╛ рдЗрд╕ рдкрд░ рдкреБрдирд░реНрд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВред рдореЗрд░рд╛ рдорд╛рдирдирд╛ тАЛтАЛрд╣реИ рдХрд┐ рдпрд╣ рдХреЗрд╡рд▓ рдЪреАрдЬреЛрдВ рдХреЛ рдЬрдЯрд┐рд▓ рдФрд░ рдЕрд╕реНрдкрд╖реНрдЯ рдХрд░реЗрдЧрд╛ рдпрджрд┐ рдкреАрдПрдлрд╕реА рдмреАрдкреАрдПрдл рдХреЛ рдкреНрд░рддрд┐рдмрд┐рдВрдмрд┐рдд рдирд╣реАрдВ рдХрд░реЗрдЧрд╛ред

рдХреГрдкрдпрд╛ рдЗрд╕ рдкрд░ рдкреБрдирд░реНрд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВред рдореЗрд░рд╛ рдорд╛рдирдирд╛ тАЛтАЛрд╣реИ рдХрд┐ рдпрд╣ рдХреЗрд╡рд▓ рдЪреАрдЬреЛрдВ рдХреЛ рдЬрдЯрд┐рд▓ рдФрд░ рдЕрд╕реНрдкрд╖реНрдЯ рдХрд░реЗрдЧрд╛ рдпрджрд┐ рдкреАрдПрдлрд╕реА рдмреАрдкреАрдПрдл рдХреЛ рдкреНрд░рддрд┐рдмрд┐рдВрдмрд┐рдд рдирд╣реАрдВ рдХрд░реЗрдЧрд╛ред

рдпрджрд┐ рдкреАрдПрдлрд╕реА рд╕реЗ рд╕рд┐рд╕реНрдХрд▓ рдЧрд╛рдпрдм рд╣реИ рддреЛ рд╣рдореЗрдВ рдХрдИ рдлрд░реНрдЬреА рдмрдЧ рд░рд┐рдкреЛрд░реНрдЯ рдкреНрд░рд╛рдкреНрдд рд╣реЛрдВрдЧреА рдЬреЛ рдЗрд╕ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░ рд░рд╣реА рд╣реИрдВ рдХрд┐ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХреИрд╕реЗ (рдЧреИрд░-рдореМрдЬреВрдж) рд╕рд┐рд╕реНрдХреЛрд▓ рдХреЗ рд▓рд┐рдП рдПрдХ рдлрд┐рд▓реНрдЯрд░ рдЬреЛрдбрд╝рдиреЗ рдореЗрдВ рд╡рд┐рдлрд▓ рд╣реЛ рд░рд╣рд╛ рд╣реИред

рдЬреЛ рд▓реЛрдЧ рд╕реНрдпреВрдбреЛ-рд╕рд┐рд╕реНрдХрд▓ рдХреА рдЕрд╡рдзрд╛рд░рдгрд╛ рдХреЛ рд╕рдордЭрддреЗ рд╣реИрдВ, рдЙрдирдХреЗ рд▓рд┐рдП рдЙрдиреНрд╣реЗрдВ рдкреАрдПрдлрд╕реА рдЖрдЙрдЯрдкреБрдЯ рд╕реЗ рд╣рдЯрд╛рдирд╛ рдПрдХ рдЫреЛрдЯреА рд╕реА рдХрд╡рд╛рдпрдж рд╣реИред рдпрд╣ рднреА рдзреНрдпрд╛рди рджреЗрдиреЗ рдпреЛрдЧреНрдп рд╣реИ рдХрд┐ рдкреАрдПрдлрд╕реА рдЖрдЙрдЯрдкреБрдЯ рдХрд╛ рдЙрджреНрджреЗрд╢реНрдп рдмреАрдкреАрдПрдл рдЖрдЙрдЯрдкреБрдЯ рдХреА рдПрдХ рд╕рдЯреАрдХ рдкреНрд░рддрд┐рд▓рд┐рдкрд┐ рдирд╣реАрдВ рд╣реИ, рдпрд╣ рдХреЗрд╡рд▓ рдПрдХ рдбрд┐рдмрдЧрд┐рдВрдЧ рдЯреВрд▓ рдХреЗ рд░реВрдк рдореЗрдВ рд╣реИ рдФрд░ рдЬреЗрдирд░реЗрдЯ рдХрд┐рдП рдЧрдП рдлрд╝рд┐рд▓реНрдЯрд░ рдХреЛрдб рдХреЛ рджреЗрдЦрдиреЗ рдХрд╛ рдПрдХ рдЖрд╕рд╛рди рддрд░реАрдХрд╛ рд╣реИред

рдЬреЗрдирд░реЗрдЯ рдХрд┐рдП рдЧрдП рдлрд╝рд┐рд▓реНрдЯрд░ рдХреЛрдб рдХреА рдХрд▓реНрдкрдирд╛ рдХрд░рдиреЗ рдХрд╛ рдЖрд╕рд╛рди рддрд░реАрдХрд╛

рд▓реЗрдХрд┐рди, рддрдм рдпрд╣ _generated_ рдлрд╝рд┐рд▓реНрдЯрд░ рдХреЛрдб рдХреА рдХрд▓реНрдкрдирд╛ рдирд╣реАрдВ рдХрд░реЗрдЧрд╛ рдХреНрдпреЛрдВрдХрд┐ рдЙрддреНрдкрдиреНрди рдХреЛрдб рдореЗрдВ рдЫрджреНрдо рд╕рд┐рд╕реНрдХреЛ рдЕрдиреБрдкрд╕реНрдерд┐рдд рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред

рдпрджрд┐ рдкреАрдПрдлрд╕реА рд╕реЗ рд╕рд┐рд╕реНрдХрд▓ рдЧрд╛рдпрдм рд╣реИ рддреЛ рд╣рдореЗрдВ рдХрдИ рдлрд░реНрдЬреА рдмрдЧ рд░рд┐рдкреЛрд░реНрдЯ рдкреНрд░рд╛рдкреНрдд рд╣реЛрдВрдЧреА рдЬреЛ рдЗрд╕ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░ рд░рд╣реА рд╣реИрдВ рдХрд┐ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХреИрд╕реЗ (рдЧреИрд░-рдореМрдЬреВрдж) рд╕рд┐рд╕реНрдХреЛрд▓ рдХреЗ рд▓рд┐рдП рдПрдХ рдлрд┐рд▓реНрдЯрд░ рдЬреЛрдбрд╝рдиреЗ рдореЗрдВ рд╡рд┐рдлрд▓ рд╣реЛ рд░рд╣рд╛ рд╣реИред

рдпрд╣ рд╕рдордЭрдирд╛ рдмрд╣реБрдд рдЖрд╕рд╛рди рд╣реИ рдХрд┐ рдЫрджреНрдо рд╕рд┐рд╕реНрдХрд▓ рдЪреЗрдХ рдХреЛрдб рдореЗрдВ рдореМрдЬреВрдж рдирд╣реАрдВ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП (рдЬреИрд╕рд╛ рдХрд┐ 'рдЕрдиреБрдХреВрд▓рд┐рдд' рдореЗрдВ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ '' рдЖрд░реНрдХ рдХреЗ рд▓рд┐рдП рдРрд╕реЗ рдХреЛрдИ рд╕рд┐рд╕реНрдХреЛ рдирд╣реАрдВ рд╣реИрдВ '), рддрд░реНрдХ рдЕрдВрддрд░ (рд╕рд╢рд░реНрддреЛрдВ рдХреА рдЙрдкрд╕реНрдерд┐рддрд┐ рдФрд░ рдЕрдиреБрдкрд╕реНрдерд┐рддрд┐) рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдХреЛрдб рдХрд╛ рд╡рд┐рдЬрд╝реБрдЕрд▓рд╛рдЗрдЬрд╝реЗрд╢рди рдФрд░ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдХреЛрдбред

рдореИрдВ рдкреАрдПрдлрд╕реА рдХреЛ scmp_bpf_disasm рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рдмрдЬрд╛рдп рдмреАрдкреАрдПрдл рдХреЛ рдкреНрд░рддрд┐рдмрд┐рдВрдмрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд╕рдВрдж рдХрд░реВрдВрдЧрд╛ рдХреНрдпреЛрдВрдХрд┐ рдкреАрдПрдлрд╕реА рдЖрдЙрдЯрдкреБрдЯ рдХреЛ рдкрдврд╝рдирд╛ рдмрд╣реБрдд рдЖрд╕рд╛рди рд╣реИред

рдореИрдВ рдЖрдкрдХреА рдЪрд┐рдВрддрд╛ @vt-alt рдХреЛ рд╕рдордЭрддрд╛ рд╣реВрдВ, рдФрд░ рд╢рд╛рдпрдж рднрд╡рд┐рд╖реНрдп рдХреЗ рд░рд┐рд▓реАрдЬ рдореЗрдВ рд╣рдо рдкреАрдПрдлрд╕реА рдХреЗ рд╕рд╛рде рдРрд╕рд╛ рдХрд░рддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдпрд╣ рдореЗрд░реА рд░рд╛рдп рд╣реИ рдХрд┐ рдкреАрдПрдлрд╕реА рдЖрдЙрдЯрдкреБрдЯ рд╕реЗ рд╕реНрдпреВрдбреЛ-рд╕рд┐рд╕рдХреЙрд▓ рдХреЛ рд╣рдЯрд╛рдирд╛ рдПрдХ рдЧрд▓рддреА рд╣реИред

@drakenclimber рдХреНрдпрд╛ рдЗрд╕ рдкрд░ рдЖрдкрдХреА рдХреЛрдИ рдордЬрдмреВрдд рд░рд╛рдп рд╣реИ?

x86_64 рдХреЗ рд▓рд┐рдП рд╕рдВрд╢реЛрдзрд┐рдд рдкреБрдирд░реБрддреНрдкрд╛рджрдХ:

#include <stdlib.h>
#include <errno.h>

#include <seccomp.h>

#include "util.h"

int main(int argc, char *argv[])
{
        int rc;
        struct util_options opts;
        scmp_filter_ctx ctx = NULL;

        rc = util_getopt(argc, argv, &opts);
        if (rc < 0)
                goto out;

        ctx = seccomp_init(SCMP_ACT_KILL);
        if (ctx == NULL)
                return ENOMEM;

        rc = seccomp_arch_add(ctx, SCMP_ARCH_X32);
        if (rc < 0)
                goto out;

        rc = seccomp_rule_add(ctx, SCMP_ACT_ALLOW, SCMP_SYS(access), 0);
        if (rc < 0)
                goto out;
        rc = seccomp_rule_add(ctx, SCMP_ACT_ALLOW, SCMP_SYS(arm_fadvise64_64), 0);
        if (rc < 0)
                goto out;

        rc = util_filter_output(&opts, ctx);
        if (rc)
                goto out;

out:
        seccomp_release(ctx);
        return (rc < 0 ? -rc : rc);
}

рдЕрджреНрдпрддрди: TSKIP рдХреЗ рд╕рд╛рде рдПрдХ рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╕рдорд╛рдзрд╛рди рдХрд┐рдпрд╛ рдЧрдпрд╛

рдЕрднреА рддрдХ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдкрд░реАрдХреНрд╖рдг рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдПрдХ рдлрд┐рдХреНрд╕ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ - рдХреНрдпрд╛ рдЖрдк рд╕рддреНрдпрд╛рдкрд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдпрд╣ рд╕рдВрддреБрд▓рд┐рдд рдкреЗрдбрд╝ рдЕрдиреБрдХреВрд▓рди рдПрд▓реНрдЧреЛрд░рд┐рджрдо @drakenclimber рдХреЗ рд▓рд┐рдП рдЙрдЪрд┐рдд рд╣реИ?

diff --git a/src/arch-arm.c b/src/arch-arm.c
index 3465111..4dd4b63 100644
--- a/src/arch-arm.c
+++ b/src/arch-arm.c
@@ -54,7 +54,7 @@ int arm_syscall_resolve_name_munge(const char *name)
        if (sys == __NR_SCMP_ERROR)
                return sys;

-       return sys + __SCMP_NR_BASE;
+       return (sys | __SCMP_NR_BASE);
 }

 /**
@@ -68,7 +68,7 @@ int arm_syscall_resolve_name_munge(const char *name)
  */
 const char *arm_syscall_resolve_num_munge(int num)
 {
-       return arm_syscall_resolve_num(num - __SCMP_NR_BASE);
+       return arm_syscall_resolve_num(num & (~__SCMP_NR_BASE));
 }

 const struct arch_def arch_def_arm = {
diff --git a/src/arch-x32.c b/src/arch-x32.c
index 7b97fb3..3890968 100644
--- a/src/arch-x32.c
+++ b/src/arch-x32.c
@@ -43,7 +43,7 @@ int x32_syscall_resolve_name_munge(const char *name)
        if (sys == __NR_SCMP_ERROR)
                return sys;

-       return sys + X32_SYSCALL_BIT;
+       return (sys | X32_SYSCALL_BIT);
 }

 /**
@@ -57,7 +57,7 @@ int x32_syscall_resolve_name_munge(const char *name)
  */
 const char *x32_syscall_resolve_num_munge(int num)
 {
-       return x32_syscall_resolve_num(num - X32_SYSCALL_BIT);
+       return x32_syscall_resolve_num(num & (~X32_SYSCALL_BIT));
 }

 const struct arch_def arch_def_x32 = {
diff --git a/src/gen_bpf.c b/src/gen_bpf.c
index 55a7958..ae9c3f4 100644
--- a/src/gen_bpf.c
+++ b/src/gen_bpf.c
@@ -1555,6 +1555,10 @@ static int _gen_bpf_syscalls(struct bpf_state *state,
        for (s_iter = s_tail; s_iter != NULL; s_iter = s_iter->pri_prv) {
                if (!s_iter->valid)
                        continue;
+               /* skip pseudo-syscalls */
+               if ((s_iter->num & 0x80000000) &&
+                   (state->attr->api_tskip == 0 || s_iter->num != -1))
+                       continue;

                if (*bintree_levels > 0 &&
                    ((syscall_cnt + empty_cnt) % SYSCALLS_PER_NODE) == 0)

рдореИрдВ рдЖрдкрдХреА рдЪрд┐рдВрддрд╛ @vt-alt рдХреЛ рд╕рдордЭрддрд╛ рд╣реВрдВ, рдФрд░ рд╢рд╛рдпрдж рднрд╡рд┐рд╖реНрдп рдХреЗ рд░рд┐рд▓реАрдЬ рдореЗрдВ рд╣рдо рдкреАрдПрдлрд╕реА рдХреЗ рд╕рд╛рде рдРрд╕рд╛ рдХрд░рддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдпрд╣ рдореЗрд░реА рд░рд╛рдп рд╣реИ рдХрд┐ рдкреАрдПрдлрд╕реА рдЖрдЙрдЯрдкреБрдЯ рд╕реЗ рд╕реНрдпреВрдбреЛ-рд╕рд┐рд╕рдХреЙрд▓ рдХреЛ рд╣рдЯрд╛рдирд╛ рдПрдХ рдЧрд▓рддреА рд╣реИред

@drakenclimber рдХреНрдпрд╛ рдЗрд╕ рдкрд░ рдЖрдкрдХреА рдХреЛрдИ рдордЬрдмреВрдд рд░рд╛рдп рд╣реИ?

рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдирд╣реАрдВ, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╕рдорд╕реНрдпрд╛ рдХреА рдЬрдбрд╝ рдпрд╣ рд╣реИ рдХрд┐ рдкреАрдПрдлрд╕реА рдЖрдЙрдЯрдкреБрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрдИ, рдЕрд▓рдЧ-рдЕрд▓рдЧ рддрд░реАрдХреЛрдВ рд╕реЗ рдХрд┐рдпрд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИ:

  1. рдЬреИрд╕рд╛ рдХрд┐ рдКрдкрд░ рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдпрд╣ рдирдП (рдПрд░) рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдЕрдкрдиреЗ рдлрд╝рд┐рд▓реНрдЯрд░ рдХреЛ рдореЛрдЯреЗ рддреМрд░ рдкрд░ рд╕рддреНрдпрд╛рдкрд┐рдд рдХрд░рдиреЗ рдХрд╛ рдПрдХ рдЖрд╕рд╛рди рддрд░реАрдХрд╛ рд╣реИ
  2. рдЕрдзрд┐рдХ рдЙрдиреНрдирдд рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЙрдореНрдореАрдж рдХрд░ рд░рд╣реЗ рд╣реИрдВ рдХрд┐ рдпрд╣ рд╡рд╛рд╕реНрддрд╡рд┐рдХ BPF рдлрд╝рд┐рд▓реНрдЯрд░ рдХрд╛ рдПрдХ рдирд┐рдХрдЯ рд╕рдиреНрдирд┐рдХрдЯрди рд╣реЛрдЧрд╛

рд╢рд╛рдпрдж рд╣рдо рдкреАрдПрдлрд╕реА рддрд░реНрдХ рдореЗрдВ --no-pseudo-syscalls рдзреНрд╡рдЬ рдЬреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВ? рдлрд┐рд░ рдпрд╣ рд╢реБрд░реБрдЖрддреА рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рд╕рдорд╛рди рд░рд╣ рд╕рдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЙрдиреНрдирдд рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдмреАрдкреАрдПрдл рдХрд╛ рдмреЗрд╣рддрд░ рдЕрдиреБрдорд╛рди рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

_рдЕрдкрдбреЗрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛: TSKIP_ рдХреЗ рд╕рд╛рде рдПрдХ рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╕рдорд╛рдзрд╛рди рдХрд┐рдпрд╛ рдЧрдпрд╛

рдЕрднреА рддрдХ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдкрд░реАрдХреНрд╖рдг рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдПрдХ рдлрд┐рдХреНрд╕ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ - рдХреНрдпрд╛ рдЖрдк рд╕рддреНрдпрд╛рдкрд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдпрд╣ рд╕рдВрддреБрд▓рд┐рдд рдкреЗрдбрд╝ рдЕрдиреБрдХреВрд▓рди рдПрд▓реНрдЧреЛрд░рд┐рджрдо @drakenclimber рдХреЗ рд▓рд┐рдП рдЙрдЪрд┐рдд рд╣реИ?

рдХрд╛рдо рдЪрд▓ рдЬрд╛рдпреЗрдЧрд╛ред рдореИрдВ рджреЗрдЦрдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рдХрд┐ рдХреНрдпрд╛ рдореИрдВ рдПрдХ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдкрд░реАрдХреНрд╖рдг рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ рдЬреЛ рдЗрд╕ рдкрд░рд┐рджреГрд╢реНрдп рдХреЛ рдкреБрди: рдЙрддреНрдкрдиреНрди рдХрд░реЗрдЧрд╛ред

_рдЕрдкрдбреЗрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛: TSKIP_ рдХреЗ рд╕рд╛рде рдПрдХ рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╕рдорд╛рдзрд╛рди рдХрд┐рдпрд╛ рдЧрдпрд╛
рдЕрднреА рддрдХ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдкрд░реАрдХреНрд╖рдг рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдПрдХ рдлрд┐рдХреНрд╕ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ - рдХреНрдпрд╛ рдЖрдк рд╕рддреНрдпрд╛рдкрд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдпрд╣ рд╕рдВрддреБрд▓рд┐рдд рдкреЗрдбрд╝ рдЕрдиреБрдХреВрд▓рди рдПрд▓реНрдЧреЛрд░рд┐рджрдо @drakenclimber рдХреЗ рд▓рд┐рдП рдЙрдЪрд┐рдд рд╣реИ?

рдХрд╛рдо рдЪрд▓ рдЬрд╛рдпреЗрдЧрд╛ред рдореИрдВ рджреЗрдЦрдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рдХрд┐ рдХреНрдпрд╛ рдореИрдВ рдПрдХ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдкрд░реАрдХреНрд╖рдг рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ рдЬреЛ рдЗрд╕ рдкрд░рд┐рджреГрд╢реНрдп рдХреЛ рдкреБрди: рдЙрддреНрдкрдиреНрди рдХрд░реЗрдЧрд╛ред

рдФрд░ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдореИрдВ рдЖрдкрдХреЗ рдКрдкрд░ рджрд┐рдП рдЧрдП рдкреБрдирд░реБрддреНрдкрд╛рджрдХ рдкрд░реАрдХреНрд╖рдг рд╕реЗ рд╢реБрд░реВ рдХрд░реВрдВрдЧрд╛ред рдзрдиреНрдпрд╡рд╛рдж!

_рдЕрдкрдбреЗрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛: TSKIP_ рдХреЗ рд╕рд╛рде рдПрдХ рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╕рдорд╛рдзрд╛рди рдХрд┐рдпрд╛ рдЧрдпрд╛

рдЕрднреА рддрдХ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдкрд░реАрдХреНрд╖рдг рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдПрдХ рдлрд┐рдХреНрд╕ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ - рдХреНрдпрд╛ рдЖрдк рд╕рддреНрдпрд╛рдкрд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдпрд╣ рд╕рдВрддреБрд▓рд┐рдд рдкреЗрдбрд╝ рдЕрдиреБрдХреВрд▓рди рдПрд▓реНрдЧреЛрд░рд┐рджрдо @drakenclimber рдХреЗ рд▓рд┐рдП рдЙрдЪрд┐рдд рд╣реИ?

рдмрд╛рдЗрдирд░реА рдЯреНрд░реА рдкреВрд░реНрд╡-рдЧрдгрдирд╛ рдХрд░рддрд╛ рд╣реИ рдЬрдм рд╕рдВрдЪрд╛рдпрдХ рдХреЛ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ, рдФрд░ рдЗрд╕ рддрд░рд╣ рдпрд╣ jge рддрд░реНрдХ рд╕рдореНрдорд┐рд▓рд┐рдд рдХрд░рдирд╛ рдЬрд╛рдирддрд╛ рд╣реИред рдлрд╝рд┐рд▓реНрдЯрд░ рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдХрд░рддреЗ рд╕рдордп рд╕рд┐рд╕реНрдХрд▓реНрд╕ (рдКрдкрд░ рджрд┐рдП рдЧрдП рдкреНрд░рд╕реНрддрд╛рд╡ рдХреА рддрд░рд╣) рдХреЛ рдмрд╛рд╣рд░ рдирд┐рдХрд╛рд▓рдирд╛ рдЗрд╕ рддрд░реНрдХ рдХреЛ рддреЛрдбрд╝рддрд╛ рд╣реИред

рдореИрдВрдиреЗ рдЕрднреА рддрдХ рдЕрдкрдиреЗ рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдХрд╛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдкрд░реАрдХреНрд╖рдг рдирд╣реАрдВ рдХрд┐рдпрд╛ рд╣реИ :), рд▓реЗрдХрд┐рди рдореБрдЭреЗ рдкреВрд░рд╛ рдпрдХреАрди рд╣реИ рдХрд┐ рд╣рдореЗрдВ рдмрд╛рдЗрдирд░реА рдЯреНрд░реА рдХреЛ рдЫрджреНрдо-рд╕рд┐рд╕реНрдХрд▓ рдХреЛ рд╣рдЯрд╛рдиреЗ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреБрдЫ рдЗрд╕ рддрд░рд╣ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреАред рдореИрдВрдиреЗ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдПрдХ рдмреАрдкреАрдПрдл рдмрд╛рдЗрдирд░реА рдкреЗрдбрд╝ рдЙрддреНрдкрдиреНрди рдХрд┐рдпрд╛ рдФрд░ рдпрд╣ рдЙрдЪрд┐рдд рджрд┐рдЦрддрд╛ рд╣реИред рдЬреИрд╕реЗ-рдЬреИрд╕реЗ рд╣рдо рдЙрддреНрдкрд╛рджрди рдХреЗ рд▓рд┐рдП рддреИрдпрд╛рд░ рд╕рдорд╛рдзрд╛рди рдХреЗ рдХрд░реАрдм рдкрд╣реБрдВрдЪреЗрдВрдЧреЗ, рдореИрдВ рдЗрд╕реЗ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╕рддреНрдпрд╛рдкрд┐рдд рдХрд░ рджреВрдВрдЧрд╛ред

@@ -1532,11 +1532,31 @@ static int _gen_bpf_syscalls(struct bpf_state *state,
                _sys_sort(db_secondary->syscalls, &s_head, &s_tail, optimize);

        if (optimize == 2) {
+               /* since pseudo-syscalls are removed from the filter, we need
+                * to calculate the syscall count by hand
+                */
+               for (s_iter = s_tail; s_iter != NULL; s_iter = s_iter->pri_prv) {
+                       if (!s_iter->valid)
+                               continue;
+
+                       /* skip pseudo-syscalls */
+                       if ((s_iter->num & 0x80000000) &&
+                           (state->attr->api_tskip == 0 || s_iter->num != -1))
+                               continue;
+
+                       syscall_cnt++;
+               }
+
                rc = _gen_bpf_init_bintree(&bintree_hashes, &bintree_syscalls,
-                                          bintree_levels, db->syscall_cnt,
+                                          bintree_levels, syscall_cnt,
                                           &empty_cnt);
                if (rc < 0)
                        goto out;
+
+               /* reset the syscall_cnt variable because later in this
+                * function it's used as a counter
+                */
+               syscall_cnt = 0;
        }

рдпрджрд┐ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ db рд╕рдВрд░рдЪрдирд╛ рдореЗрдВ "рд╡реИрдз" рд╕рд┐рд╕реНрдХрд▓ рдЧрдгрдирд╛ рдХреЛ рдЯреНрд░реИрдХ рдХрд░рдиреЗ рд╡рд╛рд▓рд╛ рдПрдХ рдЪрд░ рд╣реИ, рддреЛ рдЗрд╕реЗ рд╕реНрдорд╛рд░реНрдЯ/рддреЗрдЬ рдмрдирд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

рд╢рд╛рдпрдж рд╣рдо PFC рддрд░реНрдХ рдореЗрдВ --no-pseudo-syscalls рдзреНрд╡рдЬ рдЬреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВ?

рдпрд╣ рдЭрдВрдбрд╛ рдХрд╣рд╛рдВ рдЬрд╛рдПрдЧрд╛? рдореБрдЭреЗ рдирд╣реАрдВ рд▓рдЧрддрд╛ рдХрд┐ рд╣рдо рдЗрд╕реЗ рдмрд┐рд▓реНрдб рдЯрд╛рдЗрдо рд╡рд┐рдХрд▓реНрдк рдХреЗ рд░реВрдк рдореЗрдВ рдЪрд╛рд╣рддреЗ рд╣реИрдВред рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╣рдо рдПрдХ рдлрд┐рд▓реНрдЯрд░ рд╡рд┐рдХрд▓реНрдк рдЬреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдореИрдВ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЙрддреНрд╕рд╛рд╣рд┐рдд рдирд╣реАрдВ рд╣реВрдВред рдореИрдВ рдкреАрдПрдлрд╕реА рдореЗрдВ рд╕реНрдпреВрдбреЛ-рд╕рд┐рд╕реНрдХрд▓ рдХреЗ рд╕рд╛рде рдЪрд┐рдкрдХреЗ рд░рд╣рдиреЗ рдХреЗ рд▓рд┐рдП рд╡реЛрдЯ рдХрд░реВрдВрдЧрд╛ рд▓реЗрдХрд┐рди рдЗрд╕реЗ рдЕрднреА рдХреЗ рд▓рд┐рдП рдмреАрдкреАрдПрдл (рдЬрд╛рд╣рд┐рд░ рд╣реИ) рд╕реЗ рд╣рдЯрд╛ рджреВрдВрдЧрд╛, рдФрд░ рдЕрдЧрд░ рд╣рдореЗрдВ рднрд╡рд┐рд╖реНрдп рдореЗрдВ рдЗрд╕реЗ рдХрд┐рд╕реА рдмрд┐рдВрджреБ рдкрд░ рдмрдврд╝рд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рддреЛ рд╣рдо рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

рдореИрдВрдиреЗ рдЕрднреА рддрдХ рдЕрдкрдиреЗ рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдХрд╛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдкрд░реАрдХреНрд╖рдг рдирд╣реАрдВ рдХрд┐рдпрд╛ рд╣реИ :), рд▓реЗрдХрд┐рди рдореБрдЭреЗ рдкреВрд░рд╛ рдпрдХреАрди рд╣реИ рдХрд┐ рд╣рдореЗрдВ рдмрд╛рдЗрдирд░реА рдЯреНрд░реА рдХреЛ рдЫрджреНрдо-рд╕рд┐рд╕реНрдХрд▓ рдХреЛ рд╣рдЯрд╛рдиреЗ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреБрдЫ рдЗрд╕ рддрд░рд╣ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреАред рдореИрдВрдиреЗ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдПрдХ рдмреАрдкреАрдПрдл рдмрд╛рдЗрдирд░реА рдкреЗрдбрд╝ рдЙрддреНрдкрдиреНрди рдХрд┐рдпрд╛ рдФрд░ рдпрд╣ рдЙрдЪрд┐рдд рджрд┐рдЦрддрд╛ рд╣реИред рдЬреИрд╕реЗ-рдЬреИрд╕реЗ рд╣рдо рдЙрддреНрдкрд╛рджрди рдХреЗ рд▓рд┐рдП рддреИрдпрд╛рд░ рд╕рдорд╛рдзрд╛рди рдХреЗ рдХрд░реАрдм рдкрд╣реБрдВрдЪреЗрдВрдЧреЗ, рдореИрдВ рдЗрд╕реЗ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╕рддреНрдпрд╛рдкрд┐рдд рдХрд░ рджреВрдВрдЧрд╛ред

рдореБрдЭреЗ рд╕рдВрджреЗрд╣ рдерд╛ рдХрд┐ рдпрд╣ рд╡реГрдХреНрд╖ рдЕрдиреБрдХреВрд▓рди рдХреЛ рддреЛрдбрд╝рдиреЗ рд╡рд╛рд▓рд╛ рдерд╛ред

@drakenclimber рдЗрд╕ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░рддреЗ рд╣реБрдП рдорд╛рдирдХ рдЕрдиреБрдХреВрд▓рди рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдкреЗрдбрд╝ рдХреЛ рдмрд╣реБрдд рдЕрдзрд┐рдХ рдкреНрд░рднрд╛рд╡рд┐рдд рдХрд░рддрд╛ рд╣реИ, рдХреНрдпрд╛ рдЖрдк рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ рд▓реЗрдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ? рдореЗрд░реЗ рджреНрд╡рд╛рд░рд╛ рдХреЙрдкреА рдФрд░ рдкреЗрд╕реНрдЯ рдХрд┐рдП рдЧрдП рдХреЛрдб рдХреЛ рдЬрд┐рддрдирд╛ рд╣реЛ рд╕рдХреЗ рдЙрддрдирд╛ рдХрдо рдпрд╛ рдЬреНрдпрд╛рджрд╛ рдЪреЛрд░реА рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реНрд╡рддрдВрддреНрд░ рдорд╣рд╕реВрд╕ рдХрд░реЗрдВред

рдПрдХ рдмрд╛рдд рдЬреЛ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╣рдореЗрдВ "arch-arm.c" рдФрд░ "arch-x32.c" рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрди рдХреА рдкрд░рд╡рд╛рд╣ рдХрд┐рдП рдмрд┐рдирд╛ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдЕрдзрд┐рдХ рд╕рдордЭ рдореЗрдВ рдЖрддрд╛ рд╣реИред

рд╢рд╛рдпрдж рд╣рдо PFC рддрд░реНрдХ рдореЗрдВ --no-pseudo-syscalls рдзреНрд╡рдЬ рдЬреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВ?

рдпрд╣ рдЭрдВрдбрд╛ рдХрд╣рд╛рдВ рдЬрд╛рдПрдЧрд╛? рдореБрдЭреЗ рдирд╣реАрдВ рд▓рдЧрддрд╛ рдХрд┐ рд╣рдо рдЗрд╕реЗ рдмрд┐рд▓реНрдб рдЯрд╛рдЗрдо рд╡рд┐рдХрд▓реНрдк рдХреЗ рд░реВрдк рдореЗрдВ рдЪрд╛рд╣рддреЗ рд╣реИрдВред рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╣рдо рдПрдХ рдлрд┐рд▓реНрдЯрд░ рд╡рд┐рдХрд▓реНрдк рдЬреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдореИрдВ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЙрддреНрд╕рд╛рд╣рд┐рдд рдирд╣реАрдВ рд╣реВрдВред рдореИрдВ рдкреАрдПрдлрд╕реА рдореЗрдВ рд╕реНрдпреВрдбреЛ-рд╕рд┐рд╕реНрдХрд▓ рдХреЗ рд╕рд╛рде рдЪрд┐рдкрдХреЗ рд░рд╣рдиреЗ рдХреЗ рд▓рд┐рдП рд╡реЛрдЯ рдХрд░реВрдВрдЧрд╛ рд▓реЗрдХрд┐рди рдЗрд╕реЗ рдЕрднреА рдХреЗ рд▓рд┐рдП рдмреАрдкреАрдПрдл (рдЬрд╛рд╣рд┐рд░ рд╣реИ) рд╕реЗ рд╣рдЯрд╛ рджреВрдВрдЧрд╛, рдФрд░ рдЕрдЧрд░ рд╣рдореЗрдВ рднрд╡рд┐рд╖реНрдп рдореЗрдВ рдЗрд╕реЗ рдХрд┐рд╕реА рдмрд┐рдВрджреБ рдкрд░ рдмрдврд╝рд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рддреЛ рд╣рдо рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

рдореИрдВ рдорд╛рдирддрд╛ рд╣реВрдВ рдХрд┐ рдореИрдВрдиреЗ рд╕реЛрдЪрдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдЯрд╛рдЗрдк рдХрд┐рдпрд╛ рдерд╛ред ;)

рд╣рд╛рдБ, рдпрд╣ рдПрдХ рдлрд╝рд┐рд▓реНрдЯрд░ рд╡рд┐рдХрд▓реНрдк рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП рдФрд░ рдпрд╣ рдЧрд▓рдд рд▓рдЧрддрд╛ рд╣реИред рдореИрдВ рд╕рд╣рдордд рд╣реВрдВ; рдЬреИрд╕рд╛ рдЖрдкрдиреЗ рдКрдкрд░ рдмрддрд╛рдпрд╛ рд╣реИ, рд╡реИрд╕рд╛ рд╣реА рдХрд░рддреЗ рд╣реИрдВред рдпрджрд┐ рд╣рдореЗрдВ рдкреНрд░рд╢реНрди рдорд┐рд▓рддреЗ рд░рд╣рддреЗ рд╣реИрдВ, рддреЛ рд╣рдо рдлрд┐рд░ рд╕реЗ рдЬрд╛ рд╕рдХрддреЗ рд╣реИрдВред

рдореИрдВрдиреЗ рдЕрднреА рддрдХ рдЕрдкрдиреЗ рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдХрд╛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдкрд░реАрдХреНрд╖рдг рдирд╣реАрдВ рдХрд┐рдпрд╛ рд╣реИ :), рд▓реЗрдХрд┐рди рдореБрдЭреЗ рдкреВрд░рд╛ рдпрдХреАрди рд╣реИ рдХрд┐ рд╣рдореЗрдВ рдмрд╛рдЗрдирд░реА рдЯреНрд░реА рдХреЛ рдЫрджреНрдо-рд╕рд┐рд╕реНрдХрд▓ рдХреЛ рд╣рдЯрд╛рдиреЗ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреБрдЫ рдЗрд╕ рддрд░рд╣ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреАред рдореИрдВрдиреЗ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдПрдХ рдмреАрдкреАрдПрдл рдмрд╛рдЗрдирд░реА рдкреЗрдбрд╝ рдЙрддреНрдкрдиреНрди рдХрд┐рдпрд╛ рдФрд░ рдпрд╣ рдЙрдЪрд┐рдд рджрд┐рдЦрддрд╛ рд╣реИред рдЬреИрд╕реЗ-рдЬреИрд╕реЗ рд╣рдо рдЙрддреНрдкрд╛рджрди рдХреЗ рд▓рд┐рдП рддреИрдпрд╛рд░ рд╕рдорд╛рдзрд╛рди рдХреЗ рдХрд░реАрдм рдкрд╣реБрдВрдЪреЗрдВрдЧреЗ, рдореИрдВ рдЗрд╕реЗ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╕рддреНрдпрд╛рдкрд┐рдд рдХрд░ рджреВрдВрдЧрд╛ред

рдореБрдЭреЗ рд╕рдВрджреЗрд╣ рдерд╛ рдХрд┐ рдпрд╣ рд╡реГрдХреНрд╖ рдЕрдиреБрдХреВрд▓рди рдХреЛ рддреЛрдбрд╝рдиреЗ рд╡рд╛рд▓рд╛ рдерд╛ред

@drakenclimber рдЗрд╕ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░рддреЗ рд╣реБрдП рдорд╛рдирдХ рдЕрдиреБрдХреВрд▓рди рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдкреЗрдбрд╝ рдХреЛ рдмрд╣реБрдд рдЕрдзрд┐рдХ рдкреНрд░рднрд╛рд╡рд┐рдд рдХрд░рддрд╛ рд╣реИ, рдХреНрдпрд╛ рдЖрдк рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ рд▓реЗрдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ? рдореЗрд░реЗ рджреНрд╡рд╛рд░рд╛ рдХреЙрдкреА рдФрд░ рдкреЗрд╕реНрдЯ рдХрд┐рдП рдЧрдП рдХреЛрдб рдХреЛ рдЬрд┐рддрдирд╛ рд╣реЛ рд╕рдХреЗ рдЙрддрдирд╛ рдХрдо рдпрд╛ рдЬреНрдпрд╛рджрд╛ рдЪреЛрд░реА рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реНрд╡рддрдВрддреНрд░ рдорд╣рд╕реВрд╕ рдХрд░реЗрдВред

рдПрдХ рдмрд╛рдд рдЬреЛ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╣рдореЗрдВ "arch-arm.c" рдФрд░ "arch-x32.c" рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрди рдХреА рдкрд░рд╡рд╛рд╣ рдХрд┐рдП рдмрд┐рдирд╛ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдЕрдзрд┐рдХ рд╕рдордЭ рдореЗрдВ рдЖрддрд╛ рд╣реИред

рдЬрд╝рд░реВрд░ред рдореИрдВ рдЗрд╕рдХрд╛ рдорд╛рд▓рд┐рдХ рд╣реЛ рд╕рдХрддрд╛ рд╣реВрдВред

@drakenclimber "> рдЬреИрд╕рд╛ рдХрд┐ рдКрдкрд░ рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдпрд╣ рдирдП (рдПрд░) рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдЕрдкрдиреЗ рдлрд╝рд┐рд▓реНрдЯрд░ рдХреЛ рдореЛрдЯреЗ рддреМрд░ рдкрд░ рд╕рддреНрдпрд╛рдкрд┐рдд рдХрд░рдиреЗ рдХрд╛ рдПрдХ рдЖрд╕рд╛рди рддрд░реАрдХрд╛ рд╣реИ"

"рдЫрджреНрдо рд╕рд┐рд╕реНрдХрд▓" рдХрд░реНрдиреЗрд▓ рдореЗрдВ рдореМрдЬреВрдж рдирд╣реАрдВ рд╣реИ рдФрд░ рдпрд╣ рдПрдХ рдкреНрд░рд╕рд┐рджреНрдз рдЕрд╡рдзрд╛рд░рдгрд╛ рднреА рдирд╣реАрдВ рд╣реИред рдпрд╣ рд╡рд┐рд╢реБрджреНрдз рд░реВрдк рд╕реЗ libseccomp рдХрд╛ рдЖрд╡рд┐рд╖реНрдХрд╛рд░ рд╣реИ рдФрд░ рдЗрд╕рдХреА рд╡реНрдпрд╛рдЦреНрдпрд╛ рдпрд╣рд╛рдБ рдирд╣реАрдВ рдХреА рдЧрдИ рд╣реИред рдХреЗрд╡рд▓ рдХрд╣рд╛ рдЧрдпрд╛ рд╣реИ рдХрд┐ рд╡реЗ рдЛрдгрд╛рддреНрдордХ рд╕рдВрдЦреНрдпрд╛рдПрдБ рд╣реИрдВ рдФрд░ рд╡реЗ рддрдм рдкреНрд░рдХрдЯ рд╣реЛрддреЗ рд╣реИрдВ рдЬрдм рджрд┐рдП рдЧрдП syscall рдЖрд░реНрдХрд┐рдЯреЗрдХреНрдЪрд░ рдХреЗ рд▓рд┐рдП рдореМрдЬреВрдж рдирд╣реАрдВ рд╣реЛрддреЗ рд╣реИрдВред рдпрд╣ рдЧреИрд░-рдореМрдЬреВрдж рд╕рд┐рд╕реНрдХрд▓ рд╕реЗ рдХреИрд╕реЗ рднрд┐рдиреНрди рд╣реИ? рд╡реЗ рдХрд┐рд╕ рдЙрджреНрджреЗрд╢реНрдп рд╕реЗ рдирдХрд╛рд░рд╛рддреНрдордХ рд╣реИрдВ? рдирдП рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдЫрджреНрдо рд╕рд┐рд╕реНрдХрд▓ рдЕрд╡рдзрд╛рд░рдгрд╛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рднреНрд░рдорд┐рдд рдХрд░рдиреЗ рд╡рд╛рд▓реА рд╣реИред

рдореБрдЭреЗ рд╡рд┐рд╢реНрд╡рд╛рд╕ рдирд╣реАрдВ рд╣реЛ рд░рд╣рд╛ рд╣реИ рдХрд┐ рдирдП (рдПрд░) рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЕрдкрдиреЗ рдлрд╝рд┐рд▓реНрдЯрд░ рдореЗрдВ рдореМрдЬреВрдж рдЧреИрд░-рдореМрдЬреВрдж рд╕рд┐рд╕реНрдХреЛ рдХреЛ рджреЗрдЦрдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред

рдореБрдЭреЗ рдПрдХ рдмрд┐рдВрджреБ рдФрд░ рдЬреЛрдбрд╝рдиреЗ рджреЛред рдпрд╣ рд╕рдм рд╕реБрд░рдХреНрд╖рд╛ рдХреЗ рдХреНрд╖реЗрддреНрд░ рдореЗрдВ рд╣реИ, рдЬрд╣рд╛рдВ рдХреЗрд╡рд▓ рд╕рд╛рд╡рдзрд╛рди рдФрд░ рд╡рд┐рд╕реНрддреГрдд рд╕рдордЭ рдХрд╛рдо рдХрд░рддреА рд╣реИред рдЖрдк рдирдИ рдЕрд╕реНрдкрд╖реНрдЯ рдЕрд╡рдзрд╛рд░рдгрд╛рдПрдВ (рдЫрджреНрдо рд╕рд┐рд╕реНрдХреЛрд▓ рдХреА) рдФрд░ рдЕрднреНрдпрд╛рд╡реЗрджрди (рдмреАрдкреАрдПрдл рдФрд░ рдкреАрдПрдлрд╕реА) рдХреЗ рдмреАрдЪ рдЕрдВрддрд░ рдмрдирд╛ рд░рд╣реЗ рд╣реИрдВред рдХреНрдпрд╛ рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдирдП рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЗ рд▓рд┐рдП, рдЙрдиреНрд╣реЗрдВ рдФрд░ рдЕрдзрд┐рдХ рднреНрд░рдорд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╣реИ?

@vt-alt рдЖрдкрдХреА рдЪрд┐рдВрддрд╛ рд╡реНрдпрдХреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж, рд▓реЗрдХрд┐рди v2.5.0 рд░рд┐рд▓реАрдЬ рдХреЗ рд▓рд┐рдП рд╣рдо BPF рдлрд╝рд┐рд▓реНрдЯрд░ рд╕реЗ рдЫрджреНрдо-рд╕рд┐рд╕реНрдХрд▓ рдХреЛ рджрдмрд╛рдиреЗ рдЬрд╛ рд░рд╣реЗ рд╣реИрдВ, рдФрд░ рдЙрдиреНрд╣реЗрдВ PFC рдлрд╝рд┐рд▓реНрдЯрд░ рдореЗрдВ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдирд╛ рдЬрд╛рд░реА рд░рдЦреЗрдВрдЧреЗред рдореИрдВ рдорд╛рдирддрд╛ рд╣реВрдВ рдХрд┐ рдЖрдк рдЗрд╕ рдирд┐рд░реНрдгрдп рд╕реЗ рдЕрд╕рд╣рдордд рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ рд▓реЗрдХрд┐рди рдореИрдВ рдЖрдкрд╕реЗ рдЗрд╕ рдирд┐рд░реНрдгрдп рдХрд╛ рд╕рдореНрдорд╛рди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╣рддрд╛ рд╣реВрдВред рднрд╡рд┐рд╖реНрдп рдХреЗ рд░рд┐рд▓реАрдЬ рдореЗрдВ рд╣рдо рдЫрджреНрдо-рд╕рд┐рд╕реНрдХрд▓ (рдпрд╣ рдХрдИ рдПрдмреАрдЖрдИ рд╕рдорд░реНрдерди рдХреЗ рд▓рд┐рдП рд╣реИ) рдХреЗ рдкреАрдЫреЗ рдХреЗ рдЙрджреНрджреЗрд╢реНрдп рдХреЛ рд╕рдордЭрд╛рддреЗ рд╣реБрдП рдФрд░ рдЗрд╕реЗ рдореИрдирдкреЗрдЬ рдореЗрдВ рджрд╕реНрддрд╛рд╡реЗрдЬ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмреЗрд╣рддрд░ рдХрд╛рдо рдХрд░реЗрдВрдЧреЗ; рдореИрдВрдиреЗ рдЙрд╕рдХреЗ рд▓рд┐рдП рдПрдХ рдореБрджреНрджрд╛ рдмрдирд╛рдпрд╛ рд╣реИ (рдиреАрдЪреЗ рд▓рд┐рдВрдХ), рдЙрд╕ рдЪрд░реНрдЪрд╛ рдФрд░ рдХрд┐рд╕реА рднреА рдкреАрдЖрд░ рдореЗрдВ рднрд╛рдЧ рд▓реЗрдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдкрдХрд╛ рд╕реНрд╡рд╛рдЧрдд рд╣реИ рдФрд░ рдкреНрд░реЛрддреНрд╕рд╛рд╣рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдпрд╣ рднреА рд╕рдВрднрд╡ рд╣реИ рдХрд┐ рд╣рдо рднрд╡рд┐рд╖реНрдп рдореЗрдВ рдкреАрдПрдлрд╕реА рдлрд┐рд▓реНрдЯрд░ рдХреЗ рд▓рд┐рдП рдЕрдкрдиреЗ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХреЛ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд░реЗрдВ, рд▓реЗрдХрд┐рди рдореИрдВ рдпрд╣рд╛рдВ рдХреБрдЫ рднреА рд╡рд╛рджрд╛ рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ред

рдПрдХ рдмрд╛рд░ рдлрд┐рд░, рд╣рдорд╛рд░реЗ рдзреНрдпрд╛рди рдореЗрдВ рдмреАрдкреАрдПрдл рд╕рдорд╕реНрдпрд╛ рд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж; рдЖрдкрдиреЗ рдЕрдЧрд▓реА libseccomp рд░рд┐рд▓реАрдЬрд╝ рдХреЛ рдмреЗрд╣рддрд░ рдмрдирд╛рдиреЗ рдореЗрдВ рдорджрдж рдХреА рд╣реИ!

#264 рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдмрдВрджред

рдХреНрдпрд╛ рдпрд╣ рдкреГрд╖реНрда рдЙрдкрдпреЛрдЧреА рдерд╛?
0 / 5 - 0 рд░реЗрдЯрд┐рдВрдЧреНрд╕

рд╕рдВрдмрдВрдзрд┐рдд рдореБрджреНрджреЛрдВ

erdumbledore picture erdumbledore  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

Xyene picture Xyene  ┬╖  15рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

drakenclimber picture drakenclimber  ┬╖  18рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

kloetzl picture kloetzl  ┬╖  19рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

pcmoore picture pcmoore  ┬╖  14рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ