range_strinbuf(3) range check for string in buffer


#include <rangecheck.h>

int range_strinbuf(const void* buf,size_t len,const void* stringstart);


range_strinbuf checks that the ASCIIZ-string starting at stringstart starts and ends within the buffer buf[0..len-1].

If the string is not 0-terminated but the length is known beforehand, use range_arrayinbuf instead.


If the buffer is implausible (buf is NULL or buf+len has an integer overflow), return 0.

If stringstart points before or after the buffer, return 0.

If there is no '\0' within the buffer, return 0.

Otherwise, return 1.