kalasag.org

kalasag.org

Git

This blob has been accessed 2 times via Git panel.

  1. #include "kalasag.h"
  2. #include "kalasag_io.h"
  3. #include "kalasag_util.h"
  4.  
  5. /* A replacement for strncpy that covers mistakes a little better */
  6. char *SafeStrncpy(char *dest, const char *src, size_t size)
  7. {
  8.     if (!dest) {
  9.         dest = NULL;
  10.         return (NULL);
  11.     } else if (size < 1) {
  12.         dest = NULL;
  13.         return (NULL);
  14.     }
  15.  
  16.     /* Null terminate string. Why the hell strncpy doesn't do this */
  17.     /* for you is mystery to me. God I hate C. */
  18.     memset(dest, '\0', size);
  19.     strncpy(dest, src, size - 1);
  20.  
  21.     return (dest);
  22. }
  23.  
  24.  
  25. /************************************************************************/
  26. /* Generic safety function to process an IP address and remove anything */
  27. /* that is:                                                             */
  28. /* 1) Not a number.                                                     */
  29. /* 2) Not a period.                                                     */
  30. /* 3) Greater than IPMAXBUF (15)                                        */
  31. /************************************************************************/
  32. char *CleanIpAddr(char *cleanAddr, const char *dirtyAddr)
  33. {
  34.     int count = 0, maxdot = 0, maxoctet = 0;
  35.  
  36. #ifdef DEBUG
  37.     Log("debug: cleanAddr: Cleaning Ip address: %s", dirtyAddr);
  38. #endif
  39.  
  40.     memset(cleanAddr, '\0', IPMAXBUF);
  41.     /* dirtyAddr must be valid */
  42.     if (dirtyAddr == NULL)
  43.         return (cleanAddr);
  44.  
  45.     for (count = 0; count < IPMAXBUF - 1; count++) {
  46.         if (isdigit(dirtyAddr[count])) {
  47.             if (++maxoctet > 3) {
  48.                 cleanAddr[count] = '\0';
  49.                 break;
  50.             }
  51.             cleanAddr[count] = dirtyAddr[count];
  52.         } else if (dirtyAddr[count] == '.') {
  53.             if (++maxdot > 3) {
  54.                 cleanAddr[count] = '\0';
  55.                 break;
  56.             }
  57.             maxoctet = 0;
  58.             cleanAddr[count] = dirtyAddr[count];
  59.         } else {
  60.             cleanAddr[count] = '\0';
  61.             break;
  62.         }
  63.     }
  64.  
  65. #ifdef DEBUG
  66.     Log("debug: cleanAddr: Cleaned IpAddress: %s Dirty IpAddress: %s",
  67.         cleanAddr, dirtyAddr);
  68. #endif
  69.  
  70.     return (cleanAddr);
  71. }
  72.  
  73.  
  74. /************************************************************************/
  75. /* Generic safety function to process an unresolved address and remove  */
  76. /* anything that is:                                                    */
  77. /* 1) Not a legal DNS character (a-z, A-Z, 0-9, -, .)                   */
  78. /* 2) Greater than DNSMAXBUF (255)                                      */
  79. /************************************************************************/
  80. int CleanAndResolve(char *resolvedHost, const char *unresolvedHost)
  81. {
  82.     struct hostent *hostPtr = NULL;
  83.     struct in_addr addr;
  84.     size_t pos, clean;
  85.  
  86. #ifdef DEBUG
  87.     Log("debug: CleanAndResolv: Resolving address: %s", unresolvedHost);
  88. #endif
  89.  
  90.     memset(resolvedHost, '\0', DNSMAXBUF);
  91.     /* unresolvedHost must be valid */
  92.     if (unresolvedHost == NULL)
  93.         return (ERROR);
  94.  
  95.     /* Not a valid address */
  96.     if ((inet_aton(unresolvedHost, &addr)) == 0)
  97.         return (ERROR);
  98.  
  99.     hostPtr =
  100.         gethostbyaddr((char *) &addr.s_addr, sizeof(addr.s_addr), AF_INET);
  101.     if (hostPtr != NULL)
  102.         snprintf(resolvedHost, DNSMAXBUF, "%s", hostPtr->h_name);
  103.     else
  104.         snprintf(resolvedHost, DNSMAXBUF, "%s", unresolvedHost);
  105.  
  106.     /* Sanitize: only legal DNS chars (alphanumeric, hyphen, period) */
  107.     for (pos = 0, clean = 0; resolvedHost[pos] != '\0'; pos++) {
  108.         if (isalnum((unsigned char)resolvedHost[pos])
  109.             || resolvedHost[pos] == '-'
  110.             || resolvedHost[pos] == '.') {
  111.             resolvedHost[clean++] = resolvedHost[pos];
  112.         }
  113.     }
  114.     resolvedHost[clean] = '\0';
  115.  
  116. #ifdef DEBUG
  117.     Log("debug: CleanAndResolve: Cleaned Resolved: %s Dirty Unresolved: %s", resolvedHost, unresolvedHost);
  118. #endif
  119.  
  120.     return (TRUE);
  121. }
  122.  
