]> git.netwichtig.de Git - user/henk/code/inspircd.git/blob - src/inspircd_util.cpp
Tons of buffering fixes and optimisations for user connections
[user/henk/code/inspircd.git] / src / inspircd_util.cpp
1 /*
2
3    
4 */
5
6 #include "inspircd.h" 
7 #include "inspircd_io.h" 
8 #include "inspircd_util.h" 
9  
10 char *SafeStrncpy (char *dest, const char *src, size_t size) 
11
12   if (!dest) 
13     { 
14       dest = NULL; 
15       return (NULL); 
16     } 
17   else if (size < 1) 
18     { 
19       dest = NULL; 
20       return (NULL); 
21     } 
22  
23   memset (dest, '\0', size); 
24   strncpy (dest, src, size - 1); 
25  
26   return (dest); 
27
28  
29  
30 char *CleanIpAddr (char *cleanAddr, const char *dirtyAddr) 
31
32   int count = 0, maxdot = 0, maxoctet = 0; 
33  
34   memset (cleanAddr, '\0', MAXBUF); 
35   if(dirtyAddr == NULL) 
36         return(cleanAddr); 
37  
38   for (count = 0; count < MAXBUF - 1; count++) 
39     { 
40       if (isdigit (dirtyAddr[count])) 
41         { 
42           if (++maxoctet > 3) 
43             { 
44               cleanAddr[count] = '\0'; 
45               break; 
46             } 
47           cleanAddr[count] = dirtyAddr[count]; 
48         } 
49       else if (dirtyAddr[count] == '.') 
50         { 
51           if (++maxdot > 3) 
52             { 
53               cleanAddr[count] = '\0'; 
54               break; 
55             } 
56           maxoctet = 0; 
57           cleanAddr[count] = dirtyAddr[count]; 
58         } 
59       else 
60         { 
61           cleanAddr[count] = '\0'; 
62           break; 
63         } 
64     } 
65  
66   return (cleanAddr); 
67
68  
69  
70