|
@@ -1207,8 +1207,20 @@ get_user_homedir(const char *username)
|
|
|
* but works on Windows and Solaris.)
|
|
|
*/
|
|
|
int
|
|
|
-tor_inet_aton(const char *c, struct in_addr* addr)
|
|
|
+tor_inet_aton(const char *str, struct in_addr* addr)
|
|
|
{
|
|
|
+ int a,b,c,d;
|
|
|
+ char more;
|
|
|
+ if (sscanf(str, "%d.%d.%d.%d%c", &a,&b,&c,&d,&more) != 4)
|
|
|
+ return 0;
|
|
|
+ if (a < 0 || a > 255) return 0;
|
|
|
+ if (b < 0 || b > 255) return 0;
|
|
|
+ if (c < 0 || c > 255) return 0;
|
|
|
+ if (d < 0 || d > 255) return 0;
|
|
|
+ addr->s_addr = htonl((a<<24) | (b<<16) | (c<<8) | d);
|
|
|
+ return 1;
|
|
|
+
|
|
|
+#if 0
|
|
|
#ifdef HAVE_INET_ATON
|
|
|
return inet_aton(c, addr);
|
|
|
#else
|
|
@@ -1225,6 +1237,7 @@ tor_inet_aton(const char *c, struct in_addr* addr)
|
|
|
addr->s_addr = r;
|
|
|
return 1;
|
|
|
#endif
|
|
|
+#endif
|
|
|
}
|
|
|
|
|
|
/** Given <b>af</b>==AF_INET and <b>src</b> a struct in_addr, or
|