summaryrefslogtreecommitdiffstats
path: root/Src
diff options
context:
space:
mode:
Diffstat (limited to 'Src')
-rw-r--r--Src/utils.c14
1 files changed, 13 insertions, 1 deletions
diff --git a/Src/utils.c b/Src/utils.c
index 19fd61a8b..4ea7b8e93 100644
--- a/Src/utils.c
+++ b/Src/utils.c
@@ -1003,11 +1003,23 @@ print_if_link(char *s, int all)
}
}
} else {
- if (chrealpath(&s, 'P', 0)) {
+#ifdef HAVE_MEMCCPY
+ char s_at_entry[PATH_MAX+1];
+ if (!memccpy(s_at_entry, s, '\0', sizeof(s_at_entry))) {
+ DPUTS1(1, "path longer than PATH_MAX: %s", s);
+ s_at_entry[PATH_MAX] = '\0';
+ }
+#else /* HAVE_MEMCCPY */
+ char *s_at_entry = ztrdup(s);
+#endif /* HAVE_MEMCCPY */
+ if (chrealpath(&s, 'P', 0) && strcmp(s, s_at_entry)) {
printf(" -> ");
zputs(*s ? s : "/", stdout);
zsfree(s);
}
+#ifndef HAVE_MEMCCPY
+ zsfree(s_at_entry);
+#endif /* !HAVE_MEMCCPY */
}
}
}