bugfix for win32 with lots of users

plus general cleanup on switch_id()


svn:r684
This commit is contained in:
Roger Dingledine 2003-10-27 10:26:44 +00:00
parent 42b2f341a4
commit a27b570788
2 changed files with 9 additions and 8 deletions

View File

@ -24,6 +24,11 @@
#include <winsock.h>
#endif
/* by default, windows handles only 64 fd's */
#if defined(MS_WINDOWS) && !defined(FD_SETSIZE)
#define FD_SETSIZE MAXCONNECTIONS
#endif
#include "util.h"
int

View File

@ -589,7 +589,6 @@ void write_pidfile(char *filename) {
int switch_id(char *user, char *group) {
#ifndef MS_WINDOWS
int status;
struct passwd *pw = NULL;
struct group *gr = NULL;
@ -609,24 +608,21 @@ int switch_id(char *user, char *group) {
return -1;
}
status = setgid(gr->gr_gid);
if (status != 0) {
if (setgid(gr->gr_gid) != 0) {
log_fn(LOG_ERR,"Error setting GID: %s", strerror(errno));
return -1;
}
} else if (user) {
status = setgid(pw->pw_gid);
if (status != 0) {
if (setgid(pw->pw_gid) != 0) {
log_fn(LOG_ERR,"Error setting GID: %s", strerror(errno));
return -1;
}
}
/* now that the group is switched, we can switch users and lose
priviledges */
privileges */
if (user) {
status = setuid(pw->pw_uid);
if (status != 0) {
if (setuid(pw->pw_uid) != 0) {
log_fn(LOG_ERR,"Error setting UID: %s", strerror(errno));
return -1;
}