summaryrefslogtreecommitdiff
path: root/src/util.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/util.c')
-rw-r--r--src/util.c11
1 files changed, 9 insertions, 2 deletions
diff --git a/src/util.c b/src/util.c
index b188bce..175b7bb 100644
--- a/src/util.c
+++ b/src/util.c
@@ -190,12 +190,19 @@ char* canonicalise(char* in, int* nomem) {
return ret;
}
-unsigned char* do_rfc1035_name(unsigned char* p, char* sval) {
+unsigned char* do_rfc1035_name(unsigned char* p, char* sval, char *limit) {
int j;
while (sval && *sval) {
+ if (limit && p + 1 > (unsigned char*)limit)
+ return p;
+
unsigned char* cp = p++;
- for (j = 0; *sval && (*sval != '.'); sval++, j++) *p++ = *sval;
+ for (j = 0; *sval && (*sval != '.'); sval++, j++) {
+ if (limit && p + 1 > (unsigned char*)limit)
+ return p;
+ *p++ = *sval;
+ }
*cp = j;
if (*sval) sval++;
}