Fixed bug in FilterChainBase64 where an extra character would be returned if the module ran out of data in SCANNING mode. Now if this occurs a flag is set and "No More Data" is thrown instead of returning the extra byte.
Adjusted DEFUNKER preamble in code to indicate spaces in front and back since newlines would be converted to spaces by the outer shell of FilterChainDefunker.
Adjusted engine update number to .15 - now at Version 3.0.15
git-svn-id: https://svn.microneil.com/svn/SNFMulti/trunk@33 dc71a809-1921-45c4-985c-09c81d0142d9
Changed engine update number to .14 (now Version 3.0.14).
Modified FilterChainDefunker to avoid recursion when eating (X)HTML tags. Now there is a new mechanism that allows deeper states to return nothing (no conversion) by setting a boolean flag. The result is that the root state will skip that result and try again with the next available byte in a simple loop (no recursion). This eliminates a vulnerability where a message constructed with deeply embeded / chained (X)HTML tags could cause the system to run out of stack space under some conditions.
git-svn-id: https://svn.microneil.com/svn/SNFMulti/trunk@32 dc71a809-1921-45c4-985c-09c81d0142d9
Fixed valgrind complaint about using uninitialized data when generating a OneTimePad. The algorithm uses unsigned char x as a register. Each next random byte in the pad is based on encrypting the last-- so a first byte is needed. Original code used an uninitialized x on purpose in order to get a supposedly unpredictable byte out of RAM. To make valgrind happy (and truly to make the algorithm better) x is now initialized by encrypting a 0 with the pad generator. This value is not directly exposed in the generated pad. The first byte in the one time pad is not the result of encrypting 0 but instead the result of encrypting the result of that operation. So, the first byte is based on the state of the pad generator just prior to making the OneTimePad. This is probably harder to predict than the state of the stack (where x would have come from) anyway.
Fixed persistent state data bug. Persistent state data is now saved once per second after updating status logs.
Improved snfLOGmgr d'tor so that final persistent state data is only saved (attempted) if snfLOGmgr has been Configured.
git-svn-id: https://svn.microneil.com/svn/SNFMulti/trunk@22 dc71a809-1921-45c4-985c-09c81d0142d9
Fixed a bug where the rulebase path was not determined correctly when license id was provided only through the run-time interface.
Modified the configuration log generator to protect security key information when it is provided through the run-time interface.
git-svn-id: https://svn.microneil.com/svn/SNFMulti/trunk@19 dc71a809-1921-45c4-985c-09c81d0142d9
Replaced all assert() with appropriate Checks and Faults in SNFMulti and it's components. Also added some minor tweaks to improve code safety and eliminate compiler warnings.
Minor tweaks to GBUdb.* to remove compiler warnings.
Minor tweaks to snf_engine.* to remove compiler warnings.
Refactored Evaluator objects to use unsigned ints for positions.
git-svn-id: https://svn.microneil.com/svn/SNFMulti/trunk@6 dc71a809-1921-45c4-985c-09c81d0142d9