[OpenBIOS] [PATCH 9/10] Divide by zero check
Mark Cave-Ayland
mark.cave-ayland at siriusit.co.uk
Wed Aug 10 13:00:01 CEST 2011
On 09/08/11 22:55, William Hahne wrote:
> It is possible for BootX to purposefully divide by zero expecting 0 as
> the result.
>
> Index: kernel/forth.c
> ===================================================================
> --- kernel/forth.c (revision 1041)
> +++ kernel/forth.c (working copy)
> @@ -1157,6 +1157,12 @@
> {
> const ucell b = POP();
> const ducell a = DPOP();
> +
> + if (b == 0) { // can't divide by zero
> + PUSH(0);
> + DPUSH(0);
> + return;
> + }
> #ifdef NEED_FAKE_INT128_T
> if (a.hi != 0) {
> fprintf(stderr, "mudivmod called (0x%016llx %016llx /
> 0x%016llx)\n",
There is something wrong here: nothing will purposefully divide by zero
as it will invoke a trap somewhere. Again, I think this is hiding
another bug somewhere and is not necessarily the correct fix.
ATB,
Mark.
--
Mark Cave-Ayland - Senior Technical Architect
PostgreSQL - PostGIS
Sirius Corporation plc - control through freedom
http://www.siriusit.co.uk
t: +44 870 608 0063
Sirius Labs: http://www.siriusit.co.uk/labs
More information about the OpenBIOS
mailing list