Change strncpy to either memcpy (when we know the len), or strlcpy (when

we used to NUL terminate explicitly.
This commit is contained in:
christos 2019-10-08 19:17:57 +00:00
parent b16b0b556b
commit 991f62167b
3 changed files with 21 additions and 25 deletions

View File

@ -1,4 +1,4 @@
/* $NetBSD: filecomplete.c,v 1.58 2019/09/08 05:50:58 abhinav Exp $ */
/* $NetBSD: filecomplete.c,v 1.59 2019/10/08 19:17:57 christos Exp $ */
/*-
* Copyright (c) 1997 The NetBSD Foundation, Inc.
@ -31,7 +31,7 @@
#include "config.h"
#if !defined(lint) && !defined(SCCSID)
__RCSID("$NetBSD: filecomplete.c,v 1.58 2019/09/08 05:50:58 abhinav Exp $");
__RCSID("$NetBSD: filecomplete.c,v 1.59 2019/10/08 19:17:57 christos Exp $");
#endif /* not lint && not SCCSID */
#include <sys/types.h>
@ -86,8 +86,7 @@ fn_tilde_expand(const char *txt)
temp = el_calloc(len, sizeof(*temp));
if (temp == NULL)
return NULL;
(void)strncpy(temp, txt + 1, len - 2);
temp[len - 2] = '\0';
(void)strlcpy(temp, txt + 1, len - 2);
}
if (temp[0] == 0) {
#ifdef HAVE_GETPW_R_POSIX
@ -354,8 +353,7 @@ fn_filename_completion_function(const char *text, int state)
return NULL;
}
dirname = nptr;
(void)strncpy(dirname, text, len);
dirname[len] = '\0';
(void)strlcpy(dirname, text, len);
} else {
el_free(filename);
if (*text == 0)
@ -464,6 +462,7 @@ out:
*/
char ** completion_matches(const char *, char *(*)(const char *, int));
char **
/*###467 [lint] completion_matches arg 1 declared inconsistently (pointer to const char != pointer to char) filecomplete.c(467) :: readline.c?(53)%%%*/
completion_matches(const char *text, char *(*genfunc)(const char *, int))
{
char **match_list = NULL, *retstr, *prevstr;
@ -509,8 +508,7 @@ completion_matches(const char *text, char *(*genfunc)(const char *, int))
el_free(match_list);
return NULL;
}
(void)strncpy(retstr, match_list[1], max_equal);
retstr[max_equal] = '\0';
(void)strlcpy(retstr, match_list[1], max_equal);
match_list[0] = retstr;
/* add NULL as last pointer to the array */

View File

@ -1,4 +1,4 @@
/* $NetBSD: history.c,v 1.62 2018/09/13 09:03:40 kre Exp $ */
/* $NetBSD: history.c,v 1.63 2019/10/08 19:17:57 christos Exp $ */
/*-
* Copyright (c) 1992, 1993
@ -37,7 +37,7 @@
#if 0
static char sccsid[] = "@(#)history.c 8.1 (Berkeley) 6/4/93";
#else
__RCSID("$NetBSD: history.c,v 1.62 2018/09/13 09:03:40 kre Exp $");
__RCSID("$NetBSD: history.c,v 1.63 2019/10/08 19:17:57 christos Exp $");
#endif
#endif /* not lint && not SCCSID */
@ -411,21 +411,23 @@ static int
history_def_add(void *p, TYPE(HistEvent) *ev, const Char *str)
{
history_t *h = (history_t *) p;
size_t len;
size_t len, elen, slen;
Char *s;
HistEventPrivate *evp = (void *)&h->cursor->ev;
if (h->cursor == &h->list)
return history_def_enter(p, ev, str);
len = Strlen(evp->str) + Strlen(str) + 1;
elen = Strlen(evp->str);
slen = Strlen(str);
len = elen + slen + 1;
s = h_malloc(len * sizeof(*s));
if (s == NULL) {
he_seterrev(ev, _HE_MALLOC_FAILED);
return -1;
}
(void) Strncpy(s, h->cursor->ev.str, len);
memcpy(s, evp->str, elen * sizeof(*s));
memcpy(s + elen, str, slen * sizeof(*s));
s[len - 1] = '\0';
(void) Strncat(s, str, len - Strlen(s) - 1);
h_free(evp->str);
evp->str = s;
*ev = h->cursor->ev;

View File

@ -1,4 +1,4 @@
/* $NetBSD: readline.c,v 1.157 2019/08/21 11:11:48 christos Exp $ */
/* $NetBSD: readline.c,v 1.158 2019/10/08 19:17:57 christos Exp $ */
/*-
* Copyright (c) 1997 The NetBSD Foundation, Inc.
@ -31,7 +31,7 @@
#include "config.h"
#if !defined(lint) && !defined(SCCSID)
__RCSID("$NetBSD: readline.c,v 1.157 2019/08/21 11:11:48 christos Exp $");
__RCSID("$NetBSD: readline.c,v 1.158 2019/10/08 19:17:57 christos Exp $");
#endif /* not lint && not SCCSID */
#include <sys/types.h>
@ -521,7 +521,7 @@ _rl_compat_sub(const char *str, const char *what, const char *with,
s = str;
while (*s) {
if (*s == *what && !strncmp(s, what, what_len)) {
(void)strncpy(r, with, with_len);
memcpy(r, with, with_len);
r += with_len;
s += what_len;
if (!globally) {
@ -607,8 +607,7 @@ get_history_event(const char *cmd, int *cindex, int qchar)
else {
if ((pat = el_calloc(len + 1, sizeof(*pat))) == NULL)
return NULL;
(void)strncpy(pat, cmd + begin, len);
pat[len] = '\0';
(void)strlcpy(pat, cmd + begin, len);
}
if (history(h, &ev, H_CURR) != 0) {
@ -702,8 +701,7 @@ _history_expand_command(const char *command, size_t offs, size_t cmdlen,
if ((aptr = el_calloc(offs + 1, sizeof(*aptr)))
== NULL)
return -1;
(void)strncpy(aptr, command, offs);
aptr[offs] = '\0';
strlcpy(aptr, command, offs);
idx = 1;
} else {
int qchar;
@ -960,9 +958,8 @@ history_expand(char *str, char **output)
} \
result = nresult; \
} \
(void)strncpy(&result[idx], what, len); \
(void)strlcpy(&result[idx], what, len); \
idx += len; \
result[idx] = '\0'; \
}
result = NULL;
@ -1150,8 +1147,7 @@ history_tokenize(const char *str)
el_free(result);
return NULL;
}
(void)strncpy(temp, &str[start], len);
temp[len] = '\0';
(void)strlcpy(temp, &str[start], len);
result[idx++] = temp;
result[idx] = NULL;
if (str[i])