summaryrefslogtreecommitdiffstats
path: root/Utilities/cmtar/encode.c
diff options
context:
space:
mode:
Diffstat (limited to 'Utilities/cmtar/encode.c')
-rw-r--r--Utilities/cmtar/encode.c6
1 files changed, 3 insertions, 3 deletions
diff --git a/Utilities/cmtar/encode.c b/Utilities/cmtar/encode.c
index 1c75954..40b5707 100644
--- a/Utilities/cmtar/encode.c
+++ b/Utilities/cmtar/encode.c
@@ -93,16 +93,16 @@ th_set_path(TAR *t, char *pathname)
if (pathname[strlen(pathname) - 1] != '/' && TH_ISDIR(t))
strcpy(suffix, "/");
- if (strlen(pathname) > T_NAMELEN && (t->options & TAR_GNU))
+ if (strlen(pathname)+strlen(suffix) >= T_NAMELEN && (t->options & TAR_GNU))
{
/* GNU-style long name */
t->th_buf.gnu_longname = strdup(pathname);
strncpy(t->th_buf.name, t->th_buf.gnu_longname, T_NAMELEN);
}
- else if (strlen(pathname) > T_NAMELEN)
+ else if (strlen(pathname)+ strlen(suffix) >= T_NAMELEN)
{
/* POSIX-style prefix field */
- tmp = strchr(&(pathname[strlen(pathname) - T_NAMELEN - 1]), '/');
+ tmp = strrchr(pathname, '/');
if (tmp == NULL)
{
printf("!!! '/' not found in \"%s\"\n", pathname);