add lua plugin support
[project/uhttpd.git] / utils.c
diff --git a/utils.c b/utils.c
index e3de061..49f885f 100644 (file)
--- a/utils.c
+++ b/utils.c
@@ -122,7 +122,7 @@ int uh_urlencode(char *buf, int blen, const char *src, int slen)
 {
        int i;
        int len = 0;
-       const char hex[] = "0123456789abcdef";
+       static const char hex[] = "0123456789abcdef";
 
        for (i = 0; (i < slen) && (len < blen); i++)
        {
@@ -147,16 +147,17 @@ int uh_urlencode(char *buf, int blen, const char *src, int slen)
        return (i == slen) ? len : -1;
 }
 
-int uh_b64decode(char *buf, int blen, const unsigned char *src, int slen)
+int uh_b64decode(char *buf, int blen, const void *src, int slen)
 {
+       const unsigned char *str = src;
        unsigned int cout = 0;
        unsigned int cin  = 0;
        int len = 0;
        int i = 0;
 
-       for (i = 0; (i <= slen) && (src[i] != 0); i++)
+       for (i = 0; (i <= slen) && (str[i] != 0); i++)
        {
-               cin = src[i];
+               cin = str[i];
 
                if ((cin >= '0') && (cin <= '9'))
                        cin = cin - '0' + 52;
@@ -216,3 +217,18 @@ char *uh_split_header(char *str)
 
        return val;
 }
+
+bool uh_addr_rfc1918(struct uh_addr *addr)
+{
+       uint32_t a;
+
+       if (addr->family != AF_INET)
+               return false;
+
+       a = htonl(addr->in.s_addr);
+       return ((a >= 0x0A000000) && (a <= 0x0AFFFFFF)) ||
+              ((a >= 0xAC100000) && (a <= 0xAC1FFFFF)) ||
+              ((a >= 0xC0A80000) && (a <= 0xC0A8FFFF));
+
+       return 0;
+}