summaryrefslogtreecommitdiff
path: root/src/clients/s6dns_namescanner.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/clients/s6dns_namescanner.c')
-rw-r--r--src/clients/s6dns_namescanner.c8
1 files changed, 6 insertions, 2 deletions
diff --git a/src/clients/s6dns_namescanner.c b/src/clients/s6dns_namescanner.c
index 136b1e8..c2110d2 100644
--- a/src/clients/s6dns_namescanner.c
+++ b/src/clients/s6dns_namescanner.c
@@ -1,12 +1,16 @@
/* ISC license. */
+#include <sys/types.h>
+#include <limits.h>
+#include <errno.h>
#include <s6-dns/s6dns-domain.h>
#include "s6dns-generic-filter.h"
-unsigned int s6dns_namescanner (s6dns_domain_t *d, char const *s)
+size_t s6dns_namescanner (s6dns_domain_t *d, char const *s)
{
- register unsigned int pos = 0 ;
+ register size_t pos = 0 ;
while (s[pos] && (s[pos] != ' ') && (s[pos] != '\t') && (s[pos] != '\r') && (s[pos] != '\n')) pos++ ;
+ if (pos > UINT_MAX) return (errno = ENAMETOOLONG, 0) ;
if (!s6dns_domain_fromstring_noqualify_encode(d, s, pos)) return 0 ;
return pos ;
}