filedropkalasag.git-8eed43a.tar.bz2 new
21.31 KB
2 downloads
filedropkalasag.git-8eed43a.zip
26.47 KB
1 download
filedropkalasag.git-83beb57.tar.bz2
21.32 KB
3 downloads
filedropkalasag.git-83beb57.zip
26.49 KB
1 download
filedropkalasag.git-89d9746.tar.bz2
21.25 KB
3 downloads
filedropkalasag.git-89d9746.zip
26.41 KB
2 downloads
filedropkalasag.git-a1e8b2b.tar.bz2
21.14 KB
2 downloads
filedropkalasag.git-a1e8b2b.zip
26.30 KB
2 downloads
filedropkalasag.git-8c3a288.tar.bz2
21.20 KB
3 downloads
filedropkalasag.git-8c3a288.zip
26.46 KB
2 downloads
filedropkalasag.git-1c9f013.tar.bz2
20.95 KB
131 downloads
filedropkalasag.git-1c9f013.zip
25.81 KB
76 downloads
filedropkalasag.git-3ca3612.tar.bz2
20.80 KB
34 downloads
filedropkalasag.git-3ca3612.zip
25.66 KB
19 downloads
filedropkalasag.git-2ffeaa6.tar.bz2
20.80 KB
36 downloads
filedropkalasag.git-2ffeaa6.zip
25.65 KB
90 downloads
filedropkalasag.git-2834a11.tar.bz2
20.84 KB
139 downloads
filedropkalasag.git-2834a11.zip
25.72 KB
18 downloads
filedropkalasag.git-afd7b31.tar.bz2
20.84 KB
119 downloads
filedropkalasag.git-afd7b31.zip
25.71 KB
98 downloads
filedropkalasag.git-97c89e1.tar.bz2
20.82 KB
116 downloads
filedropkalasag.git-97c89e1.zip
25.68 KB
96 downloads
filedropkalasag.git-1141d13.tar.bz2
20.65 KB
122 downloads
filedropkalasag.git-1141d13.zip
25.37 KB
82 downloads
filedropkalasag.git-ee3c17b.tar.bz2
20.65 KB
113 downloads
filedropkalasag.git-ee3c17b.zip
25.34 KB
24 downloads
filedropkalasag.git-4032c54.tar.bz2
20.63 KB
32 downloads
filedropkalasag.git-4032c54.zip
25.13 KB
87 downloads
filedropkalasag.git-e51a2a6.tar.bz2
20.65 KB
108 downloads
filedropkalasag.git-e51a2a6.zip
25.13 KB
19 downloads
filedropkalasag.git-599c93a.tar.bz2
20.63 KB
104 downloads
filedropkalasag.git-599c93a.zip
25.11 KB
1,612 downloads
filedropkalasag.git-acdc640.tar.bz2
20.63 KB
105 downloads
filedropkalasag.git-acdc640.zip
25.10 KB
14 downloads