]> jfr.im git - irc/quakenet/newserv.git/blobdiff - request/user.c
Add memory protection to debug version of (old) sstring.
[irc/quakenet/newserv.git] / request / user.c
index 6ab49ca1e6e07142a62fcfe157a511aa74aea5c9..563591f0ca6b1c5de33974e6a82b197b4a01941b 100644 (file)
@@ -1,7 +1,9 @@
 #include <stdio.h>
+#include <string.h>
 
 #include "../irc/irc_config.h"
 #include "../lib/irc_string.h"
+#include "../lib/strlfunc.h"
 #include "../nick/nick.h"
 #include "request.h"
 #include "user.h"
@@ -43,6 +45,7 @@ int ru_create(char *name, unsigned int level) {
 }
 
 void ru_destroy(char *name) {
+       r_user_t *puser;
        r_user_t *user = r_userlist;
 
        if (user && ircd_strcmp(user->name, name) == 0) {
@@ -58,11 +61,12 @@ void ru_destroy(char *name) {
        if (user == NULL)
                return;
        
-       while (user->next) {
+       while (user && user->next) {    
                if (ircd_strcmp(user->next->name, name) == 0) {
+                       puser = user->next;
                        user->next = user->next->next;
 
-                       free(user->next);
+                       free(puser);
                }
 
                user = user->next;
@@ -76,7 +80,7 @@ int ru_parseline(char *line) {
   unsigned int level;
   int result;
 
-  if (sscanf(line, "%s %lu", name, &level) < 2)
+  if (sscanf(line, "%s %u", name, &level) < 2)
     return 0;
 
   ru_loading = 1;
@@ -121,7 +125,7 @@ int ru_load(void) {
 
 int ru_persist(void) {
   FILE *rudata;
-  int i, count = 0;
+  int count = 0;
   r_user_t *user = r_userlist;
 
   if (ru_loading)
@@ -133,7 +137,7 @@ int ru_persist(void) {
     return 0;
 
   while (user) {
-    fprintf(rudata, "%s %lu\n", user->name, user->level);
+    fprintf(rudata, "%s %u\n", user->name, user->level);
 
     user = user->next;
   }