Fixed reporting an error when failed to build the mountpoint

The size check was inefficient because getcwd() uses an unsigned int
argument.
This commit is contained in:
Jean-Pierre André 2018-12-19 15:57:50 +01:00
parent f424cea20a
commit 85c1634a26
2 changed files with 10 additions and 2 deletions

View File

@ -4411,7 +4411,8 @@ int main(int argc, char *argv[])
else {
ctx->abs_mnt_point = (char*)ntfs_malloc(PATH_MAX);
if (ctx->abs_mnt_point) {
if (getcwd(ctx->abs_mnt_point,
if ((strlen(opts.mnt_point) < PATH_MAX)
&& getcwd(ctx->abs_mnt_point,
PATH_MAX - strlen(opts.mnt_point) - 1)) {
strcat(ctx->abs_mnt_point, "/");
strcat(ctx->abs_mnt_point, opts.mnt_point);
@ -4419,6 +4420,9 @@ int main(int argc, char *argv[])
/* Solaris also wants the absolute mount point */
opts.mnt_point = ctx->abs_mnt_point;
#endif /* defined(__sun) && defined (__SVR4) */
} else {
free(ctx->abs_mnt_point);
ctx->abs_mnt_point = (char*)NULL;
}
}
}

View File

@ -4148,7 +4148,8 @@ int main(int argc, char *argv[])
else {
ctx->abs_mnt_point = (char*)ntfs_malloc(PATH_MAX);
if (ctx->abs_mnt_point) {
if (getcwd(ctx->abs_mnt_point,
if ((strlen(opts.mnt_point) < PATH_MAX)
&& getcwd(ctx->abs_mnt_point,
PATH_MAX - strlen(opts.mnt_point) - 1)) {
strcat(ctx->abs_mnt_point, "/");
strcat(ctx->abs_mnt_point, opts.mnt_point);
@ -4156,6 +4157,9 @@ int main(int argc, char *argv[])
/* Solaris also wants the absolute mount point */
opts.mnt_point = ctx->abs_mnt_point;
#endif /* defined(__sun) && defined (__SVR4) */
} else {
free(ctx->abs_mnt_point);
ctx->abs_mnt_point = (char*)NULL;
}
}
}