diff options
-rw-r--r-- | src/CMakeLists.txt | 2 | ||||
-rw-r--r-- | src/cyn.c | 27 | ||||
-rw-r--r-- | src/cynagora.c | 27 | ||||
-rw-r--r-- | src/names.c | 52 | ||||
-rw-r--r-- | src/names.h | 33 |
5 files changed, 89 insertions, 52 deletions
diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index cf98bbe..f9034de 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -25,6 +25,7 @@ set(LIBCORE_SOURCES fbuf.c filedb.c memdb.c + names.c pollitem.c queue.c ) @@ -45,6 +46,7 @@ set(LIBCLI_SOURCES cynagora.c expire.c idgen.c + names.c prot.c socket.c ) @@ -27,12 +27,12 @@ #include <stdbool.h> #include <string.h> #include <errno.h> -#include <ctype.h> #include "data.h" #include "db.h" #include "queue.h" #include "cyn.h" +#include "names.h" #if !CYN_SEARCH_DEEP_MAX # define CYN_SEARCH_DEEP_MAX 10 @@ -557,31 +557,6 @@ cyn_query_reply( free(query); } -/** - * Check the name and compute its length. Returns 0 in case of invalid name - * @param name the name to check - * @return the length of the name or zero if invalid - */ -static -size_t -agent_check_name( - const char *name -) { - char c; - size_t length = 0; - if (name) { - while ((c = name[length])) { - if (length > UINT8_MAX - || (!isalnum(c) && !strchr("@_-$", c))) { - length = 0; - break; - } - length++; - } - } - return length; -} - /* see cyn.h */ int cyn_agent_add( diff --git a/src/cynagora.c b/src/cynagora.c index a95789e..2e35876 100644 --- a/src/cynagora.c +++ b/src/cynagora.c @@ -31,7 +31,6 @@ #include <errno.h> #include <fcntl.h> #include <poll.h> -#include <ctype.h> #include <sys/types.h> #include <sys/socket.h> #include <sys/stat.h> @@ -44,6 +43,7 @@ #include "socket.h" #include "expire.h" #include "idgen.h" +#include "names.h" #define MIN_CACHE_SIZE 400 #define CACHESIZE(x) ((x) >= MIN_CACHE_SIZE ? (x) : (x) ? MIN_CACHE_SIZE : 0) @@ -1232,31 +1232,6 @@ cynagora_drop( /******************************************************************************/ /** - * Check the name and compute its length. Returns 0 in case of invalid name - * @param name the name to check - * @return the length of the name or zero if invalid - */ -static -size_t -agent_check_name( - const char *name -) { - char c; - size_t length = 0; - if (name) { - while ((c = name[length])) { - if (length > UINT8_MAX - || (!isalnum(c) && !strchr("@_-$", c))) { - length = 0; - break; - } - length++; - } - } - return length; -} - -/** * Search the recorded agent of name * * @param cynagora the client cynagora diff --git a/src/names.c b/src/names.c new file mode 100644 index 0000000..f9a7817 --- /dev/null +++ b/src/names.c @@ -0,0 +1,52 @@ +/* + * Copyright (C) 2018 "IoT.bzh" + * Author José Bollo <jose.bollo@iot.bzh> + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +/******************************************************************************/ +/******************************************************************************/ +/* IMPLEMENTATION OF NAMES */ +/******************************************************************************/ +/******************************************************************************/ + +#include <ctype.h> +#include <string.h> +#include <stdint.h> + +#include "names.h" + +/** + * Check the name and compute its length. Returns 0 in case of invalid name + * @param name the name to check + * @return the length of the name or zero if invalid + */ +size_t +agent_check_name( + const char *name +) { + char c; + size_t length = 0; + if (name) { + while ((c = name[length])) { + if (length > UINT8_MAX + || (!isalnum(c) && !strchr("@_-$", c))) { + length = 0; + break; + } + length++; + } + } + return length; +} + diff --git a/src/names.h b/src/names.h new file mode 100644 index 0000000..30f4a99 --- /dev/null +++ b/src/names.h @@ -0,0 +1,33 @@ +/* + * Copyright (C) 2018 "IoT.bzh" + * Author José Bollo <jose.bollo@iot.bzh> + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +#pragma once +/******************************************************************************/ +/******************************************************************************/ +/* IMPLEMENTATION OF NAMES */ +/******************************************************************************/ +/******************************************************************************/ + +/** + * Check the name and compute its length. Returns 0 in case of invalid name + * @param name the name to check + * @return the length of the name or zero if invalid + */ +extern +size_t +agent_check_name( + const char *name +); |