]> git.ipfire.org Git - thirdparty/bind9.git/commitdiff
[v9_10] null terminate strings for coverity
authorEvan Hunt <each@isc.org>
Mon, 16 Jun 2014 22:30:29 +0000 (15:30 -0700)
committerEvan Hunt <each@isc.org>
Mon, 16 Jun 2014 22:30:29 +0000 (15:30 -0700)
bin/dig/dig.c
bin/tests/system/dlzexternal/driver.c
contrib/dlz/example/dlz_example.c
lib/dns/gen.c
lib/dns/rcode.c
lib/lwres/getaddrinfo.c

index 52bbec3e9a76915e8372fce2a49de134f284e5fc..30470457497a1ad941c13247bdfa67bc4423c28f 100644 (file)
@@ -1124,6 +1124,8 @@ plus_option(char *option, isc_boolean_t is_batchfile,
                                if (value != NULL) {
                                        n = strlcpy(sitvalue, value,
                                                    sizeof(sitvalue));
+                                       sitvalue[sizeof(sitvalue) - 1] = '\0';
+
                                        if (n >= sizeof(sitvalue))
                                                fatal("SIT data too large");
                                        lookup->sitvalue = sitvalue;
@@ -1545,6 +1547,7 @@ dash_option(char *option, char *next, dig_lookup_t **lookup,
                                ip6_int, ISC_FALSE) == ISC_R_SUCCESS) {
                        strncpy((*lookup)->textname, textname,
                                sizeof((*lookup)->textname));
+                       (*lookup)->textname[sizeof((*lookup)->textname)-1] = 0;
                        debug("looking up %s", (*lookup)->textname);
                        (*lookup)->trace_root = ISC_TF((*lookup)->trace  ||
                                                (*lookup)->ns_search_only);
index 4828b91481efe3201f67ba8152f771f5fa6fc12b..c74b480f35da4c2ed62950c735269522608ab78d 100644 (file)
@@ -133,8 +133,14 @@ add_name(struct dlz_example_data *state, struct record *list,
                return (ISC_R_NOSPACE);
 
        strncpy(list[i].name, name, sizeof(list[i].name));
+       list[i].name[sizeof(list[i].name) - 1] = '\0';
+
        strncpy(list[i].type, type, sizeof(list[i].type));
+       list[i].type[sizeof(list[i].type) - 1] = '\0';
+
        strncpy(list[i].data, data, sizeof(list[i].data));
+       list[i].data[sizeof(list[i].data) - 1] = '\0';
+
        list[i].ttl = ttl;
 
        return (ISC_R_SUCCESS);
index 97f188ebf4498b9d44d8f387c85a5a5a4ea8d4fb..004d53435238dfc45ba6dd02404a9b00d2c255cf 100644 (file)
@@ -121,8 +121,14 @@ add_name(struct dlz_example_data *state, struct record *list,
                return (ISC_R_NOSPACE);
 
        strncpy(list[i].name, name, sizeof(list[i].name));
+       list[i].name[sizeof(list[i].name) - 1] = '\0';
+
        strncpy(list[i].type, type, sizeof(list[i].type));
+       list[i].type[sizeof(list[i].type) - 1] = '\0';
+
        strncpy(list[i].data, data, sizeof(list[i].data));
+       list[i].data[sizeof(list[i].data) - 1] = '\0';
+
        list[i].ttl = ttl;
 
        return (ISC_R_SUCCESS);
index b934c9990fb3f55674a37b6d683518def256401c..4fea096c35a30099a57124f860477ca41128c783 100644 (file)
@@ -331,15 +331,20 @@ insert_into_typenames(int type, const char *typename, const char *attr) {
                exit(1);
        }
 
+       /* XXXMUKS: This is redundant due to the INSIST above. */
        if (strlen(typename) > sizeof(ttn->typename) - 1) {
                fprintf(stderr, "Error:  type name %s is too long\n",
                        typename);
                exit(1);
        }
+
        strncpy(ttn->typename, typename, sizeof(ttn->typename));
-       ttn->type = type;
+       ttn->typename[sizeof(ttn->typename) - 1] = '\0';
 
        strncpy(ttn->macroname, ttn->typename, sizeof(ttn->macroname));
+       ttn->macroname[sizeof(ttn->macroname) - 1] = '\0';
+
+       ttn->type = type;
        c = strlen(ttn->macroname);
        while (c > 0) {
                if (ttn->macroname[c - 1] == '-')
@@ -365,7 +370,10 @@ insert_into_typenames(int type, const char *typename, const char *attr) {
                        attr, typename);
                exit(1);
        }
+
        strncpy(ttn->attr, attr, sizeof(ttn->attr));
+       ttn->attr[sizeof(ttn->attr) - 1] = '\0';
+
        ttn->sorted = 0;
        if (maxtype < type)
                maxtype = type;
@@ -394,11 +402,17 @@ add(int rdclass, const char *classname, int type, const char *typename,
        newtt->next = NULL;
        newtt->rdclass = rdclass;
        newtt->type = type;
+
        strncpy(newtt->classname, classname, sizeof(newtt->classname));
+       newtt->classname[sizeof(newtt->classname) - 1] = '\0';
+
        strncpy(newtt->typename, typename, sizeof(newtt->typename));
+       newtt->typename[sizeof(newtt->typename) - 1] = '\0';
+
        if (strncmp(dirname, "./", 2) == 0)
                dirname += 2;
        strncpy(newtt->dirname, dirname, sizeof(newtt->dirname));
+       newtt->dirname[sizeof(newtt->dirname) - 1] = '\0';
 
        tt = types;
        oldtt = NULL;
index 5e17a44ed63362d470b3aed68aabf053bad6e062..0b74744d966571689e7c6022369d2f362fae37c8 100644 (file)
@@ -224,11 +224,13 @@ maybe_numeric(unsigned int *valuep, isc_textregion_t *source,
                return (ISC_R_BADNUMBER);
 
        /*
-        * We have a potential number.  Try to parse it with
-        * isc_parse_uint32().  isc_parse_uint32() requires
+        * We have a potential number.  Try to parse it with
+        * isc_parse_uint32().  isc_parse_uint32() requires
         * null termination, so we must make a copy.
         */
-       strncpy(buffer, source->base, NUMBERSIZE);
+       strncpy(buffer, source->base, sizeof(buffer));
+       buffer[sizeof(buffer) - 1] = '\0';
+
        INSIST(buffer[source->length] == '\0');
 
        result = isc_parse_uint32(&n, buffer, 10);
index 1ebafd85a6788996848d5b4bc0bb2748c9996d78..43211fd07c2bc8e60e462b20ca60d9f06e7419e1 100644 (file)
@@ -706,12 +706,16 @@ get_local(const char *name, int socktype, struct addrinfo **res) {
        if (socktype == 0)
                return (EAI_SOCKTYPE);
 
+       if (strlen(name) >= sizeof(slocal->sun_path))
+               return (EAI_OVERFLOW);
+
        ai = ai_alloc(AF_LOCAL, sizeof(*slocal));
        if (ai == NULL)
                return (EAI_MEMORY);
 
        slocal = SLOCAL(ai->ai_addr);
        strncpy(slocal->sun_path, name, sizeof(slocal->sun_path));
+       slocal->sun_path[sizeof(slocal->sun_path) - 1] = '\0';
 
        ai->ai_socktype = socktype;
        /*