www.delorie.com/archives/browse.cgi   search  
Mail Archives: djgpp/1997/03/19/19:39:22

To: Eli Zaretskii <eliz AT is DOT elta DOT co DOT il>
cc: djgpp AT delorie DOT com, dan AT verity DOT ICS DOT UCI DOT EDU
Subject: Re: novice errors? dpmi, info, groff, df
In-reply-to: Your message of "Wed, 19 Mar 1997 12:29:28 +0300."
<Pine DOT SUN DOT 3 DOT 91 DOT 970319122722 DOT 19845B-100000 AT is>
Date: Wed, 19 Mar 1997 16:25:23 -0800
From: Dan Hirschberg <dan AT verity DOT ICS DOT UCI DOT EDU>
Message-ID: <9703191625.aa02458@paris.ics.uci.edu>

 > ---------------------- statfs.c ----------------------------------
 > /* Copyright (C) 1995 DJ Delorie, see COPYING.DJ for details */
 > #include <dpmi.h>

 >   __dpmi_regs regs;

 >   /* Get free space info */
 >   regs.h.ah = 0x36;		/* DOS Get Free Disk Space call */
 >   regs.h.dl = drive_number + 1;
 >   __dpmi_int(0x21, &regs);
 > 
 >   /* Check for errors */
 >   if ((regs.x.ax & 0xffff) == 0xffff)
 >   {
 >     errno = ENODEV;
 >     return -1;
 >   }
 > 
 >   /* Fill in the structure */
 >   buf->f_bavail = regs.x.bx;
 >   buf->f_bfree = regs.x.bx;
 >   buf->f_blocks = regs.x.dx;
 >   buf->f_bsize = regs.x.cx * regs.x.ax;
 >   buf->f_ffree = regs.x.bx;

I note that regs.x.ax etc. are declared as unsigned short
and it is possible that there is an integer overflow.
Does regs.x.bx_hi have any meaning?  It has value 11826.

Similarly, regs.x.ax_hi =  8224
           regs.x.cx_hi = 30049
           regs.x.dx_hi = 28524

dan

- Raw text -


  webmaster     delorie software   privacy  
  Copyright © 2019   by DJ Delorie     Updated Jul 2019