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 { else {
ctx->abs_mnt_point = (char*)ntfs_malloc(PATH_MAX); ctx->abs_mnt_point = (char*)ntfs_malloc(PATH_MAX);
if (ctx->abs_mnt_point) { 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)) { PATH_MAX - strlen(opts.mnt_point) - 1)) {
strcat(ctx->abs_mnt_point, "/"); strcat(ctx->abs_mnt_point, "/");
strcat(ctx->abs_mnt_point, opts.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 */ /* Solaris also wants the absolute mount point */
opts.mnt_point = ctx->abs_mnt_point; opts.mnt_point = ctx->abs_mnt_point;
#endif /* defined(__sun) && defined (__SVR4) */ #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 { else {
ctx->abs_mnt_point = (char*)ntfs_malloc(PATH_MAX); ctx->abs_mnt_point = (char*)ntfs_malloc(PATH_MAX);
if (ctx->abs_mnt_point) { 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)) { PATH_MAX - strlen(opts.mnt_point) - 1)) {
strcat(ctx->abs_mnt_point, "/"); strcat(ctx->abs_mnt_point, "/");
strcat(ctx->abs_mnt_point, opts.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 */ /* Solaris also wants the absolute mount point */
opts.mnt_point = ctx->abs_mnt_point; opts.mnt_point = ctx->abs_mnt_point;
#endif /* defined(__sun) && defined (__SVR4) */ #endif /* defined(__sun) && defined (__SVR4) */
} else {
free(ctx->abs_mnt_point);
ctx->abs_mnt_point = (char*)NULL;
} }
} }
} }