svn commit: r315241 - stable/11/sys/kern

Konstantin Belousov kib at FreeBSD.org
Tue Mar 14 10:09:52 UTC 2017


Author: kib
Date: Tue Mar 14 10:09:50 2017
New Revision: 315241
URL: https://svnweb.freebsd.org/changeset/base/315241

Log:
  MFC r314851:
  When selecting brand based on old Elf branding, prefer the brand which
  interpreter exactly matches the one requested by the activated image.

Modified:
  stable/11/sys/kern/imgact_elf.c
Directory Properties:
  stable/11/   (props changed)

Modified: stable/11/sys/kern/imgact_elf.c
==============================================================================
--- stable/11/sys/kern/imgact_elf.c	Tue Mar 14 10:08:12 2017	(r315240)
+++ stable/11/sys/kern/imgact_elf.c	Tue Mar 14 10:09:50 2017	(r315241)
@@ -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++) {


More information about the svn-src-all mailing list