Commit 66ac993bda for qemu.org

commit 66ac993bdacf4d30e96db4dc82f9644913d5f7b7
Author: Bin Guo <guobin@linux.alibaba.com>
Date:   Sat May 30 14:28:16 2026 +0800

    util/cutils: drop qemu_strnlen() in favor of strnlen()

    There are only three call sites, and strnlen() is available on all
    supported platforms (POSIX.1-2008, Windows via UCRT, MinGW).  Remove
    the hand-rolled wrapper and use the standard function directly.

    While here, align bsd-user/uaccess.c to use size_t for max_len/len,
    matching linux-user/uaccess.c and eliminating a signed/unsigned mismatch.

    Also remove the stale qemu_strnlen() entry from docs/devel/style.rst.

    Suggested-by: Philippe Mathieu-Daudé <philmd@linaro.org>
    Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org>
    Signed-off-by: Bin Guo <guobin@linux.alibaba.com>
    Reviewed-by: Alex Bennée <alex.bennee@linaro.org>
    Reviewed-by: Warner Losh <imp@bsdimp.com>
    Message-ID: <20260530062816.59206-1-guobin@linux.alibaba.com>
    Signed-off-by: Philippe Mathieu-Daudé <philmd@oss.qualcomm.com>

diff --git a/bsd-user/uaccess.c b/bsd-user/uaccess.c
index 89163257f4..7ad4b580f4 100644
--- a/bsd-user/uaccess.c
+++ b/bsd-user/uaccess.c
@@ -43,7 +43,7 @@ abi_long target_strlen(abi_ulong guest_addr1)
 {
     uint8_t *ptr;
     abi_ulong guest_addr;
-    int max_len, len;
+    size_t max_len, len;

     guest_addr = guest_addr1;
     for (;;) {
@@ -51,7 +51,7 @@ abi_long target_strlen(abi_ulong guest_addr1)
         ptr = lock_user(VERIFY_READ, guest_addr, max_len, 1);
         if (!ptr)
             return -TARGET_EFAULT;
-        len = qemu_strnlen((const char *)ptr, max_len);
+        len = strnlen((const char *)ptr, max_len);
         unlock_user(ptr, guest_addr, 0);
         guest_addr += len;
         /* we don't allow wrapping or integer overflow */
diff --git a/docs/devel/style.rst b/docs/devel/style.rst
index f4da16a0e8..6c5f94cc50 100644
--- a/docs/devel/style.rst
+++ b/docs/devel/style.rst
@@ -519,7 +519,6 @@ QEMU provides other useful string functions:

     int strstart(const char *str, const char *val, const char **ptr)
     int stristart(const char *str, const char *val, const char **ptr)
-    int qemu_strnlen(const char *s, int max_len)

 There are also replacement character processing macros for isxyz and toxyz,
 so instead of e.g. isalnum you should use qemu_isalnum.
diff --git a/include/qemu/cutils.h b/include/qemu/cutils.h
index 36c68ce86c..d249f22676 100644
--- a/include/qemu/cutils.h
+++ b/include/qemu/cutils.h
@@ -101,22 +101,7 @@ int strstart(const char *str, const char *val, const char **ptr);
  *          false otherwise.
  */
 int stristart(const char *str, const char *val, const char **ptr);
-/**
- * qemu_strnlen:
- * @s: string
- * @max_len: maximum number of bytes in @s to scan
- *
- * Return the length of the string @s, like strlen(), but do not
- * examine more than @max_len bytes of the memory pointed to by @s.
- * If no NUL terminator is found within @max_len bytes, then return
- * @max_len instead.
- *
- * This function has the same behaviour as the POSIX strnlen()
- * function.
- *
- * Returns: length of @s in bytes, or @max_len, whichever is smaller.
- */
-int qemu_strnlen(const char *s, int max_len);
+
 /**
  * qemu_strsep:
  * @input: pointer to string to parse
diff --git a/linux-user/uaccess.c b/linux-user/uaccess.c
index 27e841e651..f9bd713edd 100644
--- a/linux-user/uaccess.c
+++ b/linux-user/uaccess.c
@@ -99,7 +99,7 @@ ssize_t target_strlen(abi_ulong guest_addr1)
         ptr = lock_user(VERIFY_READ, guest_addr, max_len, 1);
         if (!ptr)
             return -TARGET_EFAULT;
-        len = qemu_strnlen((const char *)ptr, max_len);
+        len = strnlen((const char *)ptr, max_len);
         unlock_user(ptr, guest_addr, 0);
         guest_addr += len;
         /* we don't allow wrapping or integer overflow */
diff --git a/util/cutils.c b/util/cutils.c
index 76a9442085..96c80d4d42 100644
--- a/util/cutils.c
+++ b/util/cutils.c
@@ -54,7 +54,7 @@

 void strpadcpy(char *buf, int buf_size, const char *str, char pad)
 {
-    int len = qemu_strnlen(str, buf_size);
+    size_t len = strnlen(str, buf_size);
     memcpy(buf, str, len);
     memset(buf + len, pad, buf_size - len);
 }
@@ -118,19 +118,6 @@ int stristart(const char *str, const char *val, const char **ptr)
     return 1;
 }

-/* XXX: use host strnlen if available ? */
-int qemu_strnlen(const char *s, int max_len)
-{
-    int i;
-
-    for(i = 0; i < max_len; i++) {
-        if (s[i] == '\0') {
-            break;
-        }
-    }
-    return i;
-}
-
 char *qemu_strsep(char **input, const char *delim)
 {
     char *result = *input;