aboutsummaryrefslogtreecommitdiffstats
path: root/FICS
diff options
context:
space:
mode:
authorMarkus Uhlin <markus@nifty-networks.net>2025-11-02 18:59:43 +0100
committerMarkus Uhlin <markus@nifty-networks.net>2025-11-02 18:59:43 +0100
commitec173685a453bde9f6f024e04a5ed5da897210ab (patch)
treee04985afab644bc1fc33e534f086ac81250c3a86 /FICS
parent05cf281ed146182f70521e9be359cde1ef8e7c89 (diff)
Handle if the FICS is installed system-wide
Diffstat (limited to 'FICS')
-rw-r--r--FICS/fics_addplayer.c11
-rw-r--r--FICS/ficsmain.c7
2 files changed, 16 insertions, 2 deletions
diff --git a/FICS/fics_addplayer.c b/FICS/fics_addplayer.c
index 18d42c4..c37ca63 100644
--- a/FICS/fics_addplayer.c
+++ b/FICS/fics_addplayer.c
@@ -42,6 +42,7 @@
#include "fics_getsalt.h"
#include "ficsmain.h"
#include "playerdb.h"
+#include "prep_dir_for_privdrop.h"
#include "settings.h"
#include "utils.h"
@@ -136,6 +137,16 @@ main(int argc, char *argv[])
settings_init();
settings_read_conf(FICS_SETTINGS);
+ if (strncmp(FICS_PREFIX, "/home", 5) == 0) {
+ if (is_super_user())
+ errx(1, "Do not run as root");
+ } else {
+ if (!is_super_user())
+ errx(1, "Need root privileges");
+ else if (drop_root_privileges(FICS_PREFIX) == -1)
+ errx(1, "Privdrop failed");
+ }
+
player_init(0);
p = player_new();
diff --git a/FICS/ficsmain.c b/FICS/ficsmain.c
index bf5aafb..36055b8 100644
--- a/FICS/ficsmain.c
+++ b/FICS/ficsmain.c
@@ -298,9 +298,12 @@ main(int argc, char *argv[])
settings_init();
settings_read_conf(FICS_SETTINGS);
- if (is_super_user()) {
- if (strncmp(FICS_PREFIX, "/home", 5) == 0)
+ if (strncmp(FICS_PREFIX, "/home", 5) == 0) {
+ if (is_super_user())
errx(1, "Do not run as root");
+ } else {
+ if (!is_super_user())
+ errx(1, "Need root privileges");
else if (read_the_group_permissions_file("/etc/group") != 0)
errx(1, "Failed to read the group permissions file");
else if (fics_addgroup(settings_get("sysgroup")) != 0)