mirror of
https://github.com/owasp-modsecurity/ModSecurity.git
synced 2025-09-29 03:06:33 +03:00
Merge pull request #2956 from marcstern/v2/mst/username
Centralized function to get user name Remark: only differences in persist_dbm.c are the calls to the centralized function, even if github cannot display individual diffs
This commit is contained in:
commit
c2e20f6501
@ -234,15 +234,7 @@ static char *construct_auditlog_filename(apr_pool_t *mp, const char *uniqueid) {
|
|||||||
* This is required for mpm-itk & mod_ruid2, though should be harmless for other implementations
|
* This is required for mpm-itk & mod_ruid2, though should be harmless for other implementations
|
||||||
* It also changes the return statement.
|
* It also changes the return statement.
|
||||||
*/
|
*/
|
||||||
char *userinfo;
|
char *userinfo = get_username(mp);
|
||||||
apr_status_t rc;
|
|
||||||
apr_uid_t uid;
|
|
||||||
apr_gid_t gid;
|
|
||||||
apr_uid_current(&uid, &gid, mp);
|
|
||||||
rc = apr_uid_name_get(&userinfo, uid, mp);
|
|
||||||
if (rc != APR_SUCCESS) {
|
|
||||||
userinfo = apr_psprintf(mp, "%u", uid);
|
|
||||||
}
|
|
||||||
|
|
||||||
apr_time_exp_lt(&t, apr_time_now());
|
apr_time_exp_lt(&t, apr_time_now());
|
||||||
|
|
||||||
|
@ -2843,3 +2843,14 @@ char* strtok_r(
|
|||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
// Function compatible with Linux & Windows, also with mpm-itk & mod_ruid2
|
||||||
|
char* get_username(apr_pool_t* mp) {
|
||||||
|
char* username;
|
||||||
|
apr_uid_t uid;
|
||||||
|
apr_gid_t gid;
|
||||||
|
int rc = apr_uid_current(&uid, &gid, mp);
|
||||||
|
if (rc != APR_SUCCESS) return "apache";
|
||||||
|
rc = apr_uid_name_get(&username, uid, mp);
|
||||||
|
if (rc != APR_SUCCESS) return "apache";
|
||||||
|
return username;
|
||||||
|
}
|
||||||
|
@ -159,6 +159,8 @@ int DSOLOCAL tree_contains_ip(apr_pool_t *mp, TreeRoot *rtree,
|
|||||||
int DSOLOCAL ip_tree_from_param(apr_pool_t *pool,
|
int DSOLOCAL ip_tree_from_param(apr_pool_t *pool,
|
||||||
char *param, TreeRoot **rtree, char **error_msg);
|
char *param, TreeRoot **rtree, char **error_msg);
|
||||||
|
|
||||||
|
char DSOLOCAL *get_username(apr_pool_t* mp);
|
||||||
|
|
||||||
#ifdef WITH_CURL
|
#ifdef WITH_CURL
|
||||||
int ip_tree_from_uri(TreeRoot **rtree, char *uri,
|
int ip_tree_from_uri(TreeRoot **rtree, char *uri,
|
||||||
apr_pool_t *mp, char **error_msg);
|
apr_pool_t *mp, char **error_msg);
|
||||||
|
@ -100,18 +100,7 @@ static apr_table_t *collection_retrieve_ex(apr_sdbm_t *existing_dbm, modsec_rec
|
|||||||
apr_table_entry_t *te;
|
apr_table_entry_t *te;
|
||||||
int expired = 0;
|
int expired = 0;
|
||||||
int i;
|
int i;
|
||||||
|
char *userinfo = get_username(msr->mp);
|
||||||
/**
|
|
||||||
* This is required for mpm-itk & mod_ruid2, though should be harmless for other implementations
|
|
||||||
*/
|
|
||||||
char *userinfo;
|
|
||||||
apr_uid_t uid;
|
|
||||||
apr_gid_t gid;
|
|
||||||
apr_uid_current(&uid, &gid, msr->mp);
|
|
||||||
rc = apr_uid_name_get(&userinfo, uid, msr->mp);
|
|
||||||
if (rc != APR_SUCCESS) {
|
|
||||||
userinfo = apr_psprintf(msr->mp, "%u", uid);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (msr->txcfg->data_dir == NULL) {
|
if (msr->txcfg->data_dir == NULL) {
|
||||||
msr_log(msr, 1, "collection_retrieve_ex: Unable to retrieve collection (name \"%s\", key \"%s\"). Use "
|
msr_log(msr, 1, "collection_retrieve_ex: Unable to retrieve collection (name \"%s\", key \"%s\"). Use "
|
||||||
@ -384,18 +373,7 @@ int collection_store(modsec_rec *msr, apr_table_t *col) {
|
|||||||
int i;
|
int i;
|
||||||
const apr_table_t *stored_col = NULL;
|
const apr_table_t *stored_col = NULL;
|
||||||
const apr_table_t *orig_col = NULL;
|
const apr_table_t *orig_col = NULL;
|
||||||
|
char *userinfo = get_username(msr->mp);
|
||||||
/**
|
|
||||||
* This is required for mpm-itk & mod_ruid2, though should be harmless for other implementations
|
|
||||||
*/
|
|
||||||
char *userinfo;
|
|
||||||
apr_uid_t uid;
|
|
||||||
apr_gid_t gid;
|
|
||||||
apr_uid_current(&uid, &gid, msr->mp);
|
|
||||||
rc = apr_uid_name_get(&userinfo, uid, msr->mp);
|
|
||||||
if (rc != APR_SUCCESS) {
|
|
||||||
userinfo = apr_psprintf(msr->mp, "%u", uid);
|
|
||||||
}
|
|
||||||
|
|
||||||
var_name = (msc_string *)apr_table_get(col, "__name");
|
var_name = (msc_string *)apr_table_get(col, "__name");
|
||||||
if (var_name == NULL) {
|
if (var_name == NULL) {
|
||||||
@ -677,18 +655,7 @@ int collections_remove_stale(modsec_rec *msr, const char *col_name) {
|
|||||||
char **keys;
|
char **keys;
|
||||||
apr_time_t now = apr_time_sec(msr->request_time);
|
apr_time_t now = apr_time_sec(msr->request_time);
|
||||||
int i;
|
int i;
|
||||||
|
char *userinfo = get_username(msr->mp);
|
||||||
/**
|
|
||||||
* This is required for mpm-itk & mod_ruid2, though should be harmless for other implementations
|
|
||||||
*/
|
|
||||||
char *userinfo;
|
|
||||||
apr_uid_t uid;
|
|
||||||
apr_gid_t gid;
|
|
||||||
apr_uid_current(&uid, &gid, msr->mp);
|
|
||||||
rc = apr_uid_name_get(&userinfo, uid, msr->mp);
|
|
||||||
if (rc != APR_SUCCESS) {
|
|
||||||
userinfo = apr_psprintf(msr->mp, "%u", uid);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (msr->txcfg->data_dir == NULL) {
|
if (msr->txcfg->data_dir == NULL) {
|
||||||
/* The user has been warned about this problem enough times already by now.
|
/* The user has been warned about this problem enough times already by now.
|
||||||
|
Loading…
x
Reference in New Issue
Block a user