gdi: add sanitychecks on framebuffer fd
authorpieterg <pieterg@users.sourceforge.net>
Thu, 7 May 2015 09:06:27 +0000 (11:06 +0200)
committerpieterg <pieterg@users.sourceforge.net>
Thu, 7 May 2015 09:06:27 +0000 (11:06 +0200)
lib/gdi/bcm.cpp
lib/gdi/fb.cpp

index 6f7d025..3bbeb17 100644 (file)
@@ -69,6 +69,8 @@ static int exec_list(void)
                int len;
        } l;
 
+       if (fb_fd < 0) return -1;
+
        l.ptr = displaylist;
        l.len = ptr;
        ret = ioctl(fb_fd, FBIO_ACCEL, &l);
index ea725ed..85a16ac 100644 (file)
@@ -100,6 +100,7 @@ int fbClass::showConsole(int state)
 
 int fbClass::SetMode(int nxRes, int nyRes, int nbpp)
 {
+       if (fbFd < 0) return -1;
        screeninfo.xres_virtual=screeninfo.xres=nxRes;
        screeninfo.yres_virtual=(screeninfo.yres=nyRes)*2;
        screeninfo.height=0;
@@ -179,6 +180,7 @@ void fbClass::getMode(int &xres, int &yres, int &bpp)
 
 int fbClass::setOffset(int off)
 {
+       if (fbFd < 0) return -1;
        screeninfo.xoffset = 0;
        screeninfo.yoffset = off;
        return ioctl(fbFd, FBIOPAN_DISPLAY, &screeninfo);
@@ -187,11 +189,13 @@ int fbClass::setOffset(int off)
 int fbClass::waitVSync()
 {
        int c = 0;
+       if (fbFd < 0) return -1;
        return ioctl(fbFd, FBIO_WAITFORVSYNC, &c);
 }
 
 void fbClass::blit()
 {
+       if (fbFd < 0) return;
        if (m_manual_blit == 1) {
                if (ioctl(fbFd, FBIO_BLIT) < 0)
                        eDebug("[fb] FBIO_BLIT: %m");
@@ -216,6 +220,7 @@ fbClass::~fbClass()
 
 int fbClass::PutCMAP()
 {
+       if (fbFd < 0) return -1;
        return ioctl(fbFd, FBIOPUTCMAP, &cmap);
 }
 
@@ -247,6 +252,7 @@ void fbClass::unlock()
 void fbClass::enableManualBlit()
 {
        unsigned char tmp = 1;
+       if (fbFd < 0) return -1;
        if (ioctl(fbFd,FBIO_SET_MANUAL_BLIT, &tmp)<0)
                eDebug("[fb] enable FBIO_SET_MANUAL_BLIT: %m");
        else
@@ -256,6 +262,7 @@ void fbClass::enableManualBlit()
 void fbClass::disableManualBlit()
 {
        unsigned char tmp = 0;
+       if (fbFd < 0) return -1;
        if (ioctl(fbFd,FBIO_SET_MANUAL_BLIT, &tmp)<0)
                eDebug("[fb] disable FBIO_SET_MANUAL_BLIT: %m");
        else