diff options
author | emaste <emaste@FreeBSD.org> | 2015-04-20 17:43:55 +0000 |
---|---|---|
committer | emaste <emaste@FreeBSD.org> | 2015-04-20 17:43:55 +0000 |
commit | 4f24a027f8b28c1a9960ed43d66b8929a1e4542a (patch) | |
tree | d44a6faf01fbfcc8bbf7b5d1c19b4e27befec2a3 /usr.sbin | |
parent | 8da3c52e6bf9c53a921feb38b55d5d6bb0d91106 (diff) | |
download | FreeBSD-src-4f24a027f8b28c1a9960ed43d66b8929a1e4542a.zip FreeBSD-src-4f24a027f8b28c1a9960ed43d66b8929a1e4542a.tar.gz |
vidcontrol: skip invalid video modes returned by vt(4)
vt(4) has a stub CONS_MODEINFO ioctl that does not provide any data
but returns success. This needs to be fixed in the kernel, but address
it in vidcontrol(1) as well in case it's run on an older kernel.
Reviewed by: bde
Sponsored by: The FreeBSD Foundation
Diffstat (limited to 'usr.sbin')
-rw-r--r-- | usr.sbin/vidcontrol/vidcontrol.c | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/usr.sbin/vidcontrol/vidcontrol.c b/usr.sbin/vidcontrol/vidcontrol.c index e1981f3..cbf8f47 100644 --- a/usr.sbin/vidcontrol/vidcontrol.c +++ b/usr.sbin/vidcontrol/vidcontrol.c @@ -1085,12 +1085,16 @@ show_mode_info(void) printf("---------------------------------------" "---------------------------------------\n"); + memset(&_info, 0, sizeof(_info)); for (mode = 0; mode <= M_VESA_MODE_MAX; ++mode) { _info.vi_mode = mode; if (ioctl(0, CONS_MODEINFO, &_info)) continue; if (_info.vi_mode != mode) continue; + if (_info.vi_width == 0 && _info.vi_height == 0 && + _info.vi_cwidth == 0 && _info.vi_cheight == 0) + continue; printf("%3d (0x%03x)", mode, mode); printf(" 0x%08x", _info.vi_flags); |