#include <sys/types.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
int main(int argc, char *argv[])
{
char *buf;
int failures = 0;
size_t len, bufsize;
bufsize = getpagesize();
buf = malloc(bufsize);
if (buf == NULL) {
fprintf(stderr, "unable to allocate memory\n");
return 1;
}
memset(buf, 'a', bufsize);
len = strnlen(buf, bufsize);
if (len != bufsize) {
fprintf(stderr, "strnlen: failed unterminated buffer test (1)");
failures++;
}
len = strnlen(buf, bufsize / 2);
if (len != bufsize / 2) {
fprintf(stderr, "strnlen: failed unterminated buffer test (2)");
failures++;
}
buf[bufsize - 1] = '\0';
len = strnlen(buf, bufsize);
if (len != bufsize - 1) {
fprintf(stderr, "strnlen: failed NUL-terminated buffer test (1)");
failures++;
}
len = strnlen(buf, (size_t)-1);
if (len != bufsize - 1) {
fprintf(stderr, "strnlen: failed NUL-terminated buffer test (2)");
failures++;
}
return failures;
}