]> code.citadel.org Git - citadel.git/blobdiff - citadel/user_ops.c
* Minor and/or cosmetic changes made during x64 troubleshooting
[citadel.git] / citadel / user_ops.c
index 56559a05ef23ef41daa3376ff56b84b151de6999..72ebc12986080952a3f6839d844958fe86fdb4b2 100644 (file)
@@ -79,7 +79,9 @@ int getuser(struct ctdluser *usbuf, char name[])
        struct cdbdata *cdbus;
        int using_sysuser = 0;
 
-       memset(usbuf, 0, sizeof(struct ctdluser));
+       if (usbuf != NULL) {
+               memset(usbuf, 0, sizeof(struct ctdluser));
+       }
 
 #ifdef ENABLE_AUTOLOGIN
        if (CtdlAssociateSystemUser(sysuser_name, name) == 0) {
@@ -98,9 +100,11 @@ int getuser(struct ctdluser *usbuf, char name[])
        if (cdbus == NULL) {    /* user not found */
                return(1);
        }
-       memcpy(usbuf, cdbus->ptr,
-              ((cdbus->len > sizeof(struct ctdluser)) ?
-               sizeof(struct ctdluser) : cdbus->len));
+       if (usbuf != NULL) {
+               memcpy(usbuf, cdbus->ptr,
+                       ((cdbus->len > sizeof(struct ctdluser)) ?
+                        sizeof(struct ctdluser) : cdbus->len));
+       }
        cdb_free(cdbus);
 
        return (0);
@@ -352,11 +356,10 @@ int CtdlLoginExistingUser(char *trythisname)
        char username[SIZ];
        int found_user;
        struct recptypes *valid = NULL;
-       struct passwd *p = NULL;
 
        if (trythisname == NULL) return login_not_found;
-       safestrncpy(username, trythisname, sizeof username);
-       strproc(username);
+       safestrncpy(username, trythisname, USERNAME_SIZE);
+       striplt(username);
 
        if ((CC->logged_in)) {
                return login_already_logged_in;
@@ -369,13 +372,13 @@ int CtdlLoginExistingUser(char *trythisname)
         * is an e-mail address
         */
        if (found_user != 0) {
-               valid = validate_recipients(trythisname);
+               valid = validate_recipients(username);
                if (valid != NULL) {
                        if (valid->num_local == 1) {
                                found_user = getuser(&CC->user,
                                                valid->recp_local);
                        }
-                       phree(valid);
+                       free(valid);
                }
        }
 
@@ -385,7 +388,8 @@ int CtdlLoginExistingUser(char *trythisname)
         * account.
         */
        if (found_user != 0) {
-               p = (struct passwd *) getpwnam(username);
+               struct passwd *p = (struct passwd *) getpwnam(username);
+
                if (p != NULL) {
                        create_user(username, 0);
                        found_user = getuser(&CC->user, username);
@@ -483,8 +487,8 @@ void session_startup(void)
        /* Create any personal rooms required by the system.
         * (Technically, MAILROOM should be there already, but just in case...)
         */
-       create_room(MAILROOM, 4, "", 0, 1, 0);
-       create_room(SENTITEMS, 4, "", 0, 1, 0);
+       create_room(MAILROOM, 4, "", 0, 1, 0, VIEW_BBS);
+       create_room(SENTITEMS, 4, "", 0, 1, 0, VIEW_BBS);
 
        /* Run any startup routines registered by loadable modules */
        PerformSessionHooks(EVT_LOGIN);
@@ -700,8 +704,6 @@ void cmd_pass(char *buf)
        case pass_ok:
                logged_in_response();
                return;
-               cprintf("%d Can't find user record!\n",
-                       ERROR + INTERNAL_ERROR);
        }
 }
 
@@ -776,7 +778,6 @@ int create_user(char *newusername, int become_user)
 {
        struct ctdluser usbuf;
        struct ctdlroom qrbuf;
-       struct passwd *p = NULL;
        char username[SIZ];
        char mailboxname[ROOMNAMELEN];
        uid_t uid;
@@ -785,12 +786,15 @@ int create_user(char *newusername, int become_user)
        strproc(username);
 
 #ifdef ENABLE_AUTOLOGIN
-       p = (struct passwd *) getpwnam(username);
-       if (p != NULL) {
-               extract_token(username, p->pw_gecos, 0, ',');
-               uid = p->pw_uid;
-       } else {
-               uid = (-1);
+       {
+               struct passwd *p = (struct passwd *) getpwnam(username);
+
+               if (p != NULL) {
+                       extract_token(username, p->pw_gecos, 0, ',');
+                       uid = p->pw_uid;
+               } else {
+                       uid = (-1);
+               }
        }
 #else
        uid = (-1);
@@ -832,10 +836,10 @@ int create_user(char *newusername, int become_user)
         * Make the latter an invisible system room.
         */
        MailboxName(mailboxname, sizeof mailboxname, &usbuf, MAILROOM);
-       create_room(mailboxname, 5, "", 0, 1, 1);
+       create_room(mailboxname, 5, "", 0, 1, 1, VIEW_BBS);
 
        MailboxName(mailboxname, sizeof mailboxname, &usbuf, USERCONFIGROOM);
-       create_room(mailboxname, 5, "", 0, 1, 1);
+       create_room(mailboxname, 5, "", 0, 1, 1, VIEW_BBS);
         if (lgetroom(&qrbuf, mailboxname) == 0) {
                 qrbuf.QRflags2 |= QR2_SYSTEM;
                 lputroom(&qrbuf);
@@ -1577,7 +1581,7 @@ int InitialMailCheck()
         cdbfr = cdb_fetch(CDB_MSGLISTS, &mailbox.QRnumber, sizeof(long));
 
         if (cdbfr != NULL) {
-                msglist = mallok(cdbfr->len);
+                msglist = malloc(cdbfr->len);
                 memcpy(msglist, cdbfr->ptr, cdbfr->len);
                 num_msgs = cdbfr->len / sizeof(long);
                 cdb_free(cdbfr);
@@ -1591,7 +1595,7 @@ int InitialMailCheck()
                         }
                 }
         if (msglist != NULL)
-                phree(msglist);
+                free(msglist);
 
         return (num_newmsgs);
 }