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;
_______________________________________________
svn-src-all@freebsd.org mailing list
https://lists.freebsd.org/mailman/listinfo/svn-src-all
To unsubscribe, send any mail to "svn-src-all-unsubscr...@freebsd.org"

Reply via email to