From owner-svn-src-head@freebsd.org Tue Mar 7 13:38:26 2017 Return-Path: Delivered-To: svn-src-head@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id E347CD00FAF; Tue, 7 Mar 2017 13:38:26 +0000 (UTC) (envelope-from kib@FreeBSD.org) Received: from repo.freebsd.org (repo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mx1.freebsd.org (Postfix) with ESMTPS id B303518FE; Tue, 7 Mar 2017 13:38:26 +0000 (UTC) (envelope-from kib@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id v27DcP86070167; Tue, 7 Mar 2017 13:38:25 GMT (envelope-from kib@FreeBSD.org) Received: (from kib@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id v27DcPDQ070166; Tue, 7 Mar 2017 13:38:25 GMT (envelope-from kib@FreeBSD.org) Message-Id: <201703071338.v27DcPDQ070166@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: kib set sender to kib@FreeBSD.org using -f From: Konstantin Belousov Date: Tue, 7 Mar 2017 13:38:25 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r314851 - head/sys/kern X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-head@freebsd.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: SVN commit messages for the src tree for head/-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 07 Mar 2017 13:38:27 -0000 Author: kib Date: Tue Mar 7 13:38:25 2017 New Revision: 314851 URL: https://svnweb.freebsd.org/changeset/base/314851 Log: When selecting brand based on old Elf branding, prefer the brand which interpreter exactly matches the one requested by the activated image. This change applies r295277, which did the same for note branding, to the old brand selection, with the same reasoning of fixing compat32 interpreter substitution. PR: 211837 Reported by: kenji@kens.fm Sponsored by: The FreeBSD Foundation MFC after: 1 week Modified: head/sys/kern/imgact_elf.c Modified: head/sys/kern/imgact_elf.c ============================================================================== --- head/sys/kern/imgact_elf.c Tue Mar 7 13:37:35 2017 (r314850) +++ head/sys/kern/imgact_elf.c Tue Mar 7 13:38:25 2017 (r314851) @@ -312,10 +312,23 @@ __elfN(get_brandinfo)(struct image_param strcmp((const char *)&hdr->e_ident[OLD_EI_BRAND], bi->compat_3_brand) == 0)) { /* Looks good, but give brand a chance to veto */ - if (!bi->header_supported || bi->header_supported(imgp)) - return (bi); + if (!bi->header_supported || + bi->header_supported(imgp)) { + /* + * Again, prefer strictly matching + * interpreter path. + */ + if (strlen(bi->interp_path) + 1 == + interp_name_len && strncmp(interp, + bi->interp_path, interp_name_len) == 0) + return (bi); + if (bi_m == NULL) + bi_m = bi; + } } } + if (bi_m != NULL) + return (bi_m); /* No known brand, see if the header is recognized by any brand */ for (i = 0; i < MAX_BRANDS; i++) {