--- dmg2john.c.orig 2013-01-25 02:10:28.200855524 +0000 +++ dmg2john.c 2013-01-29 00:51:44.365180326 +0000 @@ -130,9 +130,9 @@ static void hash_plugin_parse_hash(char chunk_size = header2.blocksize; lseek(fd, header2.dataoffset, SEEK_SET); - cno = ceil(header2.datasize / 4096.0) - 2; + cno = ((header2.datasize + 4095ULL) / 4096) - 2; chunk = (unsigned char *) malloc(header2.datasize); - data_size = header2.datasize - cno * 4096; + data_size = header2.datasize - cno * 4096ULL; if (data_size < 0) { fprintf(stderr, "File %s is not a valid DMG file!\n", filename); return;