summaryrefslogtreecommitdiffstats
path: root/newlib/libc
diff options
context:
space:
mode:
Diffstat (limited to 'newlib/libc')
-rw-r--r--newlib/libc/argz/envz_merge.c1
-rw-r--r--newlib/libc/ctype/iswalpha.c2
-rw-r--r--newlib/libc/locale/ldpart.c3
3 files changed, 4 insertions, 2 deletions
diff --git a/newlib/libc/argz/envz_merge.c b/newlib/libc/argz/envz_merge.c
index 46832202e..8a26bc3c3 100644
--- a/newlib/libc/argz/envz_merge.c
+++ b/newlib/libc/argz/envz_merge.c
@@ -55,6 +55,7 @@ _DEFUN (envz_merge, (envz, envz_len, envz2, envz2_len, override),
}
retval = envz_add(envz, envz_len, name_str, val_str);
+ free(name_str);
}
}
return retval;
diff --git a/newlib/libc/ctype/iswalpha.c b/newlib/libc/ctype/iswalpha.c
index 16d424086..71f0e4a4b 100644
--- a/newlib/libc/ctype/iswalpha.c
+++ b/newlib/libc/ctype/iswalpha.c
@@ -415,7 +415,7 @@ _DEFUN(iswalpha,(c), wint_t c)
/* otherwise c > *ptr */
/* look for 0x0 as next element which indicates a range */
++ptr;
- if (*ptr == 0x0)
+ if (ptr < table + size - 1 && *ptr == 0x0)
{
/* we have a range..see if c falls within range */
++ptr;
diff --git a/newlib/libc/locale/ldpart.c b/newlib/libc/locale/ldpart.c
index 595532298..35ad3bd13 100644
--- a/newlib/libc/locale/ldpart.c
+++ b/newlib/libc/locale/ldpart.c
@@ -110,7 +110,7 @@ __part_load_locale(const char *name,
goto bad_locale;
if (st.st_size <= 0)
goto bad_locale;
- bufsize = namesize + st.st_size;
+ bufsize = namesize + st.st_size + 1;
locale_buf = NULL;
if (lbuf == NULL || lbuf == locale_buf_C)
@@ -137,6 +137,7 @@ __part_load_locale(const char *name,
/*
* Parse the locale file into localebuf.
*/
+ p[st.st_size] = '\0';
if (plim[-1] != '\n')
goto bad_lbuf;
num_lines = split_lines(p, plim);