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