]> git.ipfire.org Git - thirdparty/bind9.git/commitdiff
fail if SIT data is too large
authorMark Andrews <marka@isc.org>
Wed, 11 Jun 2014 21:57:19 +0000 (07:57 +1000)
committerMark Andrews <marka@isc.org>
Wed, 11 Jun 2014 21:57:51 +0000 (07:57 +1000)
(cherry picked from commit b836de821a0f0bd06957868fd2aac5987cc7fd60)

bin/dig/dig.c

index dc26c098b87c9e2254dd87e3bbbb1d28af0642b8..52bbec3e9a76915e8372fce2a49de134f284e5fc 100644 (file)
@@ -758,7 +758,7 @@ plus_option(char *option, isc_boolean_t is_batchfile,
        char *cmd, *value, *ptr;
        isc_uint32_t num;
        isc_boolean_t state = ISC_TRUE;
-#ifdef DIG_SIGCHASE
+#if defined(DIG_SIGCHASE) || defined(ISC_PLATFORM_USESIT)
        size_t n;
 #endif
 
@@ -1122,8 +1122,10 @@ plus_option(char *option, isc_boolean_t is_batchfile,
                                        lookup->edns = 0;
                                lookup->sit = state;
                                if (value != NULL) {
-                                       strncpy(sitvalue, value,
-                                               sizeof(sitvalue));
+                                       n = strlcpy(sitvalue, value,
+                                                   sizeof(sitvalue));
+                                       if (n >= sizeof(sitvalue))
+                                               fatal("SIT data too large");
                                        lookup->sitvalue = sitvalue;
                                } else
                                        lookup->sitvalue = NULL;