#include "glib.h" /** * @brief 测量来自用户空间的字符串的长度,会检验地址空间是否属于用户空间 * @param src * @param maxlen * @return long */ long strnlen_user(const char *src, unsigned long maxlen) { unsigned long size = strlen(src); // 地址不合法 if (!verify_area((uint64_t)src, size)) return 0; return size <= maxlen ? size : maxlen; } long strnlen(const char *src, unsigned long maxlen) { if (src == NULL) return 0; register int __res = 0; while (src[__res] != '\0' && __res < maxlen) { ++__res; } return __res; }