Обнаружил в самбе небольшую ошибку. Версия - samba-3.0.2a-alt1.M22 (сборка для Мастера) Проявляется при активизации мусорной корзины с keeptree = yes: [Disk_K] comment = Disk for all path = /home/samba/k public = yes writable = yes create mask = 0666 directory mask = 777 vfs objects = recycle recycle: keeptree = yes recycle: maxsize = 200000000 recycle: exclude = *.avi, *.mp3, *.jpg, *.gif При удалении каталогов на расшаренном ресурсе в логах появляются ошибки (впрочем на работе это не сказывается): recycle: creating new dir .recycle/22 [2004/03/10 10:51:56, 0] lib/util_str.c:safe_strcat_fn(629) ERROR: string overflow by 1 in safe_strcat [/] Расследование показало, что переполнение происходит при последнем прохождении цикла for в функции recycle_create_dir при вызове safe_strcat(new_dir, "/", len); а len определен без учета этого лишнего "/" Патчик для исправления: diff -urN samba-3.0.release.orig/source/modules/vfs_recycle.c samba-3.0.release/source/modules/vfs_recycle.c --- samba-3.0.release.orig/source/modules/vfs_recycle.c 2003-10-11 21:34:20 +1000 +++ samba-3.0.release/source/modules/vfs_recycle.c 2004-03-10 14:27:08 +0900 @@ -219,7 +219,7 @@ ALLOC_CHECK(tmp_str, done); tok_str = tmp_str; - len = strlen(dname); + len = strlen(dname) + 1; // 1 - for dname+"/" new_dir = (char *)malloc(len + 1); ALLOC_CHECK(new_dir, done); *new_dir = '\0'; Expected Results: recycle: creating new dir .recycle/22 [2004/03/10 10:51:56, 0] lib/util_str.c:safe_strcat_fn(629) ERROR: string overflow by 1 in safe_strcat [/]
Applied fix to CVS, will be in 3.0.2a-alt6
Хорошо