diff options
| author | Tom Rini <trini@konsulko.com> | 2026-07-06 18:26:12 -0600 |
|---|---|---|
| committer | Tom Rini <trini@konsulko.com> | 2026-07-06 18:26:12 -0600 |
| commit | ee5d46b45ec0c63f8f9dd1e816e0dac3452ccc3d (patch) | |
| tree | 800cd9e204ca027144070101884c0d5d3c00130f /lib/string.c | |
| parent | ece349ade2973e220f524ce59e59711cc919263f (diff) | |
| parent | a18265f1ccb7a272721ed4286ed3b5a6182ff424 (diff) | |
| download | u-boot-master.tar.gz u-boot-master.zip | |
Merge branch 'next'HEADmasterWIP/06Jul2026
Diffstat (limited to 'lib/string.c')
| -rw-r--r-- | lib/string.c | 51 |
1 files changed, 18 insertions, 33 deletions
diff --git a/lib/string.c b/lib/string.c index 302efe048b0..37ea8c29561 100644 --- a/lib/string.c +++ b/lib/string.c @@ -343,41 +343,29 @@ size_t strcspn(const char *s, const char *reject) } #endif -#ifndef __HAVE_ARCH_STRDUP -char * strdup(const char *s) +void *memdup_nul(const void *src, size_t len) { - char *new; + char *dst; - if ((s == NULL) || - ((new = malloc (strlen(s) + 1)) == NULL) ) { + if (len + 1 < len) return NULL; - } - strcpy (new, s); - return new; -} - -char * strndup(const char *s, size_t n) -{ - size_t len; - char *new; - - if (s == NULL) + dst = malloc(len + 1); + if (!dst) return NULL; - len = strlen(s); - - if (n < len) - len = n; - - new = malloc(len + 1); - if (new == NULL) - return NULL; + dst[len] = '\0'; + return memcpy(dst, src, len); +} - strncpy(new, s, len); - new[len] = '\0'; +char * strdup(const char *s) +{ + return s ? memdup_nul(s, strlen(s)) : NULL; +} - return new; +char * strndup(const char *s, size_t n) +{ + return s ? memdup_nul(s, strnlen(s, n)) : NULL; } /** @@ -410,7 +398,6 @@ void kfree_const(const void *x) free((void *)x); } -#endif #ifndef __HAVE_ARCH_STRSPN /** @@ -698,17 +685,15 @@ void * memscan(void * addr, int c, size_t size) } #endif -char *memdup(const void *src, size_t len) +void *memdup(const void *src, size_t len) { - char *p; + void *p; p = malloc(len); if (!p) return NULL; - memcpy(p, src, len); - - return p; + return memcpy(p, src, len); } #ifndef __HAVE_ARCH_STRNSTR |
