[PATCH 1/4] resolver: support IPv4 address literals
Ian Jackson
ijackson at chiark.greenend.org.uk
Tue Jul 5 12:10:09 BST 2011
Signed-off-by: Ian Jackson <ijackson at chiark.greenend.org.uk>
---
resolver.c | 16 ++++++++++++++++
1 files changed, 16 insertions(+), 0 deletions(-)
diff --git a/resolver.c b/resolver.c
index f60b112..f4eeee6 100644
--- a/resolver.c
+++ b/resolver.c
@@ -6,6 +6,8 @@
#error secnet requires ADNS version 1.0 or above
#endif
#include <adns.h>
+#include <arpa/inet.h>
+#include <string.h>
struct adns {
@@ -28,6 +30,20 @@ static bool_t resolve_request(void *sst, cstring_t name,
struct adns *st=sst;
struct query *q;
int rv;
+ const int maxlitlen=50;
+
+ int l=strlen(name);
+ if (name[0]=='[' && l<maxlitlen && l>2 && name[l-1]==']') {
+ char trimmed[maxlitlen+1];
+ memcpy(trimmed,name+1,l-2);
+ trimmed[l-2]=0;
+ struct in_addr ia;
+ if (inet_aton(trimmed,&ia))
+ cb(cst,&ia);
+ else
+ cb(cst,0);
+ return True;
+ }
q=safe_malloc(sizeof *q,"resolve_request");
q->cst=cst;
--
1.5.6.5
More information about the sgo-software-discuss
mailing list