Веб-сайт самохостера Lotigara

summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorIvan Davydov <lotigara@lotigara.ru>2025-06-17 17:03:48 +0300
committerIvan Davydov <lotigara@lotigara.ru>2025-06-17 17:03:48 +0300
commit28c13a3e38e8b350ffadb1ae7c2687aafe7ac6c0 (patch)
tree32ad7fc29bdfdac00442ee492286c29ea95a2cd0
parent9d945cd7e55c7d4f432dbe8ea758178fadd44b04 (diff)
Re-worked handling of too long socket paths
-rwxr-xr-xacccre-serverbin0 -> 7944 bytes
-rw-r--r--acccre-server.c10
-rw-r--r--acccre-server.h3
-rw-r--r--acccre-server.obin0 -> 5312 bytes
4 files changed, 8 insertions, 5 deletions
diff --git a/acccre-server b/acccre-server
new file mode 100755
index 0000000..9e524ad
--- /dev/null
+++ b/acccre-server
Binary files differ
diff --git a/acccre-server.c b/acccre-server.c
index 310317a..a3c1896 100644
--- a/acccre-server.c
+++ b/acccre-server.c
@@ -85,13 +85,13 @@ int main (int argc, char *argv[]) {
DEFAULT_PATH /* sun_path */
};
if (argc > 1) {
- /* Taken from https://pubs.opengroup.org/onlinepubs/9799919799/ */
- if (sizeof(argv[1]) >= sizeof(((struct sockaddr_un *)0)->sun_path)) {
- strcpy(sun.sun_path, argv[1]);
+ size_t sun_path_length = strlen(argv[1]);
+ if (sun_path_length >= MAX_SUN_PATH) {
+ fprintf(stderr, "Size of path to the socket (%zu) is greater than, or equal to the maximum size (%zu).\n", sun_path_length, MAX_SUN_PATH);
+ exit(EXIT_FAILURE);
}
else {
- fprintf(stderr, "Path to the socket is longer than %zu.\n", sizeof(((struct sockaddr_un *)0)->sun_path));
- exit(EXIT_FAILURE);
+ strcpy(sun.sun_path, argv[1]);
}
}
diff --git a/acccre-server.h b/acccre-server.h
index 7ffd84b..d030c6b 100644
--- a/acccre-server.h
+++ b/acccre-server.h
@@ -22,4 +22,7 @@ const int sigs[] = {
#define BUFFER_SIZE 100
#define DEFAULT_PATH "./acccre.sock"
+/* Taken from https://pubs.opengroup.org/onlinepubs/9799919799/ */
+#define MAX_SUN_PATH sizeof(((struct sockaddr_un *)0)->sun_path)
typedef uint16_t acccre_size_t;
+
diff --git a/acccre-server.o b/acccre-server.o
new file mode 100644
index 0000000..961cce2
--- /dev/null
+++ b/acccre-server.o
Binary files differ