Only set HOME, SHELL and PATH in multiuser sessions.
[doldaconnect.git] / daemon / main.c
index 0693a3d..2848d41 100644 (file)
@@ -1,6 +1,6 @@
 /*
  *  Dolda Connect - Modular multiuser Direct Connect-style client
- *  Copyright (C) 2004 Fredrik Tolf (fredrik@dolda2000.com)
+ *  Copyright (C) 2004 Fredrik Tolf <fredrik@dolda2000.com>
  *  
  *  This program is free software; you can redistribute it and/or modify
  *  it under the terms of the GNU General Public License as published by
@@ -304,7 +304,7 @@ pid_t forksess(uid_t user, struct authhandle *auth, void (*ccbfunc)(pid_t, int,
                close(i);
            }
        }
-       setpgrp();
+       setpgid(0, 0);
        signal(SIGHUP, SIG_IGN);
        errno = 0;
 #ifdef HAVE_KEYUTILS
@@ -340,12 +340,12 @@ pid_t forksess(uid_t user, struct authhandle *auth, void (*ccbfunc)(pid_t, int,
                    flog(LOG_WARNING, "could not setuid: %s", strerror(errno));
                    exit(127);
                }
+               putenv(sprintf2("HOME=%s", pwent->pw_dir));
+               putenv(sprintf2("SHELL=%s", pwent->pw_shell));
+               putenv(sprintf2("PATH=%s/bin:/usr/local/bin:/bin:/usr/bin", pwent->pw_dir));
            }
-           putenv(sprintf2("HOME=%s", pwent->pw_dir));
-           putenv(sprintf2("SHELL=%s", pwent->pw_shell));
            putenv(sprintf2("USER=%s", pwent->pw_name));
            putenv(sprintf2("LOGNAME=%s", pwent->pw_name));
-           putenv(sprintf2("PATH=%s/bin:/usr/local/bin:/bin:/usr/bin", pwent->pw_dir));
            chdir(pwent->pw_dir);
            return(0);
        }