Skip to content

Commit 369cd21

Browse files
committed
fortify: Prepare to improve strnlen() and strlen() warnings
In order to have strlen() use fortified strnlen() internally, swap their positions in the source. Doing this as part of later changes makes review difficult, so reoroder it here; no code changes. Cc: Francis Laniel <[email protected]> Signed-off-by: Kees Cook <[email protected]> Reviewed-by: Nick Desaulniers <[email protected]>
1 parent 072af0c commit 369cd21

File tree

1 file changed

+11
-11
lines changed

1 file changed

+11
-11
lines changed

include/linux/fortify-string.h

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -56,6 +56,17 @@ __FORTIFY_INLINE char *strcat(char *p, const char *q)
5656
return p;
5757
}
5858

59+
extern __kernel_size_t __real_strnlen(const char *, __kernel_size_t) __RENAME(strnlen);
60+
__FORTIFY_INLINE __kernel_size_t strnlen(const char *p, __kernel_size_t maxlen)
61+
{
62+
size_t p_size = __builtin_object_size(p, 1);
63+
__kernel_size_t ret = __real_strnlen(p, maxlen < p_size ? maxlen : p_size);
64+
65+
if (p_size <= ret && maxlen != ret)
66+
fortify_panic(__func__);
67+
return ret;
68+
}
69+
5970
__FORTIFY_INLINE __kernel_size_t strlen(const char *p)
6071
{
6172
__kernel_size_t ret;
@@ -71,17 +82,6 @@ __FORTIFY_INLINE __kernel_size_t strlen(const char *p)
7182
return ret;
7283
}
7384

74-
extern __kernel_size_t __real_strnlen(const char *, __kernel_size_t) __RENAME(strnlen);
75-
__FORTIFY_INLINE __kernel_size_t strnlen(const char *p, __kernel_size_t maxlen)
76-
{
77-
size_t p_size = __builtin_object_size(p, 1);
78-
__kernel_size_t ret = __real_strnlen(p, maxlen < p_size ? maxlen : p_size);
79-
80-
if (p_size <= ret && maxlen != ret)
81-
fortify_panic(__func__);
82-
return ret;
83-
}
84-
8585
/* defined after fortified strlen to reuse it */
8686
extern size_t __real_strlcpy(char *, const char *, size_t) __RENAME(strlcpy);
8787
__FORTIFY_INLINE size_t strlcpy(char *p, const char *q, size_t size)

0 commit comments

Comments
 (0)