ztest: comparisons against errno should not assign to it

888914486e introduced this regression.

I used cscope to verify that there are no other instances of this in the
codebase. This is the one of the few bugs that are extremely easy to
identify using cscope.

Reviewed-by: Damian Szuberski <szuberskidamian@gmail.com>
Reviewed-by: Alexander Motin <mav@FreeBSD.org>
Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov>
Signed-off-by: Richard Yao <richard.yao@alumni.stonybrook.edu>
Closes #14264
This commit is contained in:
Richard Yao 2022-12-03 18:08:55 -05:00 committed by Brian Behlendorf
parent ba87ed1410
commit 2709ace096

View File

@ -1133,14 +1133,14 @@ process_options(int argc, char **argv)
const char *invalid_what = "ztest"; const char *invalid_what = "ztest";
char *val = zo->zo_alt_ztest; char *val = zo->zo_alt_ztest;
if (0 != access(val, X_OK) || if (0 != access(val, X_OK) ||
(strrchr(val, '/') == NULL && (errno = EINVAL))) (strrchr(val, '/') == NULL && (errno == EINVAL)))
goto invalid; goto invalid;
int dirlen = strrchr(val, '/') - val; int dirlen = strrchr(val, '/') - val;
strlcpy(zo->zo_alt_libpath, val, strlcpy(zo->zo_alt_libpath, val,
MIN(sizeof (zo->zo_alt_libpath), dirlen + 1)); MIN(sizeof (zo->zo_alt_libpath), dirlen + 1));
invalid_what = "library path", val = zo->zo_alt_libpath; invalid_what = "library path", val = zo->zo_alt_libpath;
if (strrchr(val, '/') == NULL && (errno = EINVAL)) if (strrchr(val, '/') == NULL && (errno == EINVAL))
goto invalid; goto invalid;
*strrchr(val, '/') = '\0'; *strrchr(val, '/') = '\0';
strlcat(val, "/lib", sizeof (zo->zo_alt_libpath)); strlcat(val, "/lib", sizeof (zo->zo_alt_libpath));