value = p_strdup_printf(conn->conn.pool,
"doveadm:%s", set->doveadm_password);
base64_encode(value, strlen(value), b64_value);
- if (creds->data != NULL && strcmp(creds->data, str_c(b64_value)) == 0)
+
+ if (creds->data != NULL &&
+ str_equals_timing_almost_safe(value, creds->data))
return TRUE;
e_error(conn->conn.event,
b64_value = str_new(conn->conn.pool, 32);
base64_encode(set->doveadm_api_key,
strlen(set->doveadm_api_key), b64_value);
- if (creds->data != NULL && strcmp(creds->data, str_c(b64_value)) == 0)
+ if (creds->data != NULL &&
+ str_equals_timing_almost_safe(creds->data, str_c(b64_value)))
return TRUE;
e_error(conn->conn.event,
return -1;
}
pass = t_strndup(data + 9, size - 9);
- if (strlen(pass) != strlen(set->doveadm_password) ||
- !mem_equals_timing_safe(pass, set->doveadm_password,
- strlen(pass))) {
+ if (!str_equals_timing_almost_safe(pass, set->doveadm_password)) {
e_error(conn->conn.event,
"doveadm client authenticated with wrong password");
return -1;