diff --git a/src/oclHashcat.c b/src/oclHashcat.c index 0469d4ec9..70fcf6a3f 100644 --- a/src/oclHashcat.c +++ b/src/oclHashcat.c @@ -12300,7 +12300,12 @@ int main (int argc, char **argv) return (-1); } - uint CL_platform_sel = 0; + uint CL_platform_sel = 1; + + if (opencl_platform != NULL) + { + CL_platform_sel = atoi (opencl_platform); + } if (CL_platforms_cnt > 1) { @@ -12330,7 +12335,12 @@ int main (int argc, char **argv) } else { - CL_platform_sel = atoi (opencl_platform); + if (CL_platform_sel < 1) + { + log_error ("ERROR: --opencl-platform < 1"); + + return (-1); + } if (CL_platform_sel > CL_platforms_cnt) { @@ -12338,13 +12348,23 @@ int main (int argc, char **argv) return (-1); } + } + } + else + { + if (CL_platform_sel != 1) + { + log_error ("ERROR: OpenCL platform number %d is not available", CL_platform_sel); - // user does not count with zero - - CL_platform_sel -= 1; + return (-1); } } + // zero-indexed: not starting to count at 1, as user does + + CL_platform_sel -= 1; + + cl_platform_id CL_platform = CL_platforms[CL_platform_sel]; char CL_platform_vendor[INFOSZ];