hermes

HTTP GET/HEAD-only web server for static content.
git clone https://git.francescosaccone.com/hermes
Log | Files | Refs | README | LICENSE

commit 6cf4d366a081ab755ea4b569a25e8ce5166534bf
parent 2e9e250b4836022efa84529b654ec751bf016e66
Author: Francesco Saccone <francesco@francescosaccone.com>
Date:   Mon, 31 Mar 2025 13:36:47 +0200

feat: define user and group and check if they exist

Signed-off-by: Francesco Saccone <francesco@francescosaccone.com>

Diffstat:
Mhermes.c | 17+++++++++++++++++
1 file changed, 17 insertions(+), 0 deletions(-)

diff --git a/hermes.c b/hermes.c @@ -1,3 +1,5 @@ +#include <grp.h> +#include <pwd.h> #include <stdio.h> #include <stdlib.h> #include <string.h> @@ -22,6 +24,8 @@ main(int argc, char *argv[]) { directory_index[DIRECTORY_INDEX_MAX_LENGTH] = "index.html"; int i, port = 80, server_socket_fd; + struct passwd *user; + struct group *group; for (i = 1; i < argc; i++) { char *argument = argv[i]; @@ -92,6 +96,19 @@ main(int argc, char *argv[]) { return 1; }; + user = getpwnam(user_name); + group = getgrnam(group_name); + + if (user == NULL) { + printf("error: user %s does not exist.\n", user_name); + return 1; + } + + if (group == NULL) { + printf("error: group %s does not exist.\n", group_name); + return 1; + } + server_socket_fd = create_socket(port); while (1) {