[sisyphus] sudoedit: как им пользоваться-то?! :)
Fr. Br. George
=?iso-8859-1?q?george_=CE=C1_altlinux=2Eorg?=
Пт Авг 3 19:15:39 MSD 2007
Для начала: Дима, бага в 3b851f7c5e54b0e7445b633804d3d40e8f4aaa37
/getgrouplistfstat
Продублировал в BZ на всякий пожарный. #12462
Дпльше -- лирика:
On Fri, Aug 03, 2007 at 07:45:50PM +0700, Slava Semushin wrote:
> > Не получается приготовить:
> > [c0der на rock ~]$ sudoedit /etc/fstab
> > sudoedit: /etc/fstab: Bad address
> Вопрос остаётся в силе.
> [c0der на rock ~]$ strace sudo -e /etc/fstab
Я бы сказал, что даже интереснее:
strace -Ff sudoedit /etc/fstab
...
11616 <... waitpid resumed> [{WIFEXITED(s) && WEXITSTATUS(s) == 0}], 0)
= 11621
11616 --- SIGCHLD (Child exited) @ 0 (0) ---
11616 close(4) = 0
11616 rt_sigaction(SIGCHLD, {0x804c1d0, [], SA_RESTART}, NULL, 8) = 0
11616 rt_sigaction(SIGTSTP, {SIG_IGN}, NULL, 8) = 0
11616 utimes("/var/run/sudo/george/3", NULL) = 0
11616 time(NULL) = 1186149331
11616 send(3, "<85>Aug 3 17:55:31 sudo[11616]: george : TTY=pts/3 ;
PWD=/home/george ; USER=root ; COMMAND=sudoedit /etc/fstab", 114,
MSG_NOSIGNAL) = 114
11616 umask(022) = 022
11616 setrlimit(RLIMIT_CORE, {rlim_cur=0, rlim_max=RLIM_INFINITY}) = 0
11616 stat64("/var/tmp/", {st_mode=S_IFDIR|S_ISVTX|0777, st_size=48,
...}) = 0
11616 setresuid32(-1, 0, -1) = 0
11616 open("/etc/fstab", O_RDONLY) = 4
11616 stat64(NULL, 0xbf976590) = -1 EFAULT (Bad address)
11616 close(4) = 0
11616 setresuid32(0, 0, 0) = 0
11616 write(2, "sudoedit: ", 10) = 10
11616 write(2, "/etc/fstab", 10) = 10
11616 write(2, ": ", 2) = 2
11616 write(2, "Bad address\n", 12) = 12
11616 exit_group(1) = ?
...
Что это за stat64(NULL, 0xbf976590)?
Проблема здесь:
109 memset(tf, 0, (argc - 1) * sizeof(*tf));
110 for (i = 0, ap = argv + 1; i < argc - 1 && *ap != NULL; i++, ap++) {
111 set_perms(PERM_RUNAS);
112 ofd = open(*ap, O_RDONLY, 0644);
113 if (ofd != -1) {
114 #ifdef HAVE_FSTAT
115 if (fstat(ofd, &sb) != 0) {
116 #else
117 if (stat(tf[i].ofile, &sb) != 0) {
118 #endif
119 close(ofd); /* XXX - could reset errno */
120 ofd = -1;
"sudo_edit.c" 349 стр. --31%--
По указанным в начале причинам собирается без fstat. И -- не работает.
Оно, конечно. бага. Но если "getgrouplistfstat" в configure.in поменять на
"getgrouplist fstat", начинает работать. Шаловливые ручонки-с.
--
George V. Kouryachy (aka Fr. Br. George)
mailto:george at altlinux_org
Подробная информация о списке рассылки Sisyphus