[HB] Tag sanitize()
This commit is contained in:
parent
e49a84c9e3
commit
738c54d9ca
|
@ -282,6 +282,14 @@ struct Tag : ULONG
|
|||
/* What the char* converters return is NOT nul-terminated. Print using "%.4s" */
|
||||
inline operator const char* (void) const { return CONST_CHARP(this); }
|
||||
inline operator char* (void) { return CHARP(this); }
|
||||
|
||||
inline bool sanitize (SANITIZE_ARG_DEF) {
|
||||
/* Note: Only accept ASCII-visible tags (mind DEL)
|
||||
* This is one of the few times (only time?) we check
|
||||
* for data integrity, as opposed o just boundary checks
|
||||
*/
|
||||
return SANITIZE_SELF () && (((uint32_t) *this) & 0x80808080) == 0;
|
||||
}
|
||||
};
|
||||
ASSERT_SIZE (Tag, 4);
|
||||
#define _NULL_TAG_INIT {' ', ' ', ' ', ' '}
|
||||
|
|
|
@ -47,11 +47,7 @@ template <typename Type>
|
|||
struct Record
|
||||
{
|
||||
inline bool sanitize (SANITIZE_ARG_DEF, const void *base) {
|
||||
/* Note: Only accept ASCII-visible tags (mind DEL)
|
||||
* This is one of the few times (only time?) we check
|
||||
* for data integrity, as opposed o just boundary checks
|
||||
*/
|
||||
return (tag & 0x80808080) == 0 && offset.sanitize (SANITIZE_ARG, base);
|
||||
return SANITIZE (tag) == 0 && SANITIZE_BASE (offset, base);
|
||||
}
|
||||
|
||||
Tag tag; /* 4-byte Tag identifier */
|
||||
|
|
Loading…
Reference in New Issue