diff options
author | José Bollo <jose.bollo@iot.bzh> | 2018-01-31 14:52:08 +0100 |
---|---|---|
committer | José Bollo <jose.bollo@iot.bzh> | 2018-01-31 14:57:21 +0100 |
commit | 3535d4cb73628c720da1bf74627ded2aec6f2ca1 (patch) | |
tree | 2d73036739d0bbc9877131548b156640c9676fb5 | |
parent | 379b11154f301a30e79154c0af1ef1f257149efa (diff) |
afb-api: Enforce api names to be hookable
Change-Id: Ic1d5cb208c636d3261e1a96c4a81b488cb84a60e
Signed-off-by: José Bollo <jose.bollo@iot.bzh>
-rw-r--r-- | src/afb-api-dbus.c | 2 | ||||
-rw-r--r-- | src/afb-api-so-v1.c | 2 | ||||
-rw-r--r-- | src/afb-api-so-v2.c | 2 | ||||
-rw-r--r-- | src/afb-api-ws.c | 2 | ||||
-rw-r--r-- | src/afb-api.c | 4 | ||||
-rw-r--r-- | src/afb-api.h | 2 | ||||
-rw-r--r-- | src/afb-export.c | 2 |
7 files changed, 8 insertions, 8 deletions
diff --git a/src/afb-api-dbus.c b/src/afb-api-dbus.c index c66426e9..ad640fb2 100644 --- a/src/afb-api-dbus.c +++ b/src/afb-api-dbus.c @@ -113,7 +113,7 @@ static struct api_dbus *make_api_dbus_3(int system, const char *path, size_t pat goto error2; } api->api++; - if (!afb_api_is_valid_name(api->api)) { + if (!afb_api_is_valid_name(api->api, 1)) { errno = EINVAL; goto error2; } diff --git a/src/afb-api-so-v1.c b/src/afb-api-so-v1.c index 9a9e47a4..c77ab724 100644 --- a/src/afb-api-so-v1.c +++ b/src/afb-api-so-v1.c @@ -239,7 +239,7 @@ int afb_api_so_v1_add(const char *path, void *handle, struct afb_apiset *apiset) ERROR("binding [%s] bad prefix...", path); goto error; } - if (!afb_api_is_valid_name(desc->binding->v1.prefix)) { + if (!afb_api_is_valid_name(desc->binding->v1.prefix, 1)) { ERROR("binding [%s] invalid prefix...", path); goto error; } diff --git a/src/afb-api-so-v2.c b/src/afb-api-so-v2.c index ba53223f..5954eb11 100644 --- a/src/afb-api-so-v2.c +++ b/src/afb-api-so-v2.c @@ -230,7 +230,7 @@ int afb_api_so_v2_add(const char *path, void *handle, struct afb_apiset *apiset) ERROR("binding [%s] bad api name...", path); goto error; } - if (!afb_api_is_valid_name(binding->api)) { + if (!afb_api_is_valid_name(binding->api, 1)) { ERROR("binding [%s] invalid api name...", path); goto error; } diff --git a/src/afb-api-ws.c b/src/afb-api-ws.c index 1a463587..0e4d1d05 100644 --- a/src/afb-api-ws.c +++ b/src/afb-api-ws.c @@ -73,7 +73,7 @@ static struct api_ws *api_ws_make(const char *path) while (length && path[length - 1] != '/' && path[length - 1] != ':') length = length - 1; api->api = &api->path[length]; - if (api->api == NULL || !afb_api_is_valid_name(api->api)) { + if (api->api == NULL || !afb_api_is_valid_name(api->api, 1)) { errno = EINVAL; goto error2; } diff --git a/src/afb-api.c b/src/afb-api.c index 38ec4f25..7c4598d2 100644 --- a/src/afb-api.c +++ b/src/afb-api.c @@ -29,7 +29,7 @@ * Checks wether 'name' is a valid API name. * @return 1 if valid, 0 otherwise */ -int afb_api_is_valid_name(const char *name) +int afb_api_is_valid_name(const char *name, int hookable) { unsigned char c; @@ -60,6 +60,6 @@ int afb_api_is_valid_name(const char *name) } c = (unsigned char)*++name; } while(c != 0); - return 1; + return !hookable || afb_api_is_hookable(name); } diff --git a/src/afb-api.h b/src/afb-api.h index a9de8434..ff1bc108 100644 --- a/src/afb-api.h +++ b/src/afb-api.h @@ -38,7 +38,7 @@ struct afb_api const void *group; }; -extern int afb_api_is_valid_name(const char *name); +extern int afb_api_is_valid_name(const char *name, int hookable); #define AFB_API_UNHOOKABLE_PREFIX_CHAR '$' #define AFB_API_UNHOOKABLE_PREFIX_STRING "$" diff --git a/src/afb-export.c b/src/afb-export.c index 304395ae..98964bf9 100644 --- a/src/afb-export.c +++ b/src/afb-export.c @@ -241,7 +241,7 @@ static int rename_api_cb(void *closure, const char *name) errno = EINVAL; return -1; } - if (!afb_api_is_valid_name(name)) { + if (!afb_api_is_valid_name(name, 1)) { ERROR("[API %s] Can't rename to %s: bad API name", export->apiname, name); errno = EINVAL; return -1; |