Handle null c strings correctly.
This commit is contained in:
1 parent
fb34bc2e19
commit
7ed92656fa
3 files changed
+21
-7
No files matched your search
@@ -27,3 +27,5 @@ std::string gen_token(
|
||||
const std::string &priv_key,
|
||||
const std::chrono::time_point<std::chrono::system_clock> &issue_time,
|
||||
const std::chrono::time_point<std::chrono::system_clock> &expr_time);
|
||||
|
||||
std::string toString(const char* c_str);
|
||||
+7
-7
@@ -53,10 +53,10 @@ int mosquitto_plugin_init(
|
||||
std::filesystem::path aclFilePath;
|
||||
for (int index = 0; index < option_count; index++)
|
||||
{
|
||||
const auto key = std::string(options[index].key);
|
||||
const auto key = toString(options[index].key);
|
||||
if (key == "key_file")
|
||||
{
|
||||
std::string key_file_string = std::string(options[index].value);
|
||||
std::string key_file_string = toString(options[index].value);
|
||||
if (key_file_string.empty())
|
||||
{
|
||||
mosquitto_log_printf(MOSQ_LOG_ERR, "key_file not set.");
|
||||
@@ -66,7 +66,7 @@ int mosquitto_plugin_init(
|
||||
}
|
||||
else if (key == "acl_file")
|
||||
{
|
||||
std::string acl_file_string = std::string(options[index].value);
|
||||
std::string acl_file_string = toString(options[index].value);
|
||||
if (acl_file_string.empty())
|
||||
{
|
||||
mosquitto_log_printf(MOSQ_LOG_ERR, "acl_file not set.");
|
||||
@@ -124,11 +124,11 @@ int j7s_auth_basic_auth_callback(int event, void *event_data, void *userdata)
|
||||
|
||||
if (!auth_data->password)
|
||||
{
|
||||
authorizer->add_unknown(std::string(auth_data->username));
|
||||
authorizer->add_unknown(toString(auth_data->username));
|
||||
return MOSQ_ERR_PLUGIN_DEFER;
|
||||
}
|
||||
bool is_authed =
|
||||
authorizer->add(std::string(auth_data->password), std::string(auth_data->username));
|
||||
authorizer->add(toString(auth_data->password), toString(auth_data->username));
|
||||
|
||||
if (is_authed)
|
||||
{
|
||||
@@ -150,7 +150,7 @@ int j7s_acl_check_callback(int event, void *event_data, void *userdata)
|
||||
struct mosquitto_evt_acl_check *acl_data =
|
||||
static_cast<struct mosquitto_evt_acl_check *>(event_data);
|
||||
|
||||
const std::string username = std::string(mosquitto_client_username(acl_data->client));
|
||||
const std::string username = toString(mosquitto_client_username(acl_data->client));
|
||||
|
||||
if (authorizer->is_unknown(username))
|
||||
{
|
||||
@@ -179,7 +179,7 @@ int j7s_disconnect_callback(int event, void *event_data, void *userdata)
|
||||
struct mosquitto_evt_disconnect *disconnect_data =
|
||||
static_cast<struct mosquitto_evt_disconnect *>(event_data);
|
||||
|
||||
const std::string username = std::string(mosquitto_client_username(disconnect_data->client));
|
||||
const std::string username = toString(mosquitto_client_username(disconnect_data->client));
|
||||
|
||||
authorizer->logout(username);
|
||||
return MOSQ_ERR_SUCCESS;
|
||||
|
||||
@@ -119,3 +119,15 @@ std::string gen_token(
|
||||
|
||||
return token;
|
||||
}
|
||||
|
||||
std::string toString(const char* c_str)
|
||||
{
|
||||
if(c_str)
|
||||
{
|
||||
return std::string(c_str);
|
||||
}
|
||||
else
|
||||
{
|
||||
return std::string();
|
||||
}
|
||||
}
|
||||
Reference in new issue
Block a user