Page MenuHomeFreeBSD

D31603.id94134.diff
No OneTemporary

D31603.id94134.diff

Index: include/string.h
===================================================================
--- include/string.h
+++ include/string.h
@@ -129,7 +129,7 @@
char *strstr(const char *, const char *) __pure;
char *strtok(char * __restrict, const char * __restrict);
#if __POSIX_VISIBLE >= 199506 || __XSI_VISIBLE >= 500
-char *strtok_r(char *, const char *, char **);
+char *strtok_r(char * __restrict, const char * __restrict, char ** __restrict);
#endif
size_t strxfrm(char * __restrict, const char * __restrict, size_t);
#if __BSD_VISIBLE
@@ -145,8 +145,8 @@
void swab(const void * __restrict, void * __restrict, ssize_t);
#endif /* _SWAB_DECLARED */
-int timingsafe_bcmp(const void *, const void *, size_t);
-int timingsafe_memcmp(const void *, const void *, size_t);
+int timingsafe_bcmp(const void *, const void *, size_t) __pure;
+int timingsafe_memcmp(const void *, const void *, size_t) __pure;
#endif /* __BSD_VISIBLE */
#if __POSIX_VISIBLE >= 200112 || defined(_XLOCALE_H_)
Index: lib/libc/string/memccpy.3
===================================================================
--- lib/libc/string/memccpy.3
+++ lib/libc/string/memccpy.3
@@ -28,7 +28,7 @@
.\" @(#)memccpy.3 8.1 (Berkeley) 6/9/93
.\" $FreeBSD$
.\"
-.Dd June 9, 1993
+.Dd July 4, 2021
.Dt MEMCCPY 3
.Os
.Sh NAME
@@ -39,7 +39,7 @@
.Sh SYNOPSIS
.In string.h
.Ft void *
-.Fn memccpy "void *dst" "const void *src" "int c" "size_t len"
+.Fn memccpy "void * restrict dst" "const void * restrict src" "int c" "size_t len"
.Sh DESCRIPTION
The
.Fn memccpy
Index: lib/libc/string/mempcpy.c
===================================================================
--- lib/libc/string/mempcpy.c
+++ lib/libc/string/mempcpy.c
@@ -35,7 +35,7 @@
#include <string.h>
void *
-mempcpy(void *__restrict dst, const void *__restrict src, size_t len)
+mempcpy(void * __restrict dst, const void * __restrict src, size_t len)
{
return ((char *)memcpy(dst, src, len) + len);
}
Index: lib/libc/string/strtok.3
===================================================================
--- lib/libc/string/strtok.3
+++ lib/libc/string/strtok.3
@@ -44,7 +44,7 @@
.\" @(#)strtok.3 8.2 (Berkeley) 2/3/94
.\" $FreeBSD$
.\"
-.Dd January 22, 2016
+.Dd July 4, 2021
.Dt STRTOK 3
.Os
.Sh NAME
@@ -55,9 +55,9 @@
.Sh SYNOPSIS
.In string.h
.Ft char *
-.Fn strtok "char *str" "const char *sep"
+.Fn strtok "char * restrict str" "const char * restrict sep"
.Ft char *
-.Fn strtok_r "char *str" "const char *sep" "char **last"
+.Fn strtok_r "char * restrict str" "const char * restrict sep" "char ** restrict last"
.Sh DESCRIPTION
.Bf -symbolic
This interface is obsoleted by
Index: lib/libc/string/strtok.c
===================================================================
--- lib/libc/string/strtok.c
+++ lib/libc/string/strtok.c
@@ -46,17 +46,18 @@
#endif
#include <string.h>
-char *__strtok_r(char *, const char *, char **);
+char *__strtok_r(char * __restrict, const char * __restrict, char ** __restrict);
__weak_reference(__strtok_r, strtok_r);
char *
-__strtok_r(char *s, const char *delim, char **last)
+__strtok_r(char * __restrict s, const char * __restrict delim, char ** __restrict last)
{
- char *spanp, *tok;
- int c, sc;
+ const char *spanp;
+ char *tok;
+ char c, sc;
- if (s == NULL && (s = *last) == NULL)
+ if (__predict_false(s == NULL && (s = *last) == NULL))
return (NULL);
/*
@@ -64,12 +65,12 @@
*/
cont:
c = *s++;
- for (spanp = (char *)delim; (sc = *spanp++) != 0;) {
+ for (spanp = delim; (sc = *spanp++) != '\0';) {
if (c == sc)
goto cont;
}
- if (c == 0) { /* no non-delimiter characters */
+ if (c == '\0') { /* no non-delimiter characters */
*last = NULL;
return (NULL);
}
@@ -81,23 +82,23 @@
*/
for (;;) {
c = *s++;
- spanp = (char *)delim;
+ spanp = delim;
do {
if ((sc = *spanp++) == c) {
- if (c == 0)
+ if (c == '\0')
s = NULL;
else
s[-1] = '\0';
*last = s;
return (tok);
}
- } while (sc != 0);
+ } while (sc != '\0');
}
/* NOTREACHED */
}
char *
-strtok(char *s, const char *delim)
+strtok(char * __restrict s, const char * __restrict delim)
{
static char *last;
Index: lib/libc/string/strxfrm.3
===================================================================
--- lib/libc/string/strxfrm.3
+++ lib/libc/string/strxfrm.3
@@ -45,7 +45,7 @@
.Ft size_t
.Fn strxfrm "char * restrict dst" "const char * restrict src" "size_t n"
.Ft size_t
-.Fn strxfrm_l "char * restrict dst" "const char *restrict src" "size_t n" "locale_t loc"
+.Fn strxfrm_l "char * restrict dst" "const char * restrict src" "size_t n" "locale_t loc"
.Sh DESCRIPTION
The
.Fn strxfrm
Index: sys/libkern/strdup.c
===================================================================
--- sys/libkern/strdup.c
+++ sys/libkern/strdup.c
@@ -54,7 +54,7 @@
}
char *
-strdup(const char *string, struct malloc_type *type)
+strdup(const char * __restrict string, struct malloc_type *type)
{
return (strdup_flags(string, type, M_WAITOK));
Index: sys/libkern/strlcat.c
===================================================================
--- sys/libkern/strlcat.c
+++ sys/libkern/strlcat.c
@@ -46,21 +46,19 @@
* If retval >= siz, truncation occurred.
*/
size_t
-strlcat(char *dst, const char *src, size_t siz)
+strlcat(char * __restrict dst, const char * __restrict src, size_t siz)
{
char *d = dst;
const char *s = src;
- size_t n = siz;
+ size_t n;
size_t dlen;
/* Find the end of dst and adjust bytes left but don't go past end */
- while (n-- != 0 && *d != '\0')
+ for (n = siz; n != 0 && *d != '\0'; n--)
d++;
dlen = d - dst;
n = siz - dlen;
- if (n == 0)
- return(dlen + strlen(s));
while (*s != '\0') {
if (n != 1) {
*d++ = *s;
@@ -70,5 +68,5 @@
}
*d = '\0';
- return(dlen + (s - src)); /* count does not include NUL */
+ return (dlen + (s - src)); /* count does not include NUL */
}
Index: sys/libkern/strncat.c
===================================================================
--- sys/libkern/strncat.c
+++ sys/libkern/strncat.c
@@ -43,19 +43,18 @@
* are written at dst (at most n+1 bytes being appended). Return dst.
*/
char *
-strncat(char *dst, const char *src, size_t n)
+strncat(char * __restrict dst, const char * __restrict src, size_t n)
{
if (n != 0) {
char *d = dst;
- const char *s = src;
- while (*d != 0)
+ while (*d != '\0')
d++;
do {
- if ((*d = *s++) == '\0')
- break;
- d++;
+ if ((*d = *src) == '\0')
+ return (dst);
+ d++, src++;
} while (--n != 0);
*d = '\0';
}
Index: sys/sys/libkern.h
===================================================================
--- sys/sys/libkern.h
+++ sys/sys/libkern.h
@@ -129,7 +129,7 @@
void arc4random_buf(void *, size_t);
uint32_t arc4random_uniform(uint32_t);
void arc4rand(void *, u_int, int);
-int timingsafe_bcmp(const void *, const void *, size_t);
+int timingsafe_bcmp(const void *, const void *, size_t) __pure;
void *bsearch(const void *, const void *, size_t,
size_t, int (*)(const void *, const void *));
#ifndef HAVE_INLINE_FFS
@@ -158,8 +158,8 @@
int fnmatch(const char *, const char *, int);
int locc(int, char *, u_int);
-void *memchr(const void *s, int c, size_t n);
-void *memcchr(const void *s, int c, size_t n);
+void *memchr(const void *s, int c, size_t n) __pure;
+void *memcchr(const void *s, int c, size_t n) __pure;
void *memmem(const void *l, size_t l_len, const void *s, size_t s_len);
void qsort(void *base, size_t nmemb, size_t size,
int (*compar)(const void *, const void *));
@@ -167,40 +167,40 @@
int (*compar)(void *, const void *, const void *));
u_long random(void);
int scanc(u_int, const u_char *, const u_char *, int);
-int strcasecmp(const char *, const char *);
-char *strcasestr(const char *, const char *);
+int strcasecmp(const char *, const char *) __pure;
+char *strcasestr(const char *, const char *) __pure;
char *strcat(char * __restrict, const char * __restrict);
-char *strchr(const char *, int);
-char *strchrnul(const char *, int);
-int strcmp(const char *, const char *);
+char *strchr(const char *, int) __pure;
+char *strchrnul(const char *, int) __pure;
+int strcmp(const char *, const char *) __pure;
char *strcpy(char * __restrict, const char * __restrict);
-char *strdup_flags(const char *__restrict, struct malloc_type *, int);
size_t strcspn(const char *, const char *) __pure;
-char *strdup(const char *__restrict, struct malloc_type *);
-char *strncat(char *, const char *, size_t);
-char *strndup(const char *__restrict, size_t, struct malloc_type *);
-size_t strlcat(char *, const char *, size_t);
-size_t strlcpy(char *, const char *, size_t);
-size_t strlen(const char *);
-int strncasecmp(const char *, const char *, size_t);
-int strncmp(const char *, const char *, size_t);
+char *strdup_flags(const char * __restrict, struct malloc_type *, int) __malloc_like;
+char *strdup(const char * __restrict, struct malloc_type *) __malloc_like;
+char *strncat(char * __restrict, const char * __restrict, size_t);
+char *strndup(const char * __restrict, size_t, struct malloc_type *) __malloc_like;
+size_t strlcat(char * __restrict, const char * __restrict, size_t);
+size_t strlcpy(char * __restrict, const char * __restrict, size_t);
+size_t strlen(const char *) __pure;
+int strncasecmp(const char *, const char *, size_t) __pure;
+int strncmp(const char *, const char *, size_t) __pure;
char *strncpy(char * __restrict, const char * __restrict, size_t);
-size_t strnlen(const char *, size_t);
+size_t strnlen(const char *, size_t) __pure;
char *strnstr(const char *, const char *, size_t);
-char *strrchr(const char *, int);
+char *strrchr(const char *, int) __pure;
char *strsep(char **, const char *delim);
-size_t strspn(const char *, const char *);
-char *strstr(const char *, const char *);
-int strvalid(const char *, size_t);
+size_t strspn(const char *, const char *) __pure;
+char *strstr(const char *, const char *) __pure;
+int strvalid(const char *, size_t) __pure;
#ifdef SAN_NEEDS_INTERCEPTORS
#ifndef SAN_INTERCEPTOR
#define SAN_INTERCEPTOR(func) \
__CONCAT(SAN_INTERCEPTOR_PREFIX, __CONCAT(_, func))
#endif
-char *SAN_INTERCEPTOR(strcpy)(char *, const char *);
-int SAN_INTERCEPTOR(strcmp)(const char *, const char *);
-size_t SAN_INTERCEPTOR(strlen)(const char *);
+char *SAN_INTERCEPTOR(strcpy)(char * __restrict, const char * __restrict);
+int SAN_INTERCEPTOR(strcmp)(const char *, const char *) __pure;
+size_t SAN_INTERCEPTOR(strlen)(const char *) __pure;
#ifndef SAN_RUNTIME
#define strcpy(d, s) SAN_INTERCEPTOR(strcpy)((d), (s))
#define strcmp(s1, s2) SAN_INTERCEPTOR(strcmp)((s1), (s2))

File Metadata

Mime Type
text/plain
Expires
Mon, Oct 27, 6:39 AM (13 h, 32 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
24242599
Default Alt Text
D31603.id94134.diff (10 KB)

Event Timeline