svn commit: r361927 - stable/12/lib/librtld_db

Mark Johnston markj at FreeBSD.org
Mon Jun 8 13:27:46 UTC 2020


Author: markj
Date: Mon Jun  8 13:27:45 2020
New Revision: 361927
URL: https://svnweb.freebsd.org/changeset/base/361927

Log:
  MFC r361844:
  librtld_db: Handle anonymous mappings below the first file mapping.

Modified:
  stable/12/lib/librtld_db/rtld_db.c
Directory Properties:
  stable/12/   (props changed)

Modified: stable/12/lib/librtld_db/rtld_db.c
==============================================================================
--- stable/12/lib/librtld_db/rtld_db.c	Mon Jun  8 11:48:07 2020	(r361926)
+++ stable/12/lib/librtld_db/rtld_db.c	Mon Jun  8 13:27:45 2020	(r361927)
@@ -186,11 +186,15 @@ rd_loadobj_iter(rd_agent_t *rdap, rl_iter_f *cb, void 
 		 * file, but we want the mapping offset relative to the base
 		 * mapping.
 		 */
-		if (kve->kve_type == KVME_TYPE_VNODE &&
-		    kve->kve_vn_fileid != fileid) {
-			base = kve->kve_start;
-			fileid = kve->kve_vn_fileid;
-			path = kve->kve_path;
+		if (kve->kve_type == KVME_TYPE_VNODE) {
+			if (kve->kve_vn_fileid != fileid) {
+				base = kve->kve_start;
+				fileid = kve->kve_vn_fileid;
+				path = kve->kve_path;
+			}
+		} else {
+			base = 0;
+			path = NULL;
 		}
 		memset(&rdl, 0, sizeof(rdl));
 		/*
@@ -205,7 +209,8 @@ rd_loadobj_iter(rd_agent_t *rdap, rl_iter_f *cb, void 
 			rdl.rdl_prot |= RD_RDL_W;
 		if (kve->kve_protection & KVME_PROT_EXEC)
 			rdl.rdl_prot |= RD_RDL_X;
-		strlcpy(rdl.rdl_path, path, sizeof(rdl.rdl_path));
+		if (path != NULL)
+			strlcpy(rdl.rdl_path, path, sizeof(rdl.rdl_path));
 		if ((*cb)(&rdl, clnt_data) != 0) {
 			ret = RD_ERR;
 			break;


More information about the svn-src-all mailing list