diff --git a/sys/kern/subr_module.c b/sys/kern/subr_module.c --- a/sys/kern/subr_module.c +++ b/sys/kern/subr_module.c @@ -371,7 +371,8 @@ sbuf_printf(sbp, "%s", (char *)bptr); break; case MODINFO_SIZE: - sbuf_printf(sbp, "%lu", *(u_long *)bptr); + if (len >= (int)sizeof(u_long)) + sbuf_printf(sbp, "%lu", *(u_long *)bptr); break; case MODINFO_ADDR: case MODINFO_METADATA | MODINFOMD_SSYM: @@ -381,7 +382,8 @@ case MODINFO_METADATA | MODINFOMD_ENVP: case MODINFO_METADATA | MODINFOMD_SMAP: case MODINFO_METADATA | MODINFOMD_EFI_FB: - sbuf_printf(sbp, "0x%016lx", *(vm_offset_t *)bptr); + if (len >= (int)sizeof(vm_offset_t)) + sbuf_printf(sbp, "0x%016lx", *(vm_offset_t *)bptr); break; case MODINFO_METADATA | MODINFOMD_HOWTO: sbuf_printf(sbp, "0x%08x", *bptr);