mirror of
https://github.com/opnsense/src.git
synced 2026-05-28 04:12:45 -04:00
MFV r326785: 8880 improve DTrace error checking
illumos/illumos-gate@2cf374268f
2cf374268f
https://www.illumos.org/issues/8880
Reviewed by: Tim Kordas <tim.kordas@joyent.com>
Reviewed by: Bryan Cantrill <bryan@joyent.com>
Reviewed by: Richard Lowe <richlowe@richlowe.net>
Approved by: Dan McDonald <danmcd@joyent.com>
Author: Jerry Jelinek <jerry.jelinek@joyent.com>
MFC after: 1 week
This commit is contained in:
commit
a981eff82e
1 changed files with 7 additions and 0 deletions
|
|
@ -13929,6 +13929,7 @@ dtrace_dof_relocate(dof_hdr_t *dof, dof_sec_t *sec, uint64_t ubase,
|
|||
uint64_t udaddr)
|
||||
{
|
||||
uintptr_t daddr = (uintptr_t)dof;
|
||||
uintptr_t ts_end;
|
||||
dof_relohdr_t *dofr =
|
||||
(dof_relohdr_t *)(uintptr_t)(daddr + sec->dofs_offset);
|
||||
dof_sec_t *ss, *rs, *ts;
|
||||
|
|
@ -13944,6 +13945,7 @@ dtrace_dof_relocate(dof_hdr_t *dof, dof_sec_t *sec, uint64_t ubase,
|
|||
ss = dtrace_dof_sect(dof, DOF_SECT_STRTAB, dofr->dofr_strtab);
|
||||
rs = dtrace_dof_sect(dof, DOF_SECT_RELTAB, dofr->dofr_relsec);
|
||||
ts = dtrace_dof_sect(dof, DOF_SECT_NONE, dofr->dofr_tgtsec);
|
||||
ts_end = (uintptr_t)ts + sizeof (dof_sec_t);
|
||||
|
||||
if (ss == NULL || rs == NULL || ts == NULL)
|
||||
return (-1); /* dtrace_dof_error() has been called already */
|
||||
|
|
@ -13971,6 +13973,11 @@ dtrace_dof_relocate(dof_hdr_t *dof, dof_sec_t *sec, uint64_t ubase,
|
|||
return (-1);
|
||||
}
|
||||
|
||||
if (taddr >= (uintptr_t)ts && taddr < ts_end) {
|
||||
dtrace_dof_error(dof, "bad relocation offset");
|
||||
return (-1);
|
||||
}
|
||||
|
||||
if (!IS_P2ALIGNED(taddr, sizeof (uint64_t))) {
|
||||
dtrace_dof_error(dof, "misaligned setx relo");
|
||||
return (-1);
|
||||
|
|
|
|||
Loading…
Reference in a new issue