Handle system accounts differently in auto purger
authorArt Cancro <ajc@citadel.org>
Wed, 15 Jun 2022 12:54:38 +0000 (08:54 -0400)
committerArt Cancro <ajc@citadel.org>
Wed, 15 Jun 2022 12:54:38 +0000 (08:54 -0400)
citadel/server/modules/expire/serv_expire.c
citadel/server/user_ops.c

index ca51edd096b574555028596c80144a84278ea954..e92ae6c4a22b5c5a45f4b41db9e92a963bf0a399 100644 (file)
@@ -391,14 +391,7 @@ void do_user_purge(char *username, void *data) {
        if (us.usernum < 0L) purge = 1;
        
        // Don't purge user 0. That user is there for the system
-       if (us.usernum == 0L) {
-               // FIXME: Temporary log message. Until we do unauth access with user 0 we should
-               // try to get rid of all user 0 occurences. Many will be remnants from old code so
-               // we will need to try and purge them from users data bases.Some will not have names but
-               // those with names should be purged.
-               syslog(LOG_DEBUG, "Auto purger found a user 0 with name <%s>", us.fullname);
-               // purge = 0;
-       }
+       if (us.usernum == 0L) purge = 0;
        
        // If the user has no full name entry then we can't purge them since the actual purge can't find them.
        // This shouldn't happen but does somehow.
index 0603fc79cf5cc87a2c3dfa61f7ece6eba152c0b5..d45e5004469d69739dc7adc5d1805af2988ce2dd 100644 (file)
@@ -566,6 +566,11 @@ int CtdlLoginExistingUser(const char *trythisname) {
                }
        }
 
+       // User 0 is a system account and must not be used by a real user
+       if (&CC->user.usernum <= 0) {
+               return login_not_found;
+       }
+
        // Did we find something?
        if (found_user == 0) {
                if (((CC->nologin)) && (CC->user.axlevel < AxAideU)) {