- {
- snprintf(uidstr, sizeof(uidstr), "%ld", (long)*auth.sysuserid);
- if ((token_cmd=malloc(sizeof(TOKEN_CMD)+strlen(uidstr))))
- {
- strcat(strcpy(token_cmd, TOKEN_CMD),uidstr);
- system(token_cmd);
- free(token_cmd);
- }
- }
+ {
+ pid_t pid = fork ();
+
+ if (pid == 0)
+ {
+ char uidstr[32] = "<null>";
+ snprintf(uidstr, sizeof(uidstr), "%ld", (long)*auth.sysuserid);
+
+ libmail_changeuidgid (*auth.sysuserid, auth.sysgroupid);
+ execl ("/etc/courier/get-token", "get-token", uidstr, NULL);
+ }
+ else
+ {
+ waitpid (pid, NULL, 0);
+ }
+ }