X-Git-Url: https://git.saurik.com/apple/security.git/blobdiff_plain/e3d460c9de4426da6c630c3ae3f46173a99f82d8..918dce6758f4f57e8c0b650cb5eead501f6684ca:/OSX/libsecurity_cdsa_utilities/lib/cssmdb.h diff --git a/OSX/libsecurity_cdsa_utilities/lib/cssmdb.h b/OSX/libsecurity_cdsa_utilities/lib/cssmdb.h index 186e7669..66c9bcb2 100644 --- a/OSX/libsecurity_cdsa_utilities/lib/cssmdb.h +++ b/OSX/libsecurity_cdsa_utilities/lib/cssmdb.h @@ -199,8 +199,13 @@ public: CssmDlDbHandle *handles() const { return CssmDlDbHandle::overlay(DLDBHandle); } CssmDlDbHandle * &handles() { return CssmDlDbHandle::overlayVar(DLDBHandle); } - CssmDlDbHandle &operator [] (uint32 ix) const - { assert(ix < count()); return CssmDlDbHandle::overlay(DLDBHandle[ix]); } + CssmDlDbHandle &operator [] (uint32 ix) const { + if (ix >= count()) { + secemergency("CssmDlDbList: attempt to index beyond bounds"); + abort(); + } + return CssmDlDbHandle::overlay(DLDBHandle[ix]); + } void setDlDbList(uint32 n, CSSM_DL_DB_HANDLE *list) { count() = n; handles() = CssmDlDbHandle::overlay(list); } @@ -345,8 +350,13 @@ public: { return CssmDbAttributeInfo::overlayVar(AttributeInfo); } CssmDbAttributeInfo *attributes() const { return CssmDbAttributeInfo::overlay(AttributeInfo); } - CssmDbAttributeInfo &at(uint32 ix) const - { assert(ix < size()); return attributes()[ix]; } + CssmDbAttributeInfo &at(uint32 ix) const { + if (ix >= size()) { + secemergency("CssmDbRecordAttributeInfo: attempt to index beyond bounds"); + abort(); + } + return attributes()[ix]; + } CssmDbAttributeInfo &operator [] (uint32 ix) const { return at(ix); } }; @@ -481,8 +491,13 @@ public: { return CssmDbAttributeData::overlay(AttributeData); } // Attributes by position - CssmDbAttributeData &at(unsigned int ix) const - { assert(ix < size()); return attributes()[ix]; } + CssmDbAttributeData &at(unsigned int ix) const { + if (ix >= size()) { + secemergency("CssmDbRecordAttributeData: attempt to index beyond bounds"); + abort(); + } + return attributes()[ix]; + } CssmDbAttributeData &operator [] (unsigned int ix) const { return at(ix); } @@ -596,8 +611,13 @@ public: CssmSelectionPredicate *predicates() const { return CssmSelectionPredicate::overlay(SelectionPredicate); } - CssmSelectionPredicate &at(uint32 ix) const - { assert(ix < size()); return predicates()[ix]; } + CssmSelectionPredicate &at(uint32 ix) const { + if (ix >= size()) { + secemergency("CssmDbRecordAttributeData: attempt to index beyond bounds"); + abort(); + } + return predicates()[ix]; + } CssmSelectionPredicate &operator[] (uint32 ix) const { return at(ix); }