#include <stdint.h>
#include <util/ConfigSource.h>
+/*
+ * API does not accept string argument longer than max length below
+ */
+#define MAX_BACKEND_NAME_LENGTH 32
+#define MAX_OP_NAME_LENGTH 64
+
+// Is null-terminating in length ?
+static bool null_terminating(const char *str, uint32_t length)
+{
+ for (uint32_t i = 0; i < length; i++)
+ {
+ if (*(str + i) == '\0')
+ {
+ return true;
+ }
+ }
+ return false;
+}
+
nnfw_session::nnfw_session()
: _graph{nullptr}, _execution{nullptr},
_kernel_registry{std::make_shared<neurun::backend::custom::KernelRegistry>()},
}
}
-NNFW_STATUS nnfw_session::set_default_backend(std::string backend)
+NNFW_STATUS nnfw_session::set_default_backend(const char *backend)
{
try
{
+ if (!backend || null_terminating(backend, MAX_BACKEND_NAME_LENGTH) == false)
+ {
+ return NNFW_STATUS_ERROR;
+ }
+
_source->set("OP_BACKEND_ALLOPS", backend);
}
catch (...)
return NNFW_STATUS_NO_ERROR;
}
-NNFW_STATUS nnfw_session::set_op_backend(std::string op, std::string backend)
+NNFW_STATUS nnfw_session::set_op_backend(const char *op, const char *backend)
{
-
try
{
+ if (!op || !null_terminating(op, MAX_OP_NAME_LENGTH) || !backend ||
+ !null_terminating(backend, MAX_BACKEND_NAME_LENGTH))
+ {
+ return NNFW_STATUS_ERROR;
+ }
+
auto key = get_op_backend_string(op);
if (key.empty())
NNFW_STATUS register_custom_operation(const std::string &id, nnfw_custom_eval eval_func);
- NNFW_STATUS set_default_backend(std::string backend);
- NNFW_STATUS set_op_backend(std::string op, std::string backend);
+ NNFW_STATUS set_default_backend(const char *backend);
+ NNFW_STATUS set_op_backend(const char *op, const char *backend);
private:
std::shared_ptr<neurun::graph::Graph> _graph;