mirror of
https://gitlab.torproject.org/tpo/core/tor.git
synced 2024-11-28 06:13:31 +01:00
bugfix for win32 with lots of users
plus general cleanup on switch_id() svn:r684
This commit is contained in:
parent
42b2f341a4
commit
a27b570788
@ -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
|
||||
|
@ -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;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user