[master] null terminate strings for coverity

This commit is contained in:
Evan Hunt
2014-06-16 15:30:11 -07:00
parent e3468c9052
commit 56510cd031
6 changed files with 39 additions and 4 deletions

View 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;

View 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);

View 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;
/*