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 else
{ /* not IPv4, mostly FQDN */ { /* not IPv4, mostly FQDN */
this = identification_create(ID_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; return &this->public;
} }
@@ -947,7 +951,11 @@ identification_t *identification_create_from_string(char *string)
else else
{ /* not IPv4/6 fallback to KEY_ID */ { /* not IPv4/6 fallback to KEY_ID */
this = identification_create(ID_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; return &this->public;
} }
@@ -969,14 +977,22 @@ identification_t *identification_create_from_string(char *string)
{ {
this = identification_create(ID_FQDN); this = identification_create(ID_FQDN);
string += 1; 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; return &this->public;
} }
} }
else else
{ {
this = identification_create(ID_RFC822_ADDR); 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; return &this->public;
} }
} }