Browse Source

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>
maint
Jeff King 10 years ago committed by Junio C Hamano
parent
commit
eddda37144
  1. 4
      builtin/help.c
  2. 2
      fast-import.c
  3. 2
      tag.c

4
builtin/help.c

@ -176,7 +176,7 @@ static void add_man_viewer(const char *name) @@ -176,7 +176,7 @@ static void add_man_viewer(const char *name)
while (*p)
p = &((*p)->next);
*p = xcalloc(1, (sizeof(**p) + len + 1));
strncpy((*p)->name, name, len);
memcpy((*p)->name, name, len); /* NUL-terminated by xcalloc */
}

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,7 +192,7 @@ static void do_add_man_viewer_info(const char *name,
{
struct man_viewer_info_list *new = xcalloc(1, sizeof(*new) + len + 1);

strncpy(new->name, name, len);
memcpy(new->name, name, len); /* NUL-terminated by xcalloc */
new->info = xstrdup(value);
new->next = man_viewer_info_list;
man_viewer_info_list = new;

2
fast-import.c

@ -703,7 +703,7 @@ static struct atom_str *to_atom(const char *s, unsigned short len) @@ -703,7 +703,7 @@ static struct atom_str *to_atom(const char *s, unsigned short len)

c = pool_alloc(sizeof(struct atom_str) + len + 1);
c->str_len = len;
strncpy(c->str_dat, s, len);
memcpy(c->str_dat, s, len);
c->str_dat[len] = 0;
c->next_atom = atom_table[hc];
atom_table[hc] = c;

2
tag.c

@ -82,7 +82,7 @@ int parse_tag_buffer(struct tag *item, const void *data, unsigned long size) @@ -82,7 +82,7 @@ int parse_tag_buffer(struct tag *item, const void *data, unsigned long size)
nl = memchr(bufptr, '\n', tail - bufptr);
if (!nl || sizeof(type) <= (nl - bufptr))
return -1;
strncpy(type, bufptr, nl - bufptr);
memcpy(type, bufptr, nl - bufptr);
type[nl - bufptr] = '\0';
bufptr = nl + 1;


Loading…
Cancel
Save