common: Set umask in main() instead of Core::init()
authorManuel Nickschas <sputnick@quassel-irc.org>
Tue, 29 May 2018 21:15:57 +0000 (23:15 +0200)
committerManuel Nickschas <sputnick@quassel-irc.org>
Wed, 6 Jun 2018 19:12:17 +0000 (21:12 +0200)
Ensure that a restricted umask is set for all binaries, before
creating any files.

This fixes the fact that client-side configuration files, including
the configuration directory itself, were created with world-readable
permissions if the system's umask was set accordingly.

src/common/main.cpp
src/core/core.cpp

index accffc6..93932c2 100644 (file)
 #include <cstdlib>
 #include <memory>
 
 #include <cstdlib>
 #include <memory>
 
+#ifdef HAVE_UMASK
+#  include <sys/types.h>
+#  include <sys/stat.h>
+#endif /* HAVE_UMASK */
+
 #include <QTextCodec>
 
 #ifdef BUILD_CORE
 #include <QTextCodec>
 
 #ifdef BUILD_CORE
@@ -68,6 +73,10 @@ Q_IMPORT_PLUGIN(qgif)
 
 int main(int argc, char **argv)
 {
 
 int main(int argc, char **argv)
 {
+#ifdef HAVE_UMASK
+    umask(S_IRWXG | S_IRWXO);
+#endif
+
 #if QT_VERSION < 0x050000
     // All our source files are in UTF-8, and Qt5 even requires that
     QTextCodec::setCodecForCStrings(QTextCodec::codecForName("UTF-8"));
 #if QT_VERSION < 0x050000
     // All our source files are in UTF-8, and Qt5 even requires that
     QTextCodec::setCodecForCStrings(QTextCodec::codecForName("UTF-8"));
index f793855..80646c0 100644 (file)
 #  include <termios.h>
 #endif /* Q_OS_WIN */
 
 #  include <termios.h>
 #endif /* Q_OS_WIN */
 
-#ifdef HAVE_UMASK
-#  include <sys/types.h>
-#  include <sys/stat.h>
-#endif /* HAVE_UMASK */
-
 // ==============================
 //  Custom Events
 // ==============================
 // ==============================
 //  Custom Events
 // ==============================
@@ -91,9 +86,6 @@ void Core::destroy()
 
 Core::Core()
 {
 
 Core::Core()
 {
-#ifdef HAVE_UMASK
-    umask(S_IRWXG | S_IRWXO);
-#endif
     _startTime = QDateTime::currentDateTime().toUTC(); // for uptime :)
 
     Quassel::loadTranslation(QLocale::system());
     _startTime = QDateTime::currentDateTime().toUTC(); // for uptime :)
 
     Quassel::loadTranslation(QLocale::system());