added additional --opencl-platform check (reject numbers > number of OpenCL platforms)
authorphilsmd <philsmd@hashcat.net>
Thu, 7 Jan 2016 15:35:45 +0000 (16:35 +0100)
committerphilsmd <philsmd@hashcat.net>
Thu, 7 Jan 2016 15:35:45 +0000 (16:35 +0100)
src/oclHashcat.c

index 63a8d6f..0f55a56 100644 (file)
@@ -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,21 +12335,29 @@ int main (int argc, char **argv)
       }
       else
       {
-        CL_platform_sel = atoi (opencl_platform);
-
         if (CL_platform_sel > CL_platforms_cnt)
         {
           log_error ("ERROR: invalid OpenCL platforms selected");
 
           return (-1);
         }
+      }
+    }
+    else
+    {
+      if (CL_platform_sel != 1)
+      {
+        log_error ("ERROR: OpenCL platform number %d 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];