Openwall GNU/*/Linux - a small security-enhanced Linux distro for servers
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Date: Sun, 24 Jul 2011 01:15:49 +0400
From: Solar Designer <solar@...nwall.com>
To: john-dev@...ts.openwall.com
Subject: Re: Plugin formats "released"

Jim, magnum -

On Mon, Jul 04, 2011 at 03:18:21PM -0500, JFoug wrote:
> Now that this has been released, I plan on basing any upcoming patches I 
> make, against this 'plugin version' of the jumbo.
> 
> As it was released by magnum, could easily be a jumbo-3 (with a change to 
> params.h and any docs), with no functionality change, but simply converting 
> into the 'plugin' format.

Frankly, I have mixed feelings about this plugin formats stuff, but
since this is -jumbo, I accept.  The dependency on GNU make is nasty,
but it is tricky and maybe unreasonable to avoid it (e.g., running a
configure script before make wouldn't be obviously better).

So, I started with john-1.7.8-jumbo-2-plugin.diff (yes, I didn't use the
tarball), did the renames with rename(1) (moved files _not_ to be
renamed to a subdirectory temporarily), made sure things worked for me
on Linux, then went on to modify things.  Here are the changed bits:

I did not understand the rationale behind some of:

# Should work on Solaris and gmake
PLUGFORMATS_SRCS: sh =if [ -f *_plug.c ]; then ls *_plug.c; fi
PLUGFORMATS_SRCS += $(shell ls *_plug.c)
PLUGFORMATS_OBJS = $(PLUGFORMATS_SRCS:.c=.o)

So I simplified it to:

# Requires GNU make (under Solaris, use "gmake")
PLUGFORMATS_SRCS = $(wildcard *_plug.c)
PLUGFORMATS_OBJS = $(PLUGFORMATS_SRCS:.c=.o)

Then, I did not like the grep|sed|awk commands, which I simplified to
single invocations of sed:

fmt_externs.h: $(PLUGFORMATS_SRCS) Makefile
	$(SED) -n 's/^\(struct fmt_main [^ ]\+\) =.*/extern \1;/p' *_fmt_plug.c > fmt_externs.h

fmt_registers.h: $(PLUGFORMATS_SRCS) Makefile
	$(SED) -n 's/^struct fmt_main \([^ ]\+\) =.*/john_register_one(\&\1);/p' *_fmt_plug.c > fmt_registers.h

john.o: john.c fmt_externs.h fmt_registers.h
	$(CC) $(CFLAGS) $(OPT_NORMAL) john.c

I think that relying on fewer tools makes this more reliable.

I'd appreciate it if you test these changes on systems other than Linux
while I proceed to review/merge other recent patches.

Thanks,

Alexander

Powered by blists - more mailing lists

Your e-mail address:

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