package dspam tags 385353 + pending fixed-upstream thanks Hi,
A patch was sent on the upstream mailing-list: http://thread.gmane.org/gmane.mail.qmail.simscan/3301/focus=3327 This code is already applied in the 3.8.0 release. Cheers, Julien
--- dspam-3.6.8~/src/dspamc.c 2006-05-13 21:47:30.000000000 +0930 +++ dspam-3.6.8/src/dspamc.c 2007-06-15 13:30:34.000000000 +0930 @@ -95,12 +95,19 @@ int main (int argc, char *argv[]) { - AGENT_CTX ATX; + AGENT_CTX ATX; /* agent configuration */ + buffer *message = NULL; /* input message */ + int agent_init = 0; /* agent is initialized */ + int driver_init = 0; /* storage driver is initialized */ int exitcode = EXIT_SUCCESS; - buffer *message = NULL; /* input Message */ - int agent_init = 0; /* agent is initialized */ + struct nt_node *node_nt; + struct nt_c c_nt; + struct passwd *pwent; + + srand ((long) time << (long) getpid ()); + umask (006); /* rw-rw---- */ + setbuf (stdout, NULL); /* unbuffered output */ - setbuf (stdout, NULL); /* unbuffered output */ #ifdef DEBUG DO_DEBUG = 0; #endif @@ -113,6 +120,17 @@ exit(EXIT_FAILURE); #endif + /* Cache my username and uid for trusted user security */ + + pwent = getpwuid(getuid()); + if (pwent == NULL) { + LOG(LOG_ERR, ERR_AGENT_RUNTIME_USER); + exitcode = EXIT_FAILURE; + goto BAIL; + } + __pw_name = strdup(pwent->pw_name); + __pw_uid = pwent->pw_uid; + /* Read dspam.conf into global config structure (ds_config_t) */ agent_config = read_config(NULL);