зеркало из https://github.com/microsoft/git.git
strbuf_readlink: support link targets that exceed PATH_MAX
strbuf_readlink() refuses to read link targets that exceed PATH_MAX (even if a sufficient size was specified by the caller). As some platforms support longer paths, remove this restriction (similar to strbuf_getcwd()). Signed-off-by: Karsten Blees <blees@dcon.de>
This commit is contained in:
Родитель
8a181e28ed
Коммит
73f2f756f3
4
strbuf.c
4
strbuf.c
|
@ -559,8 +559,6 @@ ssize_t strbuf_write(struct strbuf *sb, FILE *f)
|
||||||
return sb->len ? fwrite(sb->buf, 1, sb->len, f) : 0;
|
return sb->len ? fwrite(sb->buf, 1, sb->len, f) : 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
#define STRBUF_MAXLINK (2*PATH_MAX)
|
|
||||||
|
|
||||||
int strbuf_readlink(struct strbuf *sb, const char *path, size_t hint)
|
int strbuf_readlink(struct strbuf *sb, const char *path, size_t hint)
|
||||||
{
|
{
|
||||||
size_t oldalloc = sb->alloc;
|
size_t oldalloc = sb->alloc;
|
||||||
|
@ -568,7 +566,7 @@ int strbuf_readlink(struct strbuf *sb, const char *path, size_t hint)
|
||||||
if (hint < 32)
|
if (hint < 32)
|
||||||
hint = 32;
|
hint = 32;
|
||||||
|
|
||||||
while (hint < STRBUF_MAXLINK) {
|
for (;;) {
|
||||||
ssize_t len;
|
ssize_t len;
|
||||||
|
|
||||||
strbuf_grow(sb, hint + 1);
|
strbuf_grow(sb, hint + 1);
|
||||||
|
|
Загрузка…
Ссылка в новой задаче