diff --git a/CHANGES b/CHANGES index e7fb04c1..d3cabef2 100644 --- a/CHANGES +++ b/CHANGES @@ -1,3 +1,12 @@ +09 Mar 2012 - 2.6.4 +------------------- + + * Fixed Mlogc 100% CPU consume (Thanks Klaubert Herr and Ebrahim Khalilzadeh). + + * Fixed ModSecurity cannot load session and user sdbm data. + + * Code cleanup. + 23 Feb 2012 - 2.6.4-rc1 ------------------- diff --git a/apache2/msc_release.h b/apache2/msc_release.h index 0b3c13a4..7b45caf1 100644 --- a/apache2/msc_release.h +++ b/apache2/msc_release.h @@ -39,8 +39,8 @@ #define MODSEC_VERSION_MAJOR "2" #define MODSEC_VERSION_MINOR "6" #define MODSEC_VERSION_MAINT "4" -#define MODSEC_VERSION_TYPE "-rc" -#define MODSEC_VERSION_RELEASE "1" +#define MODSEC_VERSION_TYPE "" +#define MODSEC_VERSION_RELEASE "" #define MODSEC_VERSION_SUFFIX MODSEC_VERSION_TYPE MODSEC_VERSION_RELEASE diff --git a/apache2/persist_dbm.c b/apache2/persist_dbm.c index 39982390..19152e77 100644 --- a/apache2/persist_dbm.c +++ b/apache2/persist_dbm.c @@ -108,10 +108,10 @@ static apr_table_t *collection_retrieve_ex(apr_sdbm_t *existing_dbm, modsec_rec goto cleanup; } - if(strstr(col_name,"USER") || strstr(col_name,"SESSION")) - dbm_filename = apr_pstrcat(msr->mp, msr->txcfg->data_dir, "/", msr->txcfg->webappid, "_", col_name, NULL); - else - dbm_filename = apr_pstrcat(msr->mp, msr->txcfg->data_dir, "/", col_name, NULL); + dbm_filename = apr_pstrcat(msr->mp, msr->txcfg->data_dir, "/", col_name, NULL); + + msr_log(msr, 1, "collection_retrieve_ex: Retrieving collection (name \"%s\", filename \"%s\")",log_escape(msr->mp, col_name), + log_escape(msr->mp, dbm_filename)); key.dptr = (char *)col_key; key.dsize = col_key_len + 1; @@ -353,6 +353,9 @@ int collection_store(modsec_rec *msr, apr_table_t *col) { // ENH: lowercase the var name in the filename dbm_filename = apr_pstrcat(msr->mp, msr->txcfg->data_dir, "/", var_name->value, NULL); + msr_log(msr, 1, "collection_store: Retrieving collection (name \"%s\", filename \"%s\")",log_escape(msr->mp, var_name->value), + log_escape(msr->mp, dbm_filename)); + /* Delete IS_NEW on store. */ apr_table_unset(col, "IS_NEW"); @@ -584,6 +587,9 @@ int collections_remove_stale(modsec_rec *msr, const char *col_name) { else dbm_filename = apr_pstrcat(msr->mp, msr->txcfg->data_dir, "/", col_name, NULL); + msr_log(msr, 1, "collections_remove_stale: Retrieving collection (name \"%s\", filename \"%s\")",log_escape(msr->mp, col_name), + log_escape(msr->mp, dbm_filename)); + rc = apr_sdbm_open(&dbm, dbm_filename, APR_CREATE | APR_WRITE | APR_SHARELOCK, CREATEMODE, msr->mp); if (rc != APR_SUCCESS) { diff --git a/apache2/re_tfns.c b/apache2/re_tfns.c index 08a4389d..c8e370f3 100644 --- a/apache2/re_tfns.c +++ b/apache2/re_tfns.c @@ -337,16 +337,15 @@ static int msre_fn_removeComments_execute(apr_pool_t *mptmp, unsigned char *inpu changed = 1; incomment = 1; i += 2; - } else if ((input[i] == '-')&&(i + 1 < input_len)&&(input[i + 1] == '-')) { + } else if ((input[i] == '-')&&(i + 1 < input_len)&&(input[i + 1] == '-') + && (incomment == 0)) { changed = 1; input[i] = ' '; break; - i += 2; - } else if (input[i] == '#') { + } else if (input[i] == '#' && (incomment == 0)) { changed = 1; input[i] = ' '; - break; - i++; + break; } else { input[j] = input[i]; i++;