Openwall GNU/*/Linux - a small security-enhanced Linux distro for servers
[<prev] [next>] [thread-next>] [day] [month] [year] [list]
Date: Wed, 31 Aug 2011 11:38:17 -0500
From: "jfoug" <jfoug@....net>
To: <john-dev@...ts.openwall.com>
Subject: Outputting proper john.conf file name upon error

I knew this was an issue, and magnum poked me about it.  

 

If there are errors in another .conf file, that was .included, then the line
numbers in the error message, would be right, but the file name output was
the 'master' john.conf file originally loaded.

 

This is now fixed, in patch 0005.  I thought this would be harder to do than
it was.  However, it ended up being pretty easy.

 

I had to add a cfg_name char* pointer within the cfg_line structure.  Then
within the load line, when setting the line number of the file to be the
proper number, I then assign the global cfg_name pointer to the local
cfg_name pointer within the cfg_line structure being built.

 

Then in the load-new-file part, where I recurse into the new config file, I
save the global char *cfg_name into a stack variable, and upon return from
the recursive call, I reset the global pointer.  What this will do is have
that global always be tracking the 'current' .conf file being loaded right
now, and then when that file has been completely read, the prior file name
is restored.  Thus within cfg_load_line, the proper file name will always be
present, to set the cfg_line->cfg_name pointer.

 

I then had to make some changes in extern.c, rules,c and md5_gen_parser.c so
that the points where syntax checking found problems, and filename/line
number were being output, that the file name was changed from the global
cfg_name to instead use the cfg_name from the line's data.

All in all, pretty easy, and now the errors have proper context data.

 

Jim.

 

 


Content of type "text/html" skipped

Powered by blists - more mailing lists

Your e-mail address:

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