Do not strdup() zero length strings in identification_create_from_string()

This commit is contained in:
Martin Willi
2010-08-31 15:34:45 +02:00
parent 64d24679df
commit 4332b5af89
+20 -4
View File
@@ -930,7 +930,11 @@ identification_t *identification_create_from_string(char *string)
else
{ /* not IPv4, mostly FQDN */
this = identification_create(ID_FQDN);
this->encoded = chunk_create(strdup(string), strlen(string));
this->encoded.len = strlen(string);
if (this->encoded.len)
{
this->encoded.ptr = strdup(string);
}
}
return &this->public;
}
@@ -947,7 +951,11 @@ identification_t *identification_create_from_string(char *string)
else
{ /* not IPv4/6 fallback to KEY_ID */
this = identification_create(ID_KEY_ID);
this->encoded = chunk_create(strdup(string), strlen(string));
this->encoded.len = strlen(string);
if (this->encoded.len)
{
this->encoded.ptr = strdup(string);
}
}
return &this->public;
}
@@ -969,14 +977,22 @@ identification_t *identification_create_from_string(char *string)
{
this = identification_create(ID_FQDN);
string += 1;
this->encoded = chunk_create(strdup(string), strlen(string));
this->encoded.len = strlen(string);
if (this->encoded.len)
{
this->encoded.ptr = strdup(string);
}
return &this->public;
}
}
else
{
this = identification_create(ID_RFC822_ADDR);
this->encoded = chunk_create(strdup(string), strlen(string));
this->encoded.len = strlen(string);
if (this->encoded.len)
{
this->encoded.ptr = strdup(string);
}
return &this->public;
}
}