From 70a7a3a54d4e300c7ec75d18d14d6d6b174c9ee4 Mon Sep 17 00:00:00 2001 From: Charles Date: Mon, 21 Oct 2019 13:23:11 +0200 Subject: fixed strnstr, added protection on specific functions of part1 --- ft_lstmap_bonus.c | 2 +- ft_memcpy.c | 4 ++-- ft_memmove.c | 5 +++-- ft_memset.c | 13 +++++++++---- ft_strlcpy.c | 4 +++- ft_strncmp.c | 4 +++- ft_strnstr.c | 14 +++++--------- 7 files changed, 26 insertions(+), 20 deletions(-) diff --git a/ft_lstmap_bonus.c b/ft_lstmap_bonus.c index 47d72a0..1dfce78 100644 --- a/ft_lstmap_bonus.c +++ b/ft_lstmap_bonus.c @@ -6,7 +6,7 @@ /* By: cacharle +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2019/10/09 09:03:57 by cacharle #+# #+# */ -/* Updated: 2019/10/17 09:07:55 by cacharle ### ########.fr */ +/* Updated: 2019/10/21 11:43:10 by cacharle ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/ft_memcpy.c b/ft_memcpy.c index 4ee9c75..642db20 100644 --- a/ft_memcpy.c +++ b/ft_memcpy.c @@ -6,7 +6,7 @@ /* By: cacharle +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2019/10/07 10:00:07 by cacharle #+# #+# */ -/* Updated: 2019/10/20 12:32:36 by cacharle ### ########.fr */ +/* Updated: 2019/10/21 11:17:05 by cacharle ### ########.fr */ /* */ /* ************************************************************************** */ @@ -16,7 +16,7 @@ void *ft_memcpy(void *dest, const void *src, size_t n) { size_t i; - if (dest == NULL && src == NULL) + if (dest == NULL) return (NULL); i = 0; while (i < n) diff --git a/ft_memmove.c b/ft_memmove.c index e400e91..0b7e430 100644 --- a/ft_memmove.c +++ b/ft_memmove.c @@ -6,7 +6,7 @@ /* By: cacharle +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2019/10/07 10:03:21 by cacharle #+# #+# */ -/* Updated: 2019/10/20 12:54:40 by cacharle ### ########.fr */ +/* Updated: 2019/10/21 11:07:04 by cacharle ### ########.fr */ /* */ /* ************************************************************************** */ @@ -26,7 +26,8 @@ void *ft_memmove(void *dst, const void *src, size_t len) src_cast = (t_byte*)src; i = -1; if (dst_cast < src_cast) - ft_memcpy(dst, src, len); + while (++i < len) + dst_cast[i] = src_cast[i]; else while (len-- > 0) dst_cast[len] = src_cast[len]; diff --git a/ft_memset.c b/ft_memset.c index b5520db..c1fcda6 100644 --- a/ft_memset.c +++ b/ft_memset.c @@ -6,18 +6,23 @@ /* By: cacharle +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2019/10/07 10:01:23 by cacharle #+# #+# */ -/* Updated: 2019/10/18 13:08:10 by cacharle ### ########.fr */ +/* Updated: 2019/10/21 11:35:07 by cacharle ### ########.fr */ /* */ /* ************************************************************************** */ #include +#include "libft.h" void *ft_memset(void *s, int c, size_t n) { - unsigned char uchar_c; + t_byte cast_c; + t_byte *cast_s; - uchar_c = (unsigned char)c; + if (s == NULL) + return (NULL); + cast_c = (t_byte)c; + cast_s = (t_byte*)s; while (n-- > 0) - ((unsigned char*)s)[n] = uchar_c; + *cast_s++ = cast_c; return (s); } diff --git a/ft_strlcpy.c b/ft_strlcpy.c index cff1a31..0b1b0d4 100644 --- a/ft_strlcpy.c +++ b/ft_strlcpy.c @@ -6,7 +6,7 @@ /* By: cacharle +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2019/10/07 12:28:47 by cacharle #+# #+# */ -/* Updated: 2019/10/20 13:17:52 by cacharle ### ########.fr */ +/* Updated: 2019/10/21 11:05:52 by cacharle ### ########.fr */ /* */ /* ************************************************************************** */ @@ -17,6 +17,8 @@ size_t ft_strlcpy(char *dst, const char *src, size_t size) { unsigned int i; + if (dst == NULL || src == NULL) + return (0); if (size == 0) return (ft_strlen(src)); i = -1; diff --git a/ft_strncmp.c b/ft_strncmp.c index 9e5dfcd..e8188d0 100644 --- a/ft_strncmp.c +++ b/ft_strncmp.c @@ -6,7 +6,7 @@ /* By: cacharle +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2019/10/07 10:27:34 by cacharle #+# #+# */ -/* Updated: 2019/10/20 13:15:38 by cacharle ### ########.fr */ +/* Updated: 2019/10/21 11:04:38 by cacharle ### ########.fr */ /* */ /* ************************************************************************** */ @@ -19,5 +19,7 @@ int ft_strncmp(const char *s1, const char *s2, size_t n) i = 0; while (i < n && s1[i] == s2[i] && s1[i] && s2[i]) i++; + if (i == n) + i--; return (((unsigned char*)s1)[i] - ((unsigned char*)s2)[i]); } diff --git a/ft_strnstr.c b/ft_strnstr.c index 5f6f0f1..4ca9f4b 100644 --- a/ft_strnstr.c +++ b/ft_strnstr.c @@ -6,7 +6,7 @@ /* By: cacharle +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2019/10/07 10:25:13 by cacharle #+# #+# */ -/* Updated: 2019/10/20 14:21:42 by cacharle ### ########.fr */ +/* Updated: 2019/10/21 11:04:56 by cacharle ### ########.fr */ /* */ /* ************************************************************************** */ @@ -16,20 +16,16 @@ char *ft_strnstr(const char *haystack, const char *needle, size_t len) { - size_t i; - /* size_t j; */ size_t needle_len; - char *mut_haystack; needle_len = ft_strlen(needle); if (needle_len == 0) return ((char*)haystack); - mut_haystack = (char*)haystack; - i = -1; - while (++i < len && haystack[i]) + while (*haystack && len-- >= needle_len) { - if (ft_strncmp(mut_haystack + i, needle, needle_len) == 0) - return (mut_haystack + i); + if (ft_strncmp(haystack, needle, needle_len) == 0) + return ((char*)haystack); + haystack++; } return (NULL); } -- cgit