Author: markj
Date: Mon May  9 17:13:40 2016
New Revision: 299277
URL: https://svnweb.freebsd.org/changeset/base/299277

Log:
  MFC r298589:
  Allow DOF sections with excessively long probe function components.
  
  PR:   207735

Modified:
  stable/10/sys/cddl/contrib/opensolaris/uts/common/dtrace/dtrace.c
Directory Properties:
  stable/10/   (props changed)

Modified: stable/10/sys/cddl/contrib/opensolaris/uts/common/dtrace/dtrace.c
==============================================================================
--- stable/10/sys/cddl/contrib/opensolaris/uts/common/dtrace/dtrace.c   Mon May 
 9 16:42:46 2016        (r299276)
+++ stable/10/sys/cddl/contrib/opensolaris/uts/common/dtrace/dtrace.c   Mon May 
 9 17:13:40 2016        (r299277)
@@ -9295,6 +9295,10 @@ dtrace_helper_provide_one(dof_helper_t *
                probe = (dof_probe_t *)(uintptr_t)(daddr +
                    prb_sec->dofs_offset + i * prb_sec->dofs_entsize);
 
+               /* See the check in dtrace_helper_provider_validate(). */
+               if (strlen(strtab + probe->dofpr_func) >= DTRACE_FUNCNAMELEN)
+                       continue;
+
                dhpb.dthpb_mod = dhp->dofhp_mod;
                dhpb.dthpb_func = strtab + probe->dofpr_func;
                dhpb.dthpb_name = strtab + probe->dofpr_name;
@@ -15805,7 +15809,13 @@ dtrace_helper_provider_validate(dof_hdr_
 
                if (strlen(strtab + probe->dofpr_func) >= DTRACE_FUNCNAMELEN) {
                        dtrace_dof_error(dof, "function name too long");
-                       return (-1);
+                       /*
+                        * Keep going if the function name is too long.
+                        * Unlike provider and probe names, we cannot reasonably
+                        * impose restrictions on function names, since they're
+                        * a property of the code being instrumented. We will
+                        * skip this probe in dtrace_helper_provide_one().
+                        */
                }
 
                if (probe->dofpr_name >= str_sec->dofs_size ||
_______________________________________________
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