[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