[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Lost] [Patch] file: Fixes beim Umschreiben des Pfads



! file: Pfade dürfen an der Nahtstelle keinen doppelten / enthalten
* file: Pfad nullterminieren

Letzteres lasse ich im Moment als Workaround und nicht als Bugfix laufen. Ich schätze, wenn man sich das noch genauer anschaut, wird sich da ein Buffer-Overflow-Problem in init und/oder LostIO finden.
Index: src/modules/file/server.c
===================================================================
--- src/modules/file/server.c	(Revision 718)
+++ src/modules/file/server.c	(Arbeitskopie)
@@ -80,11 +80,17 @@
     for (i = 0; (item = list_get_element_at(mounts, i)); i++) {
         if (!strncmp(item->src, path, MIN(item->src_len, path_len))) {
             size_t dst_len = strlen(item->dst);
-            char new_request[1 + path_len + dst_len];
+            char new_request[1 + path_len + dst_len + 1];
             char* new_path = &new_request[1];
             strncpy(new_path, item->dst, dst_len);
             strncpy(new_path + dst_len, path + item->src_len, path_len);
+            new_path[path_len + dst_len] = '\0';
 
+            if ((item->dst[dst_len - 1] == '/') && (path[item->src_len] == '/')) {
+                memmove(new_path + dst_len, new_path + dst_len + 1, 
+                    path_len);
+            }
+
 #ifdef DEBUG
             printf("Zugriff auf file:%s => %s\n", path, new_path);
 #endif