Tue Aug 18 00:42:33 EDT 1998 Nathan Bryant <bryant@cs.usm.maine.edu>
[citadel.git] / citadel / user_ops.c
index ce832d949101d5383b52c90c1636ccef63e99438..d52bad9d319ace1a872f4a5693595f7a222a9eed 100644 (file)
@@ -17,6 +17,7 @@
 #include "citadel.h"
 #include "server.h"
 #include "proto.h"
+#include "database.h"
 
 extern struct config config;
 
@@ -50,11 +51,13 @@ int getuser(struct usersupp *usbuf, char name[]) {
                }
 
        cdbus = cdb_fetch(CDB_USERSUPP, lowercase_name, strlen(lowercase_name));
-       if (cdbus == NULL) {    /* not found */
-               return(1);
+       if (cdbus == NULL) {
+               return(1);      /* user not found */
                }
 
-       memcpy(usbuf, cdbus->ptr, cdbus->len);
+       memcpy(usbuf, cdbus->ptr,
+               ( (cdbus->len > sizeof(struct usersupp)) ?
+               sizeof(struct usersupp) : cdbus->len) );
        cdb_free(cdbus);
        return(0);
        }
@@ -87,7 +90,8 @@ void putuser(struct usersupp *usbuf, char *name)
                lowercase_name[a] = tolower(name[a]);
                }
 
-       cdb_store(CDB_USERSUPP, lowercase_name, strlen(lowercase_name),
+       cdb_store(CDB_USERSUPP,
+               lowercase_name, strlen(lowercase_name),
                usbuf, sizeof(struct usersupp));
 
        }
@@ -96,8 +100,7 @@ void putuser(struct usersupp *usbuf, char *name)
 /*
  * lputuser()  -  same as putuser() but locks the record
  */
-void lputuser(struct usersupp *usbuf, char *name)
-{
+void lputuser(struct usersupp *usbuf, char *name) {
        putuser(usbuf,name);
        end_critical_section(S_USERSUPP);
        }
@@ -117,8 +120,12 @@ int is_aide(void) {
  */
 int is_room_aide(void) {
        if ( (CC->usersupp.axlevel >= 6)
-               || (CC->quickroom.QRroomaide == CC->usersupp.usernum) ) return(1);
-       else return(0);
+          || (CC->quickroom.QRroomaide == CC->usersupp.usernum) ) {
+               return(1);
+               }
+       else {
+               return(0);
+               }
        }
 
 /*
@@ -133,7 +140,9 @@ int getuserbynumber(struct usersupp *usbuf, long int number)
 
        while(cdbus = cdb_next_item(CDB_USERSUPP), cdbus != NULL) {
                bzero(usbuf, sizeof(struct usersupp));
-               memcpy(usbuf, cdbus->ptr, cdbus->len);
+               memcpy(usbuf, cdbus->ptr,
+                       ( (cdbus->len > sizeof(struct usersupp)) ?
+                       sizeof(struct usersupp) : cdbus->len) );
                cdb_free(cdbus);
                if (usbuf->usernum == number) {
                        return(0);
@@ -711,7 +720,9 @@ void cmd_gnur(void) {
        cdb_rewind(CDB_USERSUPP);
        while (cdbus = cdb_next_item(CDB_USERSUPP), cdbus != NULL) {
                bzero(&usbuf, sizeof(struct usersupp));
-               memcpy(&usbuf, cdbus->ptr, cdbus->len);
+               memcpy(&usbuf, cdbus->ptr,
+                       ( (cdbus->len > sizeof(struct usersupp)) ?
+                       sizeof(struct usersupp) : cdbus->len) );
                cdb_free(cdbus);
                if ((usbuf.flags & US_NEEDVALID)
                   &&(usbuf.axlevel > 0)) {
@@ -853,7 +864,9 @@ void cmd_list(void) {
 
        while(cdbus = cdb_next_item(CDB_USERSUPP), cdbus != NULL) {
                bzero(&usbuf, sizeof(struct usersupp));
-               memcpy(&usbuf, cdbus->ptr, cdbus->len);
+               memcpy(&usbuf, cdbus->ptr,
+                       ( (cdbus->len > sizeof(struct usersupp)) ?
+                       sizeof(struct usersupp) : cdbus->len) );
                cdb_free(cdbus);
 
            if (usbuf.axlevel > 0) {
@@ -1126,6 +1139,7 @@ void cmd_agup(char *cmdbuf) {
                usbuf.posted,
                (int)usbuf.axlevel,
                usbuf.usernum);
+
        }