version 1.3, 2019/02/11 21:41:22 |
version 1.4, 2019/05/08 20:00:25 |
|
|
|
|
for (sz = MAXPATHLEN; ; sz *= 2) { |
for (sz = MAXPATHLEN; ; sz *= 2) { |
if ((pp = realloc(buf, sz + 1)) == NULL) { |
if ((pp = realloc(buf, sz + 1)) == NULL) { |
ERR(sess, "realloc"); |
ERR("realloc"); |
free(buf); |
free(buf); |
return NULL; |
return NULL; |
} |
} |
buf = pp; |
buf = pp; |
|
|
if ((nsz = readlink(path, buf, sz)) == -1) { |
if ((nsz = readlink(path, buf, sz)) == -1) { |
ERR(sess, "%s: readlink", path); |
ERR("%s: readlink", path); |
free(buf); |
free(buf); |
return NULL; |
return NULL; |
} else if (nsz == 0) { |
} else if (nsz == 0) { |
ERRX(sess, "%s: empty link", path); |
ERRX("%s: empty link", path); |
free(buf); |
free(buf); |
return NULL; |
return NULL; |
} else if ((size_t)nsz < sz) |
} else if ((size_t)nsz < sz) |
|
|
|
|
for (sz = MAXPATHLEN; ; sz *= 2) { |
for (sz = MAXPATHLEN; ; sz *= 2) { |
if ((pp = realloc(buf, sz + 1)) == NULL) { |
if ((pp = realloc(buf, sz + 1)) == NULL) { |
ERR(sess, "realloc"); |
ERR("realloc"); |
free(buf); |
free(buf); |
return NULL; |
return NULL; |
} |
} |
buf = pp; |
buf = pp; |
|
|
if ((nsz = readlinkat(fd, path, buf, sz)) == -1) { |
if ((nsz = readlinkat(fd, path, buf, sz)) == -1) { |
ERR(sess, "%s: readlinkat", path); |
ERR("%s: readlinkat", path); |
free(buf); |
free(buf); |
return NULL; |
return NULL; |
} else if (nsz == 0) { |
} else if (nsz == 0) { |
ERRX(sess, "%s: empty link", path); |
ERRX("%s: empty link", path); |
free(buf); |
free(buf); |
return NULL; |
return NULL; |
} else if ((size_t)nsz < sz) |
} else if ((size_t)nsz < sz) |