Ravenbrook / Projects / Memory Pool System / Issues

Memory Pool System


MPS issue job001556

Title: MPS defect in BS_IS_SINGLE could make some checks ineffective
Status: closed
Priority: optional
Assigned user: Richard Kistruck
Product: mps
Organization: Ravenbrook
Description: MPS defect in BS_IS_SINGLE could make some checks ineffective

RHSK 2006-12-18
BS_IS_SINGLE in misc.h is wrong! See http://info.ravenbrook.com/mail/2006/09/26/19-26-34/0.txt. The MPS only uses this macro in a small number of AVERs and CHECKs. See http://info.ravenbrook.com/mail/2006/09/27/11-35-58/0.txt. The defect could make these checks ineffective.
Analysis: RHSK 2006-12-18
BS_IS_SINGLE is wrong for 0.
Wrong:
#define BS_IS_SINGLE(s) (((s) & ((s)-1)) == 0)
Right:
#define BS_IS_SINGLE(s) ( ((s) != 0) && (((s) & ((s)-1)) == 0) )

Introduced 1997/02/25 18:28:21, change 16806.
How found: unknown
Evidence: //info.ravenbrook.com/project/mps/master/code/misc.h#13
http://info.ravenbrook.com/mail/2006/09/26/19-26-34/0.txt
Observed in: 1.107.0
Introduced in: 0.0.0
Test procedure: none
Created by: Richard Kistruck
Created on: 2006-12-18 15:38:10
Last modified by: Richard Kistruck
Last modified on: 2006-12-18 16:10:45
History: 2006-12-18 RHSK Created.

Fixes

Change Effect Date User Description
161296 closed 2006-12-18 16:10:17 Richard Kistruck MPS correct BS_IS_SINGLE (only used in AVERs and CHECKs)

Generated at 2008-09-06 23:29:06 by $Id: //info.ravenbrook.com/infosys/cgi/issue.cgi#430 $

Copyright © Ravenbrook Limited. This document is provided "as is", without any express or implied warranty. In no event will the authors be held liable for any damages arising from the use of this document. You may not duplicate or reproduce this document in any form without the express permission of the copyright holder.

Ravenbrook / Projects / Memory Pool System / Issues