convert strncpy to memcpy
strncpy is known to be a confusing function because of its termination semantics. These calls are all correct, but it takes some examination to see why. In particular, every one of them expects to copy up to the length limit, and then makes some arrangement for terminating the result. We can just use memcpy, along with noting explicitly how the result is terminated (if it is not already obvious). That should make it more clear to a reader that we are doing the right thing. Signed-off-by: Jeff King <peff@peff.net> Signed-off-by: Junio C Hamano <gitster@pobox.com>
Jeff King committed
Sep 24, 2015 at 17:08 UTC
eddda371449ba925d91d04c615d084adf1b43a33
3 files changed
+4
-4
builtin/help.c
+2
-2
@@ -176,7 +176,7 @@ static void add_man_viewer(const char *name)
176
while (*p)
177
p = &((*p)->next);
178
*p = xcalloc(1, (sizeof(**p) + len + 1));
179
- strncpy((*p)->name, name, len);
179
+ memcpy((*p)->name, name, len); /* NUL-terminated by xcalloc */
180
}
181
182
static int supported_man_viewer(const char *name, size_t len)
@@ -192,7 +192,7 @@ static void do_add_man_viewer_info(const char *name,
192
{
193
struct man_viewer_info_list *new = xcalloc(1, sizeof(*new) + len + 1);
194
195
- strncpy(new->name, name, len);
195
+ memcpy(new->name, name, len); /* NUL-terminated by xcalloc */
196
new->info = xstrdup(value);
197
new->next = man_viewer_info_list;
198
man_viewer_info_list = new;
fast-import.c
+1
-1
@@ -703,7 +703,7 @@ static struct atom_str *to_atom(const char *s, unsigned short len)
703
704
c = pool_alloc(sizeof(struct atom_str) + len + 1);
705
c->str_len = len;
706
- strncpy(c->str_dat, s, len);
706
+ memcpy(c->str_dat, s, len);
707
c->str_dat[len] = 0;
708
c->next_atom = atom_table[hc];
709
atom_table[hc] = c;
tag.c
+1
-1
@@ -82,7 +82,7 @@ int parse_tag_buffer(struct tag *item, const void *data, unsigned long size)
82
nl = memchr(bufptr, '\n', tail - bufptr);
83
if (!nl || sizeof(type) <= (nl - bufptr))
84
return -1;
85
- strncpy(type, bufptr, nl - bufptr);
85
+ memcpy(type, bufptr, nl - bufptr);
86
type[nl - bufptr] = '\0';
87
bufptr = nl + 1;
88