enum: Return boolean result for enum_from_name() lookup
Handling the result for enum_from_name() is difficult, as checking for negative return values requires a cast if the enum type is unsigned. The new signature clearly differentiates lookup result from lookup value. Further, this actually allows to convert real -1 enum values, which could not be distinguished from "not-found" and the -1 return value. This also fixes several clang warnings where enums are unsigned.
This commit is contained in:
@@ -202,6 +202,7 @@ METHOD(coupling_validator_t, destroy, void,
|
||||
coupling_validator_t *coupling_validator_create()
|
||||
{
|
||||
private_coupling_validator_t *this;
|
||||
hash_algorithm_t alg;
|
||||
char *path, *hash;
|
||||
|
||||
INIT(this,
|
||||
@@ -219,8 +220,13 @@ coupling_validator_t *coupling_validator_create()
|
||||
|
||||
hash = lib->settings->get_str(lib->settings,
|
||||
"%s.plugins.coupling.hash", "sha1", lib->ns);
|
||||
this->hasher = lib->crypto->create_hasher(lib->crypto,
|
||||
enum_from_name(hash_algorithm_short_names, hash));
|
||||
if (!enum_from_name(hash_algorithm_short_names, hash, &alg))
|
||||
{
|
||||
DBG1(DBG_CFG, "unknown coupling hash algorithm: %s", hash);
|
||||
destroy(this);
|
||||
return NULL;
|
||||
}
|
||||
this->hasher = lib->crypto->create_hasher(lib->crypto, alg);
|
||||
if (!this->hasher)
|
||||
{
|
||||
DBG1(DBG_CFG, "unsupported coupling hash algorithm: %s", hash);
|
||||
|
||||
Reference in New Issue
Block a user