@@ -101,6 +101,14 @@ static apr_table_t *collection_retrieve_ex(apr_sdbm_t *existing_dbm, modsec_rec
101
101
int expired = 0 ;
102
102
int i ;
103
103
104
+ /**
105
+ * This is required for mpm-itk & mod_ruid2, though should be harmless for other implementations
106
+ */
107
+ char * username ;
108
+ apr_uid_t uid ;
109
+ apr_gid_t gid ;
110
+ apr_uid_current (& uid , & gid , msr -> mp );
111
+ apr_uid_name_get (& username , uid , msr -> mp );
104
112
105
113
if (msr -> txcfg -> data_dir == NULL ) {
106
114
msr_log (msr , 1 , "collection_retrieve_ex: Unable to retrieve collection (name \"%s\", key \"%s\"). Use "
@@ -109,7 +117,7 @@ static apr_table_t *collection_retrieve_ex(apr_sdbm_t *existing_dbm, modsec_rec
109
117
goto cleanup ;
110
118
}
111
119
112
- dbm_filename = apr_pstrcat (msr -> mp , msr -> txcfg -> data_dir , "/" , col_name , NULL );
120
+ dbm_filename = apr_pstrcat (msr -> mp , msr -> txcfg -> data_dir , "/" , username , "-" , col_name , NULL );
113
121
114
122
if (msr -> txcfg -> debuglog_level >= 9 ) {
115
123
msr_log (msr , 9 , "collection_retrieve_ex: collection_retrieve_ex: Retrieving collection (name \"%s\", filename \"%s\")" ,log_escape (msr -> mp , col_name ),
@@ -374,6 +382,15 @@ int collection_store(modsec_rec *msr, apr_table_t *col) {
374
382
const apr_table_t * stored_col = NULL ;
375
383
const apr_table_t * orig_col = NULL ;
376
384
385
+ /**
386
+ * This is required for mpm-itk & mod_ruid2, though should be harmless for other implementations
387
+ */
388
+ char * username ;
389
+ apr_uid_t uid ;
390
+ apr_gid_t gid ;
391
+ apr_uid_current (& uid , & gid , msr -> mp );
392
+ apr_uid_name_get (& username , uid , msr -> mp );
393
+
377
394
var_name = (msc_string * )apr_table_get (col , "__name" );
378
395
if (var_name == NULL ) {
379
396
goto error ;
@@ -392,7 +409,7 @@ int collection_store(modsec_rec *msr, apr_table_t *col) {
392
409
}
393
410
394
411
// ENH: lowercase the var name in the filename
395
- dbm_filename = apr_pstrcat (msr -> mp , msr -> txcfg -> data_dir , "/" , var_name -> value , NULL );
412
+ dbm_filename = apr_pstrcat (msr -> mp , msr -> txcfg -> data_dir , "/" , username , "-" , var_name -> value , NULL );
396
413
397
414
if (msr -> txcfg -> debuglog_level >= 9 ) {
398
415
msr_log (msr , 9 , "collection_store: Retrieving collection (name \"%s\", filename \"%s\")" ,log_escape (msr -> mp , var_name -> value ),
@@ -655,6 +672,15 @@ int collections_remove_stale(modsec_rec *msr, const char *col_name) {
655
672
apr_time_t now = apr_time_sec (msr -> request_time );
656
673
int i ;
657
674
675
+ /**
676
+ * This is required for mpm-itk & mod_ruid2, though should be harmless for other implementations
677
+ */
678
+ char * username ;
679
+ apr_uid_t uid ;
680
+ apr_gid_t gid ;
681
+ apr_uid_current (& uid , & gid , msr -> mp );
682
+ apr_uid_name_get (& username , uid , msr -> mp );
683
+
658
684
if (msr -> txcfg -> data_dir == NULL ) {
659
685
/* The user has been warned about this problem enough times already by now.
660
686
* msr_log(msr, 1, "Unable to access collection file (name \"%s\"). Use SecDataDir to "
@@ -664,9 +690,9 @@ int collections_remove_stale(modsec_rec *msr, const char *col_name) {
664
690
}
665
691
666
692
if (strstr (col_name ,"USER" ) || strstr (col_name ,"SESSION" ) || strstr (col_name , "RESOURCE" ))
667
- dbm_filename = apr_pstrcat (msr -> mp , msr -> txcfg -> data_dir , "/" , msr -> txcfg -> webappid , "_" , col_name , NULL );
693
+ dbm_filename = apr_pstrcat (msr -> mp , msr -> txcfg -> data_dir , "/" , username , "-" , msr -> txcfg -> webappid , "_" , col_name , NULL );
668
694
else
669
- dbm_filename = apr_pstrcat (msr -> mp , msr -> txcfg -> data_dir , "/" , col_name , NULL );
695
+ dbm_filename = apr_pstrcat (msr -> mp , msr -> txcfg -> data_dir , "/" , username , "-" , col_name , NULL );
670
696
671
697
if (msr -> txcfg -> debuglog_level >= 9 ) {
672
698
msr_log (msr , 9 , "collections_remove_stale: Retrieving collection (name \"%s\", filename \"%s\")" ,log_escape (msr -> mp , col_name ),
0 commit comments