kalasag.org

kalasag.org

Git

This commit has been accessed 6 times via Git panel.

commit 364d89de7aa08d3f5b0da251711f9453c15de721
tree 83beb578829b29a1c9cbee9e711e44faf0384f64
parent 6c33e2c5f5577f554079bf22ec9f057849a409d9
author Engels Antonio <engels@kalasag.org> 1782533175 +0800
committer Engels Antonio <engels@kalasag.org> 1782533175 +0800

    Complete CleanAndResolve: sanitize output to legal DNS characters
   
    Function was marked XXX as incomplete. Add a character filter
    loop after gethostbyaddr/snprintf that strips anything that isn't
    alphanumeric, a hyphen, or a period. Update the comment to match.

diff --git a/kalasag_util.c b/kalasag_util.c
index 42cb133..9d8d841 100644
--- a/kalasag_util.c
+++ b/kalasag_util.c
@@ -74,17 +74,14 @@ char *CleanIpAddr(char *cleanAddr, const char *dirtyAddr)
 /************************************************************************/
 /* Generic safety function to process an unresolved address and remove  */
 /* anything that is:                                                    */
-/* 1) Not a number.                                                     */
-/* 2) Not a period.                                                     */
-/* 3) Greater than DNSMAXBUF (255)                                      */
-/* 4) Not a legal DNS character (a-z, A-Z, 0-9, - )                    */
-/*                                                                     */
-/* XXX THIS FUNCTION IS NOT COMPLETE                                   */
+/* 1) Not a legal DNS character (a-z, A-Z, 0-9, -, .)                  */
+/* 2) Greater than DNSMAXBUF (255)                                     */
 /************************************************************************/
 int CleanAndResolve(char *resolvedHost, const char *unresolvedHost)
 {
     struct hostent *hostPtr = NULL;
     struct in_addr addr;
+    size_t pos, clean;
 
 #ifdef DEBUG
     Log("debug: CleanAndResolv: Resolving address: %s", unresolvedHost);
@@ -106,6 +103,16 @@ int CleanAndResolve(char *resolvedHost, const char *unresolvedHost)
     else
        snprintf(resolvedHost, DNSMAXBUF, "%s", unresolvedHost);
 
+    /* Sanitize: only legal DNS chars (alphanumeric, hyphen, period) */
+    for (pos = 0, clean = 0; resolvedHost[pos] != '\0'; pos++) {
+       if (isalnum((unsigned char)resolvedHost[pos])
+           || resolvedHost[pos] == '-'
+           || resolvedHost[pos] == '.') {
+           resolvedHost[clean++] = resolvedHost[pos];
+       }
+    }
+    resolvedHost[clean] = '\0';
+
 #ifdef DEBUG
     Log("debug: CleanAndResolve: Cleaned Resolved: %s Dirty Unresolved: %s", resolvedHost, unresolvedHost);
 #endif
 
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
2 downloads
filedropkalasag.git-83beb57.zip
26.49 KB
1 download
filedropkalasag.git-89d9746.tar.bz2
21.25 KB
2 downloads
filedropkalasag.git-89d9746.zip
26.41 KB
1 download
filedropkalasag.git-a1e8b2b.tar.bz2
21.14 KB
2 downloads
filedropkalasag.git-a1e8b2b.zip
26.30 KB
1 download
filedropkalasag.git-8c3a288.tar.bz2
21.20 KB
2 downloads
filedropkalasag.git-8c3a288.zip
26.46 KB
1 download
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