@@ -265,13 +265,15 @@ static char *get_key(int index)
265265 return ret ;
266266}
267267
268+ /* The logic below is duplicated in opencl_argon2_fmt_plug.c: kp_set_salt() */
268269static void set_salt (void * salt )
269270{
270271 keepass_salt = * ((keepass_salt_t * * )salt );
272+ size_t cur_salt_size = sizeof (keepass_salt_t ) + keepass_salt -> content_size - 1 ;
271273
272- if (sizeof ( keepass_salt_t ) + keepass_salt -> content_size - 1 > saltsize ) {
274+ if (cur_salt_size > saltsize ) {
273275 CLRELEASEBUFFER (mem_salt );
274- saltsize = sizeof ( keepass_salt_t ) + keepass_salt -> content_size - 1 ;
276+ saltsize = cur_salt_size ;
275277 CLCREATEBUFFER (mem_salt , CL_RO , saltsize );
276278 CLKERNELARG (kernel_init , 1 , mem_salt );
277279 CLKERNELARG (kernel_loop_aes , 1 , mem_salt );
@@ -281,7 +283,7 @@ static void set_salt(void *salt)
281283#endif
282284 }
283285
284- CLWRITE (mem_salt , CL_FALSE , 0 , saltsize , keepass_salt , NULL );
286+ CLWRITE (mem_salt , CL_FALSE , 0 , cur_salt_size , keepass_salt , NULL );
285287 CLWRITE (mem_autotune , CL_FALSE , 0 , sizeof (ocl_autotune_running ),
286288 & ocl_autotune_running , NULL );
287289 HANDLE_CLERROR (clFlush (queue [gpu_id ]), "clFlush failed in set_salt()" );
0 commit comments