mirror of
https://git.proxmox.com/git/libgit2
synced 2025-05-29 20:42:23 +00:00
Fix implementation of strndup to not overrun
This commit is contained in:
parent
0f674411e9
commit
2364735c8f
@ -42,12 +42,11 @@ GIT_INLINE(char *) git__strdup(const char *str)
|
||||
|
||||
GIT_INLINE(char *) git__strndup(const char *str, size_t n)
|
||||
{
|
||||
size_t length;
|
||||
size_t length = 0;
|
||||
char *ptr;
|
||||
|
||||
length = strlen(str);
|
||||
if (n < length)
|
||||
length = n;
|
||||
while (length < n && str[length])
|
||||
++length;
|
||||
|
||||
ptr = (char*)malloc(length + 1);
|
||||
if (!ptr) {
|
||||
@ -55,7 +54,9 @@ GIT_INLINE(char *) git__strndup(const char *str, size_t n)
|
||||
return NULL;
|
||||
}
|
||||
|
||||
if (length)
|
||||
memcpy(ptr, str, length);
|
||||
|
||||
ptr[length] = '\0';
|
||||
|
||||
return ptr;
|
||||
|
Loading…
Reference in New Issue
Block a user