From 2c739a6daeb1373722f2c02d84a4fef684479752 Mon Sep 17 00:00:00 2001 From: Markus Uhlin Date: Sun, 2 Nov 2025 11:18:42 +0100 Subject: Added is_valid_group_name() --- FICS/addgroup.cpp | 21 +++++++++++++++++++++ FICS/addgroup.h | 1 + 2 files changed, 22 insertions(+) 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) { diff --git a/FICS/addgroup.h b/FICS/addgroup.h index e5b1906..3642969 100644 --- a/FICS/addgroup.h +++ b/FICS/addgroup.h @@ -11,6 +11,7 @@ int fics_addgroup(const char *); bool get_group_id(const char *, int *); bool get_next_line_from_file(FILE *, char **); // uses 'new[]' bool group_exists(const char *); +bool is_valid_group_name(const char *); int read_the_group_permissions_file(const char *); __FICS_END_DECLS -- cgit v1.2.3