From 13e3219b8acd460c73ec0df03e51ef6678664a68 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Eckl=2C=20M=C3=A1t=C3=A9?= <ecklm94@gmail.com>
Date: Fri, 27 May 2016 10:24:24 +0200
Subject: [PATCH] =?UTF-8?q?Alacsony=20port=20probl=C3=A9ma=20jav=C3=ADt?=
 =?UTF-8?q?=C3=A1s?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 main.cpp              | 9 +++++----
 src/udp_socket_wp.cpp | 1 +
 2 files changed, 6 insertions(+), 4 deletions(-)

diff --git a/main.cpp b/main.cpp
index c66faf7..0071412 100644
--- a/main.cpp
+++ b/main.cpp
@@ -98,7 +98,7 @@ int main(int argc, char *argv[])
 
 	log_on_demand(LOG_INFO, "Server started on pid %d", getpid()); // Enélkül nem hajlandó sudo után logolni.
 	if(verbose)
-			log_on_demand(LOG_DEBUG, "Current working directory is %s.", working_dir);
+		log_on_demand(LOG_DEBUG, "Current working directory is %s.", working_dir);
 
 	passwd *new_uid = getpwnam(RUNNING_USER);
 	if(new_uid == NULL)
@@ -118,12 +118,12 @@ int main(int argc, char *argv[])
 		PERROR_ON_DEMAND("chdir");
 		exit(EXIT_FAILURE);
 	}
-	setgid(new_uid->pw_gid);
-	setuid(new_uid->pw_uid);
 
 	IPC_US_communicator comm_link(COMM_SOCK_PATH, run_as_daemon);
 	if(!run_as_daemon)
 	{
+		setgid(new_uid->pw_gid);
+		setuid(new_uid->pw_uid);
 		if(command_list.empty())
 		{
 			log_on_demand(LOG_ERR, "In this mode you must specify at least one command!");
@@ -164,7 +164,8 @@ int main(int argc, char *argv[])
 		inet_ntop(server_address.sin6_family, &server_address.sin6_addr, addr, INET6_ADDRSTRLEN);
 		log_on_demand(LOG_DEBUG, "Server started serving on: %s",addr);
 	}
-
+	setgid(new_uid->pw_gid);
+	setuid(new_uid->pw_uid);
 // ----------------- INIT END --------------------------
 
 // ------------------ SERVE ----------------------------
diff --git a/src/udp_socket_wp.cpp b/src/udp_socket_wp.cpp
index 54e156f..7a76db5 100644
--- a/src/udp_socket_wp.cpp
+++ b/src/udp_socket_wp.cpp
@@ -34,6 +34,7 @@ void udp_socket_wp::setsockopt_wp(int __level, int __optname, const void* __optv
 void udp_socket_wp::bind_wp(const struct sockaddr* __addr, size_t __len) {
 	if (bind(fd, __addr, __len) < 0) {
 		// May throw some exception
+		PERROR_ON_DEMAND("bind");
 	}
 }
 
-- 
GitLab