From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.129.124]) by sourceware.org (Postfix) with ESMTPS id 5A9BC3858C56 for ; Tue, 12 Apr 2022 18:42:35 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org 5A9BC3858C56 Received: from mail-qv1-f71.google.com (mail-qv1-f71.google.com [209.85.219.71]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id us-mta-343-GN4UFzlnNdGKVdr36noTyg-1; Tue, 12 Apr 2022 14:42:34 -0400 X-MC-Unique: GN4UFzlnNdGKVdr36noTyg-1 Received: by mail-qv1-f71.google.com with SMTP id jr12-20020a0562142a8c00b0044429017bcbso10717047qvb.20 for ; Tue, 12 Apr 2022 11:42:34 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=fmgeDJhQnvlCt7IJTMR6G7/bE7SKH6Bi+c0Ee4CeFv8=; b=sFmoUWTXteBKle2Bx30DR7Ajd0e++qdDqOIRxXOyrMKXT698oEuw+X7CIaR0l+18xf oK/6AcgwQTwAmKqJtPY6uJoRHssKRILVS6wt8Y4LDAYs1bkCDr+jcO6pLvYohWd/j5es Fg/4zdId0sXWfzWFwbVOcqSSqvK2HRUoxv82rfy1QC10T2LbW+W/9ITrDzZYKVuhIt4o LBcxckpc4OO54pkfuLo0gYWxwSEWieR8TZfD5OI3cEBxLeiY6cuQ0dnH1ghmcvAqwIhN HbihSCK145M2GlPOwbeiVrGBT6l4BYVyHwAvwqrWlQTtmIThlp8LWBPzvm7G0NBtblS5 ZiNQ== X-Gm-Message-State: AOAM533+fEZ3QIWkxF+AnfEBg+DxfflBJFsnJNH1PWj2wFqjfwk1ranc GHS7nivYfijSmFOriW7LRDlF/oFIXiKbEj6KhlOWdzzzoLEuyJNW1MJTf5lnZgvn7b9l9MmsTA0 kutFJApAEaTmRjU0bWB6Tjs9vBGja/aCdk6zhXTSMEwZQP5AcCd6umZK5xOkDQAfqRvNWoPY= X-Received: by 2002:a05:622a:28a:b0:2f1:14f3:8f1a with SMTP id z10-20020a05622a028a00b002f114f38f1amr2202743qtw.257.1649788953236; Tue, 12 Apr 2022 11:42:33 -0700 (PDT) X-Google-Smtp-Source: ABdhPJy/BXTwp0THaPm6F5+YanD9ePRoqeOfsT9rvUygrFJOGpqLhMNLzDS0dpCXGMnRJmvPH2l4Vw== X-Received: by 2002:a05:622a:28a:b0:2f1:14f3:8f1a with SMTP id z10-20020a05622a028a00b002f114f38f1amr2202729qtw.257.1649788952967; Tue, 12 Apr 2022 11:42:32 -0700 (PDT) Received: from athas.redhat.com (135-23-175-80.cpe.pppoe.ca. [135.23.175.80]) by smtp.gmail.com with ESMTPSA id j19-20020a05622a039300b002ecc2ebfd87sm10953840qtx.32.2022.04.12.11.42.31 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 12 Apr 2022 11:42:32 -0700 (PDT) From: Carlos O'Donell To: libc-stable@sourceware.org Cc: Adhemerval Zanella , Florian Weimer Subject: [PATCH 13/27] elf: Add _dl_audit_preinit Date: Tue, 12 Apr 2022 14:41:51 -0400 Message-Id: <20220412184205.3343677-14-carlos@redhat.com> X-Mailer: git-send-email 2.35.1 In-Reply-To: <20220412184205.3343677-1-carlos@redhat.com> References: <20220412184205.3343677-1-carlos@redhat.com> MIME-Version: 1.0 X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Transfer-Encoding: 8bit Content-Type: application/octet-stream; x-default=true X-Spam-Status: No, score=-5.6 required=5.0 tests=BAYES_00, DKIMWL_WL_HIGH, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, RCVD_IN_DNSWL_LOW, RCVD_IN_MSPIKE_H4, RCVD_IN_MSPIKE_WL, SPF_HELO_NONE, SPF_NONE, TXREP autolearn=ham autolearn_force=no version=3.4.4 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on server2.sourceware.org X-BeenThere: libc-stable@sourceware.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Libc-stable mailing list List-Unsubscribe: , List-Archive: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 12 Apr 2022 18:42:36 -0000 From: Adhemerval Zanella It consolidates the code required to call la_preinit audit callback. Checked on x86_64-linux-gnu, i686-linux-gnu, and aarch64-linux-gnu. Reviewed-by: Florian Weimer (cherry picked from commit 0b98a8748759e88b58927882a8714109abe0a2d6) --- csu/libc-start.c | 23 +++-------------------- elf/Versions | 2 +- elf/dl-audit.c | 15 +++++++++++++++ sysdeps/generic/ldsodefs.h | 3 +++ 4 files changed, 22 insertions(+), 21 deletions(-) diff --git a/csu/libc-start.c b/csu/libc-start.c index 0350b006fd..d01e57ea59 100644 --- a/csu/libc-start.c +++ b/csu/libc-start.c @@ -377,32 +377,15 @@ LIBC_START_MAIN (int (*main) (int, char **, char ** MAIN_AUXVEC_DECL), /* This is a current program. Use the dynamic segment to find constructors. */ call_init (argc, argv, __environ); -#else /* !SHARED */ - call_init (argc, argv, __environ); -#endif /* SHARED */ -#ifdef SHARED /* Auditing checkpoint: we have a new object. */ - if (__glibc_unlikely (GLRO(dl_naudit) > 0)) - { - struct audit_ifaces *afct = GLRO(dl_audit); - struct link_map *head = GL(dl_ns)[LM_ID_BASE]._ns_loaded; - for (unsigned int cnt = 0; cnt < GLRO(dl_naudit); ++cnt) - { - if (afct->preinit != NULL) - afct->preinit (&link_map_audit_state (head, cnt)->cookie); - - afct = afct->next; - } - } -#endif + _dl_audit_preinit (GL(dl_ns)[LM_ID_BASE]._ns_loaded); -#ifdef SHARED if (__glibc_unlikely (GLRO(dl_debug_mask) & DL_DEBUG_IMPCALLS)) GLRO(dl_debug_printf) ("\ntransferring control: %s\n\n", argv[0]); -#endif +#else /* !SHARED */ + call_init (argc, argv, __environ); -#ifndef SHARED _dl_debug_initialize (0, LM_ID_BASE); #endif diff --git a/elf/Versions b/elf/Versions index 164682eaea..bb6697647b 100644 --- a/elf/Versions +++ b/elf/Versions @@ -58,7 +58,7 @@ ld { _dl_argv; _dl_find_dso_for_object; _dl_get_tls_static_info; _dl_deallocate_tls; _dl_make_stack_executable; _dl_rtld_di_serinfo; _dl_starting_up; _dl_fatal_printf; - _dl_audit_symbind_alt; + _dl_audit_symbind_alt; _dl_audit_preinit; _rtld_global; _rtld_global_ro; # Only here for gdb while a better method is developed. diff --git a/elf/dl-audit.c b/elf/dl-audit.c index a21530f30b..0b6fac8e48 100644 --- a/elf/dl-audit.c +++ b/elf/dl-audit.c @@ -108,6 +108,21 @@ _dl_audit_objclose (struct link_map *l) } } +void +_dl_audit_preinit (struct link_map *l) +{ + if (__glibc_likely (GLRO(dl_naudit) == 0)) + return; + + struct audit_ifaces *afct = GLRO(dl_audit); + for (unsigned int cnt = 0; cnt < GLRO(dl_naudit); ++cnt) + { + if (afct->preinit != NULL) + afct->preinit (&link_map_audit_state (l, cnt)->cookie); + afct = afct->next; + } +} + void _dl_audit_symbind_alt (struct link_map *l, const ElfW(Sym) *ref, void **value, lookup_t result) diff --git a/sysdeps/generic/ldsodefs.h b/sysdeps/generic/ldsodefs.h index be5f3d16ca..5ccd3b4a38 100644 --- a/sysdeps/generic/ldsodefs.h +++ b/sysdeps/generic/ldsodefs.h @@ -1387,6 +1387,9 @@ void _dl_audit_objopen (struct link_map *l, Lmid_t nsid) void _dl_audit_objclose (struct link_map *l) attribute_hidden; +/* Call the la_preinit from the audit modules for the link_map L. */ +void _dl_audit_preinit (struct link_map *l); + /* Call the la_symbind{32,64} from the audit modules for the link_map L. */ void _dl_audit_symbind (struct link_map *l, struct reloc_result *reloc_result, const ElfW(Sym) *defsym, DL_FIXUP_VALUE_TYPE *value, -- 2.35.1