Bug 3822 - String overflow in vfs_recycle.c
Summary: String overflow in vfs_recycle.c
Status: CLOSED FIXED
Alias: None
Product: Sisyphus
Classification: Development
Component: samba (show other bugs)
Version: unstable
Hardware: all Linux
: P2 minor
Assignee: Evgeny Sinelnikov
QA Contact: qa-sisyphus
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2004-03-12 02:09 MSK by Oleg Gints
Modified: 2009-05-10 09:32 MSD (History)
1 user (show)

See Also:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Oleg Gints 2004-03-12 02:09:49 MSK
Обнаружил в самбе небольшую ошибку.
Версия - 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 [/]
Comment 1 Alexander Bokovoy 2004-03-12 17:57:49 MSK
Applied fix to CVS, will be in 3.0.2a-alt6
Comment 2 Oleg Gints 2004-03-15 02:12:16 MSK
Хорошо