Commit Graph

19 Commits

Author SHA1 Message Date
Bruce Evans
fbc6daa1dc Fix buffer overruns in modes with color depth more than 8.
Support for 16-bit and 32-bit Truecolor modes was supposed to be
complete in r70991 of main.c and in nearby revisions for other files, but
it was broken by the overruns in most cases (all cases were the mouse
is enabled, and most cases where bitmaps are used).  r70991 also
uninintentionally added support for depths 9-15, 17-23 and 25-31.
Depth 24 was more obviously broken and its support is ifdefed out.  In
the other ranges, only depth 15 is common.  It was broken by buffer
overruns in all cases.

bitmap.c:
- the static buffer was used even when it was too small (but it was
  large enough to often work accidentally in depth 16)
- the size of the dynamically allocated buffer was too small
- the sizing info bitmap->PixelBytes was not inititialzed in the bitmap
  constructor.  It often ended up as 0 for MEMBUFs, so using it in more
  places gave more null pointer accesses.  (It is per-bitmap, but since
  conversion between bitmaps of different depths is not supported (except
  from 4 bits by padding to 8), it would work better if it were global.)

main.c:
- depths were rounded down instead of up to a multiple of 8, so PixelBytes
  was 1 too small for depths above 8 except 16, 24 and 32.
- PixelBytes was not initialized for 4-bit planar modes.  It isn't really
  used for frame buffer accesses in these modes, but needs to be 1 in
  MEMBUF images.

mouse.c:
- the mouse cursor buffers were too small.

vgl.h:
- PixelBytes was not initialized in the static bitmap constructor.  It
  should be initialized to the value for the current mode, but that is
  impossible in a static constructor.  Initialize it to -1 so as to
  fail if it is used without further initialization.

All modes that are supposed to be supported now don't crash in
nontrivial tests, and almost work.  Missing uses of PixelBytes now
give in-bounds wrong pointers instead of overruns.  Misconversions of
bitmaps give multiple miscolored mouse cursors instead of 1 white one,
and similarly for bitmaps copied through a MEMBUF.
2019-03-24 18:57:03 +00:00
Bruce Evans
425c24e5da Fix libvgl to not always fail to initialize due to its invalid mmap()
args (neither MAP_PRIVATE nor MAP_SHARED).  It was broken in r271635
and/or r271724 by stricter checking.  The compatibility code in r271724
doesn't work for my old binaries (actually new binaries with old
libraries).

PR:		needed to test the fix for PR 162373
2019-03-24 16:47:43 +00:00
Pedro F. Giffuni
5e53a4f90f lib: further adoption of SPDX licensing ID tags.
Mainly focus on files that use BSD 2-Clause license, however the tool I
was using mis-identified many licenses so this was mostly a manual - error
prone - task.

The Software Package Data Exchange (SPDX) group provides a specification
to make it easier for automated tools to detect and summarize well known
opensource licenses. We are gradually adopting the specification, noting
that the tags are considered only advisory and do not, in any way,
superceed or replace the license texts.
2017-11-26 02:00:33 +00:00
Ulrich Spörlein
bf3f9db657 Convert files to UTF-8 and add some copyright markers where missing. 2012-01-07 16:13:56 +00:00
Stefan Farfeleder
5e0ddde281 Signal handlers are supposed to take an int parameter.
Approved by:	das (mentor)
2004-06-08 12:24:47 +00:00
Jens Schweikhardt
21dc7d4f57 Fix typo in the BSD copyright: s/withough/without/
Spotted and suggested by:	des
MFC after:	3 weeks
2002-06-02 20:05:59 +00:00
Matthew Dillon
e67f5b9fca Implement __FBSDID() 2001-09-16 21:35:07 +00:00
Kazutaka YOKOTA
16fc634b67 - Do not call VGLEnd() and exit() to terminate the program
immediately when a signal is caught.  Instead, defer
  program termination until the next call to VGLCheckSwitch().
  Otherwise, the video card may not be restored correctly
  if the signal is seen while inside libvgl functions.

MFC after: 1 week
2001-07-24 11:15:20 +00:00
Maxim Sobolev
a8e00009c5 Use CONS_GETINFO ioctl to get geometry of the current text mode instead of
TIOCGWINSZ. The former is more correct in this context.
2001-05-19 17:05:52 +00:00
Maxim Sobolev
ac6468bd08 Don't hardcode geometry of VESA_800x600 raster text mode (80x25). Instead save
actual geometry before switching to the graphics mode.
2001-01-25 16:58:46 +00:00
Nicolas Souchu
e28bc5f477 Set properly the PixelBytes field for 8bits modes.
Submitted by:	Maxim Sobolev <sobomax@FreeBSD.org>
2001-01-25 11:01:20 +00:00
Nicolas Souchu
933d455fac Add Truecolor 16 and 32bits support. Note that 24bits modes are not
supported since it's not easy to put 3 bytes accross 64Kb windows
of memory. This should not be such a problem with linear framebuffers.

There is no major interface modification except that the color type
becomes u_long instead of byte. So one just need to recompile his
application.

Approved by:	Soren Schmidt <sos@freebsd.dk>
2001-01-13 11:30:17 +00:00
Poul-Henning Kamp
00d25f512c Initiate deorbit burn sequence for <machine/console.h>.
Replace all in-tree uses with necessary subset of <sys/{fb,kb,cons}io.h>.
This is also the appropriate fix for exo-tree sources.

Put warnings in <machine/console.h> to discourage use.
November 15th 2000 the warnings will be converted to errors.
January 15th 2001 the <machine/console.h> files will be removed.
2000-10-08 21:34:00 +00:00
Kazutaka YOKOTA
5acf51ea02 - This is the new version of libvgl jointly developed by sos and I.
It adds new functions and extend some structures and can handle
  VESA modes.
- Update the man page.
- Bump the library version number.

(The old version will be added to compat3x.)
1999-11-08 11:37:46 +00:00
Kazutaka YOKOTA
fbe39a1af1 - Handle the signal SIGTERM.
- Slightly rearrange VGLCheckSwitch() to ensure the display content
  will be correctly restored when switching back to the vty where
  the vgl program is running.
- VGLEnd() should clear the screen only when the vty is in the
  foreground.

Discussed with: sos
1999-08-28 02:39:10 +00:00
Peter Wemm
7f3dea244c $Id$ -> $FreeBSD$ 1999-08-28 00:22:10 +00:00
Kazutaka YOKOTA
5e7a62b28b Assorted bug fixes.
keyboard.c
- Call tcsetattr() in VGLKeyboardEnd() to restore tty, only when
  tty attributes have been previously saved.
  PR: misc/9524
  Submitted by: Katusyuki 'kei' Maeda (kei@nanet.co.jp)
- Set up the tty raw mode correctly.

main.c
- Restore VESA_800x600 raster text mode correctly in VGLEnd().
  Submitted by: des

text.c
- Allocate the correct size of a font buffer in VGLSetFontFile().
  I forgot the submitter ;-(

simple.c, bitmap.c
- Fix address calculation for the VGA mode X in VGLGetXY() and
  VGLBitmapCopy().
- Fix typo (dsty -> dstx) in __VGLBitmapCopy().

Reviewed by: sos
1999-08-22 03:31:13 +00:00
Søren Schmidt
b478da3630 Add rudimentary support for using the keyboard. 1997-10-01 20:53:41 +00:00
Søren Schmidt
9a57b7d230 First import of my little "video graphic library".
See the manpage vgl.3 for more info.

A little example will follow shortly.
1997-08-17 21:09:35 +00:00