Browse Source

prefer memcpy to strcpy

When we already know the length of a string (e.g., because
we just malloc'd to fit it), it's nicer to use memcpy than
strcpy, as it makes it more obvious that we are not going to
overflow the buffer (because the size we pass matches the
size in the allocation).

This also eliminates calls to strcpy, which make auditing
the code base harder.

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
34fa79a6cd
  1. 5
      compat/nedmalloc/nedmalloc.c
  2. 5
      fast-import.c
  3. 2
      revision.c

5
compat/nedmalloc/nedmalloc.c

@ -957,8 +957,9 @@ char *strdup(const char *s1) @@ -957,8 +957,9 @@ char *strdup(const char *s1)
{
char *s2 = 0;
if (s1) {
s2 = malloc(strlen(s1) + 1);
strcpy(s2, s1);
size_t len = strlen(s1) + 1;
s2 = malloc(len);
memcpy(s2, s1, len);
}
return s2;
}

5
fast-import.c

@ -644,8 +644,9 @@ static void *pool_calloc(size_t count, size_t size) @@ -644,8 +644,9 @@ static void *pool_calloc(size_t count, size_t size)

static char *pool_strdup(const char *s)
{
char *r = pool_alloc(strlen(s) + 1);
strcpy(r, s);
size_t len = strlen(s) + 1;
char *r = pool_alloc(len);
memcpy(r, s, len);
return r;
}


2
revision.c

@ -38,7 +38,7 @@ char *path_name(const struct name_path *path, const char *name) @@ -38,7 +38,7 @@ char *path_name(const struct name_path *path, const char *name)
}
n = xmalloc(len);
m = n + len - (nlen + 1);
strcpy(m, name);
memcpy(m, name, nlen + 1);
for (p = path; p; p = p->up) {
if (p->elem_len) {
m -= p->elem_len + 1;

Loading…
Cancel
Save