X-Git-Url: http://git.mutantstargoat.com/user/nuclear/?p=bootcensus;a=blobdiff_plain;f=src%2Fvbe.c;h=d4847d2a2226dfcd5e368e77d9cb9f66fd0e64a6;hp=58cf2e710189e7016d56cf2c619c69bae05e99f5;hb=a26564bc44eab32bea085e08fc83b7a1ab15f93f;hpb=395502ec9dab0fda04bacb223f1fecdbbbdbe1b7 diff --git a/src/vbe.c b/src/vbe.c index 58cf2e7..d4847d2 100644 --- a/src/vbe.c +++ b/src/vbe.c @@ -9,14 +9,14 @@ #define MODE_LFB (1 << 14) -extern void *low_mem_buffer; +extern unsigned char low_mem_buffer[]; struct vbe_info *vbe_get_info(void) { struct vbe_info *info; struct int86regs regs; - info = low_mem_buffer; + info = (struct vbe_info*)low_mem_buffer; memcpy(info->sig, "VBE2", 4); @@ -25,6 +25,10 @@ struct vbe_info *vbe_get_info(void) regs.eax = 0x4f00; int86(0x10, ®s); + if((regs.eax & 0xffff) != 0x4f) { + return 0; + } + return info; } @@ -33,7 +37,7 @@ struct vbe_mode_info *vbe_get_mode_info(int mode) struct vbe_mode_info *mi; struct int86regs regs; - mi = low_mem_buffer; + mi = (struct vbe_mode_info*)low_mem_buffer; memset(®s, 0, sizeof regs); regs.es = (uint32_t)low_mem_buffer >> 4; @@ -41,7 +45,7 @@ struct vbe_mode_info *vbe_get_mode_info(int mode) regs.ecx = mode; int86(0x10, ®s); - if(regs.eax & 0xff00) { + if((regs.eax & 0xffff) != 0x4f) { return 0; }