[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
bug#14917: Missing range check in fxcopy-bit can give SIGABRT
From: |
Göran Weinholt |
Subject: |
bug#14917: Missing range check in fxcopy-bit can give SIGABRT |
Date: |
Sat, 20 Jul 2013 08:57:29 +0200 |
User-agent: |
Gnus/5.13 (Gnus v5.13) Emacs/23.4 (gnu/linux) |
Hello schemers,
the fxcopy-bit procedure from (rnrs) is missing some range checks. It
can return a non-fixnum:
scheme@(guile-user)> (import (rnrs))
scheme@(guile-user)> (fxcopy-bit 0 (fixnum-width) 1)
$1 = 9223372036854775808
It can also crash the guile process, which is somewhat surprising for a
fixnum procedure:
scheme@(guile-user)> (import (rnrs))
scheme@(guile-user)> (fxcopy-bit 0 100000000000 0)
FATAL: memory error in realloc
Aborted
Here's an alternative error message:
scheme@(guile-user)> (import (rnrs))
scheme@(guile-user)> (fxcopy-bit 0 1000000000000 0)
gmp: overflow in mpz type
Aborted
Other implementations of fxcopy-bit usually check that the third
argument is 0 or 1, but I'm not sure that is required.
There's also a bitwise-copy-bit procedure that is similary affected.
Tested with Guile 2.0.9.40-824b-dirty on an amd64 system.
Regards,
--
Göran Weinholt <address@hidden>
"Mr. Crane, please remember you're not required to answer any of
Lt. Tragg's questions. As a matter of fact, don't even discuss the
weather with him, he can be very persuasive." -- Perry Mason
pgppy6Gu0ajCE.pgp
Description: PGP signature
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- bug#14917: Missing range check in fxcopy-bit can give SIGABRT,
Göran Weinholt <=