Binary files JohnTheRipper_orig/src/.opencl_zip_fmt.c.kate-swp and JohnTheRipper/src/.opencl_zip_fmt.c.kate-swp differ diff -urpN JohnTheRipper_orig/src/cuda_cryptmd5_fmt.c JohnTheRipper/src/cuda_cryptmd5_fmt.c --- JohnTheRipper_orig/src/cuda_cryptmd5_fmt.c 2013-01-03 16:54:03.467089657 +0000 +++ JohnTheRipper/src/cuda_cryptmd5_fmt.c 2013-01-03 17:23:05.535178277 +0000 @@ -36,7 +36,8 @@ static int any_cracked; static struct fmt_tests tests[] = { {"$1$Btiy90iG$bGn4vzF3g1rIVGZ5odGIp/", "qwerty"}, - /*{"$1$salt$c813W/s478KCzR0NnHx7j0", "qwerty"}, +#ifdef DEBUG //Special test cases. + {"$1$salt$c813W/s478KCzR0NnHx7j0", "qwerty"}, {"$1$salt$8LO.EVfsTf.HATV1Bd0ZP/", "john"}, {"$1$salt$TelRRxWBCxlpXmgAeB82R/", "openwall"}, {"$1$salt$l9PzDiECW83MOIMFTRL4Y1", "summerofcode"}, @@ -87,11 +88,11 @@ static struct fmt_tests tests[] = { {"$apr1$rBXqc...$NlXxN9myBOk95T0AyLAsJ0", "john"}, {"$apr1$Grpld/..$qp5GyjwM2dnA5Cdej9b411", "the"}, {"$apr1$GBx.D/..$yfVeeYFCIiEXInfRhBRpy/", "ripper"}, -*/ +#endif {NULL} }; -static void cleanup() +static void done() { MEM_FREE(inbuffer); MEM_FREE(outbuffer); @@ -101,15 +102,15 @@ static void init(struct fmt_main *self) { ///Allocate memory for hashes and passwords inbuffer = - (crypt_md5_password *) calloc(MAX_KEYS_PER_CRYPT, + (crypt_md5_password *) mem_calloc(MAX_KEYS_PER_CRYPT * sizeof(crypt_md5_password)); outbuffer = - (crypt_md5_crack *) calloc(MAX_KEYS_PER_CRYPT, + (crypt_md5_crack *) mem_alloc(MAX_KEYS_PER_CRYPT * sizeof(crypt_md5_crack)); check_mem_allocation(inbuffer, outbuffer); - atexit(cleanup); ///Initialize CUDA cuda_init(cuda_gpu_id); + atexit(done); } static int valid(char *ciphertext, struct fmt_main *self) diff -urpN JohnTheRipper_orig/src/cuda_cryptsha256_fmt.c JohnTheRipper/src/cuda_cryptsha256_fmt.c --- JohnTheRipper_orig/src/cuda_cryptsha256_fmt.c 2013-01-03 16:54:03.472089659 +0000 +++ JohnTheRipper/src/cuda_cryptsha256_fmt.c 2013-01-03 17:24:04.249181264 +0000 @@ -45,14 +45,14 @@ void sha256_crypt_cpu(crypt_sha256_passw static struct fmt_tests tests[] = { {"$5$saltstring$5B8vYYiY.CVt1RlTTf8KbXBH3hsxY/GNooZaBBGWEc5", "Hello world!"}, - /*{"$5$UOUBPEMKQRHHRFML$zicoLpMLhBsNGtEplY/ehM0NtiAqxijiBCrolt7WBW0","jjti"}, + +#ifdef DEBUG //Special test cases. + {"$5$UOUBPEMKQRHHRFML$zicoLpMLhBsNGtEplY/ehM0NtiAqxijiBCrolt7WBW0","jjti"}, {"$5$XSLWLBSQUCNOWXOB$i7Ho5wUAIjsH2e2zA.WarqYLWir5nmZbUEcjK//Or7.","hgnirgayjnhvi"}, {"$5$VDCTRFOIDQXRQVHR$uolqT0wEwU.pvI9jq5xU457JQpiwTTKX3PB/9RS4/h4","o"}, {"$5$WTYWNCYHNPMXPG$UwZyrq0irhWs4OcLKcqSbFdktZaNAD2by1CiNNw7oID","tcepf"}, {"$5$DQUHKJNMVOEBGBG$91u2d/jMN5QuW3/kBEPG0xC2G8y1TuDU7SGAUYTX.y0","wbfhoc"}, - - {"$5$saltstring$0Az3qME7zTXm78kfHrR2OtT8WOu2gd8bcVn/9Y.3l/7", "john"}, {"$5$saltstring$7cz4bTeQ7MnNssphNhFVrITtuJYY/1tdvLL2uzLvOk8","a"}, @@ -73,14 +73,12 @@ static struct fmt_tests tests[] = { {"$5$saltstring$VxW44bFDcvixlQoTE4E.k5c8v1w0fGMyZ4tn8nGcWn0","abcdefghijklmno"}, {"$5$QSTVVEKDIDYRNK$4j8TST.29P07GHASD.BUHd0UTaFz7h.Mz//zcHokoZ5","cgyihfkqk"}, - - */ - +#endif //{"$5$rounds=5000$abcdefghijklmnop$BAYQep7SsuSczAeXlks3F54SpxMUUludHi1C4JVOqpD","abcdefghijklmno"}, {NULL} }; -static void cleanup() +static void done() { MEM_FREE(inbuffer); MEM_FREE(outbuffer); @@ -89,12 +87,12 @@ static void cleanup() static void init(struct fmt_main *self) { //Allocate memory for hashes and passwords - inbuffer=(crypt_sha256_password*)calloc(MAX_KEYS_PER_CRYPT,sizeof(crypt_sha256_password)); - outbuffer=(uint32_t*)malloc(sizeof(uint32_t)*MAX_KEYS_PER_CRYPT*8); + inbuffer=(crypt_sha256_password*)mem_calloc(MAX_KEYS_PER_CRYPT*sizeof(crypt_sha256_password)); + outbuffer=(uint32_t*)mem_alloc(MAX_KEYS_PER_CRYPT*sizeof(uint32_t)*8); check_mem_allocation(inbuffer,outbuffer); - atexit(cleanup); //Initialize CUDA cuda_init(cuda_gpu_id); + atexit(done); } static int valid(char *ciphertext,struct fmt_main *self) diff -urpN JohnTheRipper_orig/src/cuda_cryptsha512_fmt.c JohnTheRipper/src/cuda_cryptsha512_fmt.c --- JohnTheRipper_orig/src/cuda_cryptsha512_fmt.c 2013-01-03 16:54:03.477089658 +0000 +++ JohnTheRipper/src/cuda_cryptsha512_fmt.c 2013-01-03 17:26:11.265187725 +0000 @@ -42,27 +42,28 @@ static crypt_sha512_salt _salt; static struct fmt_tests tests[] = { {"$6$saltstring$svn8UoSVapNtMuq1ukKS4tPQd8iKwSMHWjl/O817G3uBnIFNjnQJuesI68u4OTLiBFdcbYEdFCoEOfaS35inz1", "Hello world!"}, - //{"$6$saltstring$fgNTR89zXnDUV97U5dkWayBBRaB0WIBnu6s4T7T8Tz1SbUyewwiHjho25yWVkph2p18CmUkqXh4aIyjPnxdgl0","john"}, - //{"$6$saltstring$MO53nAXQUKXVLlsbiXyPgMsR6q10N7eF7sPvanwdXnEeCj5kE3eYaRvFv0wVW1UZ4SnNTzc1v4OCOq1ASDQZY0","a"}, - //{"$6$saltstring$q.eQ9PCFPe/tOHJPT7lQwnVQ9znjTT89hsg1NWHCRCAMsbtpBLbg1FLq7xo1BaCM0y/z46pXv4CGESVWQlOk30","ab"}, - //{"$6$saltstring$pClZZISU0lxEwKr1z81EuJdiMLwWncjShXap25hiDGVMnCvlF5zS3ysvBdVRZqPDCdSTj06rwjrLX3bOS1Cak/","abc"}, - //{"$6$saltstring$FJJAXr3hydAPJXM311wrzFhzheQ6LJHrufrYl2kBMnRD2pUi6jdS.fSBJ2J1Qfhcz9tPnlJOzeL7aIYi/dytg.","abcd"}, - //{"$6$saltstring$XDecvJ/rq8tgbE1Pfuu1cTiZlhnbF5OA/vyP6HRPpDengVqhB38vbZTK/BDfPP6XBgvMzE.q9rj6Ck5blj/FK.","abcde"}, - //{"$6$saltstring$hYPEYaHik6xSMGV1lDWhF0EerSUyCsC150POu9ksaftUWKWwV8TuqSeSLZUkUhjGy7cn.max5qd5IPSICeklL1","abcdef"}, - //{"$6$saltstring$YBQ5J5EMRuC6k7B2GTsNaXx8u/957XMB.slQmY/lOjKd1zTIQF.ulLmy8O0VnJJ3cV.1pjP.KCgEjjMpz4pnS1","abcdefg"}, - //{"$6$saltstring$AQapizZGhnIjtXF8OCvbSxQJBuOKvpzf1solf9b76wXFX0VRkqids5AC4YSibbhMSX0z4463sq1uAd9LvKNuO/","abcdefgh"}, - //{"$6$saltstring$xc66FVXO.Zvv5pS02B4bCmJh5FCBAZpqTK3NoFxTU9U5b6BokbHwmeqQfMqrrkB3j9CXhCzgvC/pvoGPM1xgM1","abcdefghi"}, - //{"$6$saltstring$Xet3A8EEzzSuL9hZZ31SfDVPT87qz3a.xxcH7eU50aqARlmXywdlfJ.6Cp/TFG1RcguqwrfUbZBbFn1BQ93Kv.","abcdefghij"}, - - //{"$6$saltstring$MeML1shJ8psyh5R9YJUZNYNqKzYeBvIsITqc/VqJfUDs8xO5YoUhCn4Db7CXuarMDVkBzIUfYq1d8Tj/T1WBU0","abcdefghijk"}, - //{"$6$saltstring$i/3NHph8ZV2klLuOc5yX5kOnJWj9zuWbKiaa/NNEkYpNyamdQS1c7n2XQS3.B2Cs/eVyKwHf62PnOayqLLTOZ.","abcdefghijkl"}, - //{"$6$saltstring$l2IxCS4o2S/vud70F1S5Z7H1WE67QFIXCYqskySdLFjjorEJdAnAp1ZqdgfNuZj2orjmeVDTsTXHpZ1IoxSKd.","abcdefghijklm"}, - //{"$6$saltstring$PFzjspQs/CDXWALauDTav3u5bHB3n21xWrfwjnjpFO5eM5vuP0qKwDCXmlyZ5svEgsIH1oiZiGlRqkcBP5PiB.","abcdefghijklmn"}, - //{"$6$saltstring$rdREv5Pd9C9YGtg.zXEQMb6m0sPeq4b6zFW9oWY9w4ZltmjH3yzMLgl9iBuez9DFFUvF5nJH3Y2xidiq1dH9M.", "abcdefghijklmno"}, +#ifdef DEBUG //Special test cases. + {"$6$saltstring$fgNTR89zXnDUV97U5dkWayBBRaB0WIBnu6s4T7T8Tz1SbUyewwiHjho25yWVkph2p18CmUkqXh4aIyjPnxdgl0","john"}, + {"$6$saltstring$MO53nAXQUKXVLlsbiXyPgMsR6q10N7eF7sPvanwdXnEeCj5kE3eYaRvFv0wVW1UZ4SnNTzc1v4OCOq1ASDQZY0","a"}, + {"$6$saltstring$q.eQ9PCFPe/tOHJPT7lQwnVQ9znjTT89hsg1NWHCRCAMsbtpBLbg1FLq7xo1BaCM0y/z46pXv4CGESVWQlOk30","ab"}, + {"$6$saltstring$pClZZISU0lxEwKr1z81EuJdiMLwWncjShXap25hiDGVMnCvlF5zS3ysvBdVRZqPDCdSTj06rwjrLX3bOS1Cak/","abc"}, + {"$6$saltstring$FJJAXr3hydAPJXM311wrzFhzheQ6LJHrufrYl2kBMnRD2pUi6jdS.fSBJ2J1Qfhcz9tPnlJOzeL7aIYi/dytg.","abcd"}, + {"$6$saltstring$XDecvJ/rq8tgbE1Pfuu1cTiZlhnbF5OA/vyP6HRPpDengVqhB38vbZTK/BDfPP6XBgvMzE.q9rj6Ck5blj/FK.","abcde"}, + {"$6$saltstring$hYPEYaHik6xSMGV1lDWhF0EerSUyCsC150POu9ksaftUWKWwV8TuqSeSLZUkUhjGy7cn.max5qd5IPSICeklL1","abcdef"}, + {"$6$saltstring$YBQ5J5EMRuC6k7B2GTsNaXx8u/957XMB.slQmY/lOjKd1zTIQF.ulLmy8O0VnJJ3cV.1pjP.KCgEjjMpz4pnS1","abcdefg"}, + {"$6$saltstring$AQapizZGhnIjtXF8OCvbSxQJBuOKvpzf1solf9b76wXFX0VRkqids5AC4YSibbhMSX0z4463sq1uAd9LvKNuO/","abcdefgh"}, + {"$6$saltstring$xc66FVXO.Zvv5pS02B4bCmJh5FCBAZpqTK3NoFxTU9U5b6BokbHwmeqQfMqrrkB3j9CXhCzgvC/pvoGPM1xgM1","abcdefghi"}, + {"$6$saltstring$Xet3A8EEzzSuL9hZZ31SfDVPT87qz3a.xxcH7eU50aqARlmXywdlfJ.6Cp/TFG1RcguqwrfUbZBbFn1BQ93Kv.","abcdefghij"}, + {"$6$saltstring$MeML1shJ8psyh5R9YJUZNYNqKzYeBvIsITqc/VqJfUDs8xO5YoUhCn4Db7CXuarMDVkBzIUfYq1d8Tj/T1WBU0","abcdefghijk"}, + {"$6$saltstring$i/3NHph8ZV2klLuOc5yX5kOnJWj9zuWbKiaa/NNEkYpNyamdQS1c7n2XQS3.B2Cs/eVyKwHf62PnOayqLLTOZ.","abcdefghijkl"}, + {"$6$saltstring$l2IxCS4o2S/vud70F1S5Z7H1WE67QFIXCYqskySdLFjjorEJdAnAp1ZqdgfNuZj2orjmeVDTsTXHpZ1IoxSKd.","abcdefghijklm"}, + {"$6$saltstring$PFzjspQs/CDXWALauDTav3u5bHB3n21xWrfwjnjpFO5eM5vuP0qKwDCXmlyZ5svEgsIH1oiZiGlRqkcBP5PiB.","abcdefghijklmn"}, + {"$6$saltstring$rdREv5Pd9C9YGtg.zXEQMb6m0sPeq4b6zFW9oWY9w4ZltmjH3yzMLgl9iBuez9DFFUvF5nJH3Y2xidiq1dH9M.", "abcdefghijklmno"}, +#endif {NULL} }; -static void cleanup() +static void done() { MEM_FREE(inbuffer); MEM_FREE(outbuffer); @@ -70,12 +71,12 @@ static void cleanup() static void init(struct fmt_main *self) { //Allocate memory for hashes and passwords - inbuffer=(crypt_sha512_password*)calloc(MAX_KEYS_PER_CRYPT,sizeof(crypt_sha512_password)); - outbuffer=(crypt_sha512_hash*)malloc(sizeof(crypt_sha512_hash)*MAX_KEYS_PER_CRYPT); + inbuffer=(crypt_sha512_password*)mem_calloc(MAX_KEYS_PER_CRYPT*sizeof(crypt_sha512_password)); + outbuffer=(crypt_sha512_hash*)mem_alloc(MAX_KEYS_PER_CRYPT*sizeof(crypt_sha512_hash)); check_mem_allocation(inbuffer,outbuffer); - atexit(cleanup); //Initialize CUDA cuda_init(cuda_gpu_id); + atexit(done); } static int valid(char *ciphertext,struct fmt_main *self) diff -urpN JohnTheRipper_orig/src/cuda_mscash2_fmt.c JohnTheRipper/src/cuda_mscash2_fmt.c --- JohnTheRipper_orig/src/cuda_mscash2_fmt.c 2013-01-03 16:54:03.472089659 +0000 +++ JohnTheRipper/src/cuda_mscash2_fmt.c 2013-01-03 17:08:38.054134148 +0000 @@ -46,7 +46,7 @@ static struct fmt_tests tests[] = { extern void mscash2_gpu(mscash2_password *, mscash2_hash *, mscash2_salt *); -static void cleanup() +static void done() { MEM_FREE(inbuffer); MEM_FREE(outbuffer); @@ -56,14 +56,13 @@ static void init(struct fmt_main *self) { //Allocate memory for hashes and passwords inbuffer = - (mscash2_password *) calloc(MAX_KEYS_PER_CRYPT, - sizeof(mscash2_password)); + (mscash2_password *) mem_calloc(MAX_KEYS_PER_CRYPT*sizeof(mscash2_password)); outbuffer = - (mscash2_hash *) malloc(sizeof(mscash2_hash) * MAX_KEYS_PER_CRYPT); + (mscash2_hash *) mem_alloc(MAX_KEYS_PER_CRYPT*sizeof(mscash2_hash)); check_mem_allocation(inbuffer, outbuffer); - atexit(cleanup); //Initialize CUDA cuda_init(cuda_gpu_id); + atexit(done); } static int valid(char *ciphertext, struct fmt_main *self) diff -urpN JohnTheRipper_orig/src/cuda_mscash_fmt.c JohnTheRipper/src/cuda_mscash_fmt.c --- JohnTheRipper_orig/src/cuda_mscash_fmt.c 2013-01-03 16:54:03.477089658 +0000 +++ JohnTheRipper/src/cuda_mscash_fmt.c 2013-01-03 17:08:28.805133678 +0000 @@ -43,7 +43,7 @@ static struct fmt_tests tests[] = { extern void cuda_mscash(mscash_password *, mscash_hash *, mscash_salt *); -static void cleanup() +static void done() { MEM_FREE(inbuffer); MEM_FREE(outbuffer); @@ -53,14 +53,14 @@ static void init(struct fmt_main *self) { //Allocate memory for hashes and passwords inbuffer = - (mscash_password *) calloc(MAX_KEYS_PER_CRYPT, + (mscash_password *) mem_calloc(MAX_KEYS_PER_CRYPT * sizeof(mscash_password)); outbuffer = - (mscash_hash *) malloc(sizeof(mscash_hash) * MAX_KEYS_PER_CRYPT); + (mscash_hash *) mem_alloc(MAX_KEYS_PER_CRYPT * sizeof(mscash_hash)); check_mem_allocation(inbuffer, outbuffer); - atexit(cleanup); //Initialize CUDA cuda_init(cuda_gpu_id); + atexit(done); } static int valid(char *ciphertext, struct fmt_main *self) diff -urpN JohnTheRipper_orig/src/cuda_phpass_fmt.c JohnTheRipper/src/cuda_phpass_fmt.c --- JohnTheRipper_orig/src/cuda_phpass_fmt.c 2013-01-03 16:54:03.470089656 +0000 +++ JohnTheRipper/src/cuda_phpass_fmt.c 2013-01-03 17:28:09.963193765 +0000 @@ -83,7 +83,7 @@ static struct fmt_tests tests[] = { {NULL} }; -static void cleanup() +static void done() { MEM_FREE(inbuffer); MEM_FREE(outbuffer); @@ -93,13 +93,13 @@ static void init(struct fmt_main *self) { ///Allocate memory for hashes and passwords inbuffer = - (uint8_t *) calloc(MAX_KEYS_PER_CRYPT, sizeof(phpass_password)); + (uint8_t *) mem_calloc(MAX_KEYS_PER_CRYPT * sizeof(phpass_password)); outbuffer = - (phpass_crack *) calloc(MAX_KEYS_PER_CRYPT, sizeof(phpass_crack)); + (phpass_crack *) mem_calloc(MAX_KEYS_PER_CRYPT * sizeof(phpass_crack)); check_mem_allocation(inbuffer, outbuffer); - atexit(cleanup); ///Initialize CUDA cuda_init(cuda_gpu_id); + atexit(done); } static int valid(char *ciphertext, struct fmt_main *self) diff -urpN JohnTheRipper_orig/src/cuda_rawsha256_fmt.c JohnTheRipper/src/cuda_rawsha256_fmt.c --- JohnTheRipper_orig/src/cuda_rawsha256_fmt.c 2013-01-03 16:54:03.471089658 +0000 +++ JohnTheRipper/src/cuda_rawsha256_fmt.c 2013-01-03 17:08:15.038132977 +0000 @@ -60,7 +60,7 @@ extern int cuda_getAsyncEngineCount(); static sha256_password *inbuffer; /** binary ciphertexts **/ static SHA_HASH *outbuffer; /** calculated hashes **/ static int overlap; -static void cleanup() +static void done() { if (overlap) { cuda_pageLockedFree(inbuffer); @@ -86,13 +86,13 @@ static void init(struct fmt_main *self) overlap = 0; //device does not support overlaping memcpy and kernel execution inbuffer = - (sha256_password *) malloc(sizeof(sha256_password) * - MAX_KEYS_PER_CRYPT); + (sha256_password *) mem_calloc(MAX_KEYS_PER_CRYPT * + sizeof(sha256_password)); outbuffer = - (SHA_HASH *) malloc(sizeof(SHA_HASH) * MAX_KEYS_PER_CRYPT); + (SHA_HASH *) mem_alloc(MAX_KEYS_PER_CRYPT * sizeof(SHA_HASH)); } check_mem_allocation(inbuffer, outbuffer); - atexit(cleanup); + atexit(done); } static int valid(char *ciphertext, struct fmt_main *self) diff -urpN JohnTheRipper_orig/src/cuda_wpapsk_fmt.c JohnTheRipper/src/cuda_wpapsk_fmt.c --- JohnTheRipper_orig/src/cuda_wpapsk_fmt.c 2013-01-03 16:54:03.470089656 +0000 +++ JohnTheRipper/src/cuda_wpapsk_fmt.c 2013-01-03 17:11:25.022142640 +0000 @@ -36,7 +36,7 @@ static struct fmt_tests wpapsk_tests[] = }; -static void cleanup() +static void done() { MEM_FREE(inbuffer); MEM_FREE(outbuffer); @@ -48,26 +48,15 @@ static void init(struct fmt_main *self) assert(sizeof(hccap_t) == HCCAP_SIZE); ///Allocate memory for hashes and passwords inbuffer = - (wpapsk_password *) malloc(sizeof(wpapsk_password) * - MAX_KEYS_PER_CRYPT); + (wpapsk_password *) mem_calloc(MAX_KEYS_PER_CRYPT * + sizeof(wpapsk_password)); outbuffer = - (wpapsk_hash *) malloc(sizeof(wpapsk_hash) * MAX_KEYS_PER_CRYPT); + (wpapsk_hash *) mem_alloc(MAX_KEYS_PER_CRYPT * sizeof(wpapsk_hash)); check_mem_allocation(inbuffer, outbuffer); - mic = (mic_t *) malloc(sizeof(mic_t) * MAX_KEYS_PER_CRYPT); - atexit(cleanup); - -/* - * Zeroize the lengths in case crypt_all() is called with some keys still - * not set. This may happen during self-tests. - */ - { - int i; - for (i = 0; i < self->params.max_keys_per_crypt; i++) - inbuffer[i].length = 0; - } - + mic = (mic_t *) mem_alloc(MAX_KEYS_PER_CRYPT * sizeof(mic_t)); ///Initialize CUDA cuda_init(cuda_gpu_id); + atexit(done); } static void crypt_all(int count) diff -urpN JohnTheRipper_orig/src/cuda_xsha512_fmt.c JohnTheRipper/src/cuda_xsha512_fmt.c --- JohnTheRipper_orig/src/cuda_xsha512_fmt.c 2013-01-03 16:54:03.465089658 +0000 +++ JohnTheRipper/src/cuda_xsha512_fmt.c 2013-01-03 17:29:48.229198762 +0000 @@ -83,9 +83,9 @@ static void done(void) static void init(struct fmt_main *self) { - gkey = calloc(MAX_KEYS_PER_CRYPT, sizeof(xsha512_key)); - g_ext_key = calloc(MAX_KEYS_PER_CRYPT, sizeof(xsha512_extend_key)); - ghash = calloc(MAX_KEYS_PER_CRYPT, sizeof(xsha512_hash)); + gkey = mem_calloc(MAX_KEYS_PER_CRYPT * sizeof(xsha512_key)); + g_ext_key = mem_calloc(MAX_KEYS_PER_CRYPT * sizeof(xsha512_extend_key)); + ghash = mem_calloc(MAX_KEYS_PER_CRYPT * sizeof(xsha512_hash)); cuda_xsha512_init(); atexit(done); } diff -urpN JohnTheRipper_orig/src/memory.c JohnTheRipper/src/memory.c --- JohnTheRipper_orig/src/memory.c 2013-01-03 16:54:03.475089658 +0000 +++ JohnTheRipper/src/memory.c 2013-01-03 17:39:52.361229494 +0000 @@ -59,6 +59,13 @@ void *mem_alloc(size_t size) return res; } +void *mem_calloc(size_t size) +{ + char *res = (char*) mem_alloc(size); + memset(res, 0, size); + return res; +} + void *mem_alloc_tiny(size_t size, size_t align) { static unsigned long buffer, bufree = 0; diff -urpN JohnTheRipper_orig/src/memory.h JohnTheRipper/src/memory.h --- JohnTheRipper_orig/src/memory.h 2013-01-03 16:54:03.466089658 +0000 +++ JohnTheRipper/src/memory.h 2013-01-03 16:58:49.987104232 +0000 @@ -62,7 +62,11 @@ extern unsigned int mem_saving_level; * If an error occurs, the function does not return. */ extern void *mem_alloc(size_t size); - +/* + * this version same as mem_alloc, but initialized the memory + * to NULL bytes, like CALLOC(3) function does + */ +extern void *mem_calloc(size_t size); /* * Frees memory allocated with mem_alloc() and sets the pointer to NULL. * Does nothing if the pointer is already NULL. diff -urpN JohnTheRipper_orig/src/opencl_phpass_fmt.c JohnTheRipper/src/opencl_phpass_fmt.c --- JohnTheRipper_orig/src/opencl_phpass_fmt.c 2013-01-03 16:54:03.471089658 +0000 +++ JohnTheRipper/src/opencl_phpass_fmt.c 2013-01-03 17:15:59.873156624 +0000 @@ -143,17 +143,14 @@ static void init(struct fmt_main *self) { cl_int cl_error; global_work_size = KEYS_PER_CRYPT / 8; - atexit(done); opencl_init("$JOHN/kernels/phpass_kernel.cl", ocl_gpu_id, platform_id); /// Allocate memory inbuffer = - (phpass_password *) calloc(MAX_KEYS_PER_CRYPT, + (phpass_password *) mem_calloc(MAX_KEYS_PER_CRYPT * sizeof(phpass_password)); - assert(inbuffer != NULL); outbuffer = - (phpass_hash *) calloc(MAX_KEYS_PER_CRYPT, sizeof(phpass_hash)); - assert(inbuffer != NULL); + (phpass_hash *) mem_alloc(MAX_KEYS_PER_CRYPT * sizeof(phpass_hash)); mem_in = clCreateBuffer(context[ocl_gpu_id], CL_MEM_READ_ONLY, insize, NULL, @@ -184,6 +181,7 @@ static void init(struct fmt_main *self) self->params.min_keys_per_crypt = local_work_size * 8; fprintf(stderr, "Local worksize (LWS) %d, Global worksize (GWS) %d\n", (int)local_work_size, (int)global_work_size); + atexit(done); } static int valid(char *ciphertext, struct fmt_main *pFmt) diff -urpN JohnTheRipper_orig/src/opencl_pwsafe_fmt.c JohnTheRipper/src/opencl_pwsafe_fmt.c --- JohnTheRipper_orig/src/opencl_pwsafe_fmt.c 2013-01-03 16:54:03.476089658 +0000 +++ JohnTheRipper/src/opencl_pwsafe_fmt.c 2013-01-03 17:17:22.736160837 +0000 @@ -81,6 +81,9 @@ static void done(void) HANDLE_CLERROR(clReleaseMemObject(mem_salt), "Release memsalt"); HANDLE_CLERROR(clReleaseMemObject(mem_out), "Release memout"); HANDLE_CLERROR(clReleaseCommandQueue(queue[ocl_gpu_id]), "Release Queue"); + MEM_FREE(host_pass); + MEM_FREE(host_hash); + MEM_FREE(host_salt); } static void pwsafe_set_key(char *key, int index) @@ -92,9 +95,9 @@ static void pwsafe_set_key(char *key, in static void init(struct fmt_main *self) { - host_pass = calloc(KEYS_PER_CRYPT, sizeof(pwsafe_pass)); - host_hash = calloc(KEYS_PER_CRYPT, sizeof(pwsafe_hash)); - host_salt = calloc(1, sizeof(pwsafe_salt)); + host_pass = mem_calloc(KEYS_PER_CRYPT * sizeof(pwsafe_pass)); + host_hash = mem_calloc(KEYS_PER_CRYPT * sizeof(pwsafe_hash)); + host_salt = mem_calloc(sizeof(pwsafe_salt)); opencl_init("$JOHN/kernels/pwsafe_kernel.cl", ocl_gpu_id, platform_id);