Openwall GNU/*/Linux - a small security-enhanced Linux distro for servers
[<prev] [next>] [<thread-prev] [day] [month] [year] [list]
Date: Wed, 13 Jan 2016 04:48:37 +0300
From: Solar Designer <solar@...nwall.com>
To: john-dev@...ts.openwall.com
Subject: Re: Undefined behavior in rpp.c: left shift of 1 by 63 places cannot be represented in type 'long'

Hi Frank,

On Fri, Dec 18, 2015 at 09:44:32PM +0100, Frank Dittrich wrote:
> rpp.c:32:33: runtime error: left shift of 1 by 63 places cannot be 
> represented in type 'long'
> 
> This is the offending statement:
> ARCH_WORD mask = (ARCH_WORD)1 << (c % ARCH_BITS);

I've just fixed this in core.

Ideally/eventually, we should instead change ARCH_WORD to be of an
unsigned type, and introduce a signed equivalent for the very few places
where that is needed.

> There's also a github issue (in bleeding-jumbo that's in line 34):
> https://github.com/magnumripper/JohnTheRipper/issues/1963

magnum's fix is correct for now, although in core I also changed the
mask[] array declaration in rpp.h to use unsigned ARCH_WORD elements.
I think magnum will want to merge this fix into jumbo.

Thanks!

Alexander

Powered by blists - more mailing lists

Your e-mail address:

Powered by Openwall GNU/*/Linux - Powered by OpenVZ