aboutsummaryrefslogtreecommitdiffstats
path: root/FICS/addgroup.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'FICS/addgroup.cpp')
-rw-r--r--FICS/addgroup.cpp21
1 files changed, 21 insertions, 0 deletions
diff --git a/FICS/addgroup.cpp b/FICS/addgroup.cpp
index 59547d0..52c6639 100644
--- a/FICS/addgroup.cpp
+++ b/FICS/addgroup.cpp
@@ -140,6 +140,27 @@ group_exists(const char *name)
return false;
}
+bool
+is_valid_group_name(const char *name)
+{
+ const char legal_index[] =
+ "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
+ "abcdefghijklmnopqrstuvwxyz"
+ "0123456789_-";
+ const size_t name_min = 2;
+ const size_t name_max = 30;
+
+ if (name == nullptr || strcmp(name, "") == 0)
+ return false;
+ else if (strlen(name) < name_min || strlen(name) > name_max)
+ return false;
+ for (const char *cp = name; *cp != '\0'; cp++) {
+ if (strchr(legal_index, *cp) == nullptr)
+ return false;
+ }
+ return true;
+}
+
int
read_the_group_permissions_file(const char *path)
{