Page MenuHomeFreeBSD

DIOCGSECTORSIZE expects to write to a u_int, but the struct zfs_probe_args member secsz is uint16_t
ClosedPublic

Authored by allanjude on Jan 7 2016, 1:45 AM.
Tags
None
Referenced Files
Unknown Object (File)
Fri, Aug 21, 5:58 PM
Unknown Object (File)
Fri, Aug 21, 5:58 PM
Unknown Object (File)
Fri, Aug 21, 5:54 PM
Unknown Object (File)
Mon, Aug 3, 2:53 PM
Unknown Object (File)
Jul 22 2026, 8:43 AM
Unknown Object (File)
Jul 21 2026, 5:13 PM
Unknown Object (File)
Jul 18 2026, 2:24 AM
Unknown Object (File)
Jul 10 2026, 4:53 PM
Subscribers

Details

Summary

https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=204358
Submitted by Toomas Soome

sys/boot/zfs/zfs.c has probe args structure including uint16_t secsz variable for media sector size; its used as an argument for ioctl() at line 484

however, this ioctl is expecting 32bit data (u_int *) and therefore this ioctl will overwrite and corrupt 16bits of memory.
other use cases seem to use correct u_int type for secsz.

Diff Detail

Repository
rS FreeBSD src repository - subversion
Lint
Lint Not Applicable
Unit
Tests Not Applicable

Event Timeline

allanjude retitled this revision from to DIOCGSECTORSIZE expects to write to a u_int, but the struct zfs_probe_args member secsz is uint16_t.
allanjude updated this object.
allanjude edited the test plan for this revision. (Show Details)
allanjude added reviewers: smh, delphij, asomers, avg, gibbs, will.
asomers edited edge metadata.

LGTM from inspection. If you'd like, I can test it on Monday.

This revision is now accepted and ready to land.Jan 9 2016, 12:09 AM
delphij added a subscriber: tsoome.
delphij edited edge metadata.

This change is reasonable.

smh edited edge metadata.
This revision was automatically updated to reflect the committed changes.