aboutsummaryrefslogtreecommitdiff
path: root/libntp/ntp_realpath.c
diff options
context:
space:
mode:
Diffstat (limited to 'libntp/ntp_realpath.c')
-rw-r--r--libntp/ntp_realpath.c43
1 files changed, 22 insertions, 21 deletions
diff --git a/libntp/ntp_realpath.c b/libntp/ntp_realpath.c
index 116542945153..90e5a0d59e75 100644
--- a/libntp/ntp_realpath.c
+++ b/libntp/ntp_realpath.c
@@ -103,7 +103,7 @@ realpath1(const char *path, char *resolved)
size_t left_len, resolved_len, next_token_len;
unsigned symlinks;
ssize_t slen;
- char left[NTP_PATH_MAX], next_token[NTP_PATH_MAX], symlink[NTP_PATH_MAX];
+ char left[NTP_PATH_MAX], next_token[NTP_PATH_MAX], link_tgt[NTP_PATH_MAX];
symlinks = 0;
if (path[0] == '/') {
@@ -157,7 +157,7 @@ realpath1(const char *path, char *resolved)
resolved[resolved_len++] = '/';
resolved[resolved_len] = '\0';
}
- if (next_token[0] == '\0') {
+ if ('\0' == next_token[0]) {
/* Handle consequential slashes. */
continue;
} else if (strcmp(next_token, ".") == 0) {
@@ -187,23 +187,24 @@ realpath1(const char *path, char *resolved)
if (lstat(resolved, &sb) != 0)
return (NULL);
if (S_ISLNK(sb.st_mode)) {
- if (symlinks++ > NTP_MAXSYMLINKS) {
+ if (++symlinks > NTP_MAXSYMLINKS) {
errno = ELOOP;
return (NULL);
}
- slen = readlink(resolved, symlink, sizeof(symlink));
- if (slen <= 0 || slen >= (ssize_t)sizeof(symlink)) {
- if (slen < 0)
- ; /* keep errno from readlink(2) call */
- else if (slen == 0)
+ slen = readlink(resolved, link_tgt, sizeof(link_tgt));
+ if (slen <= 0 || slen >= (ssize_t)sizeof(link_tgt)) {
+ if (slen < 0) {
+ /* keep errno from readlink(2) call */
+ } else if (slen == 0) {
errno = ENOENT;
- else
+ } else {
errno = ENAMETOOLONG;
+ }
return (NULL);
}
- symlink[slen] = '\0';
- if (symlink[0] == '/') {
- resolved[1] = 0;
+ link_tgt[slen] = '\0';
+ if (link_tgt[0] == '/') {
+ resolved[1] = '\0';
resolved_len = 1;
} else {
/* Strip the last path component. */
@@ -214,26 +215,26 @@ realpath1(const char *path, char *resolved)
/*
* If there are any path components left, then
- * append them to symlink. The result is placed
+ * append them to link_tgt. The result is placed
* in `left'.
*/
if (p != NULL) {
- if (symlink[slen - 1] != '/') {
- if (slen + 1 >= (ssize_t)sizeof(symlink)) {
+ if (link_tgt[slen - 1] != '/') {
+ if (slen + 1 >= (ssize_t)sizeof(link_tgt)) {
errno = ENAMETOOLONG;
return (NULL);
}
- symlink[slen] = '/';
- symlink[slen + 1] = 0;
+ link_tgt[slen] = '/';
+ link_tgt[slen + 1] = 0;
}
- left_len = strlcat(symlink, left,
- sizeof(symlink));
- if (left_len >= sizeof(symlink)) {
+ left_len = strlcat(link_tgt, left,
+ sizeof(link_tgt));
+ if (left_len >= sizeof(link_tgt)) {
errno = ENAMETOOLONG;
return (NULL);
}
}
- left_len = strlcpy(left, symlink, sizeof(left));
+ left_len = strlcpy(left, link_tgt, sizeof(left));
} else if (!S_ISDIR(sb.st_mode) && p != NULL) {
errno = ENOTDIR;
return (NULL);