Core dump
Vitezslav Samel
samel na mail.cz
Úterý Leden 23 08:36:44 CET 2001
On Mon, Jan 22, 2001 Michal Krause wrote:
>
> > > Tak prctl() nezabira, porad to vraci EINVAL. Dival jsem se do
> > > zdrojaku jadra a tenhle syscall normalne akceptuje jenom
> > > PR_SET_PDEATHSIG. Vypada to, ze na to existuji patche, ale co jsem
> > > zatim nasel bylo bud pro 2.1.x nebo 2.3.x. Asi by se to muselo
> > > adaptovat.
> >
> > V jadre 2.2.18 PR_{G,S}ET_DUMPABLE neni, v 2.4.0 uz je. A nejake
> > omezeni na prechod 1->0 tam neni.
>
> No, prechazet kvuli tomu na 2.4 se mi v ostrem provozu nechce (a v
> "laboratori" aplikace obvykle nepadaji :)
> Ale teoreticky by to melo jit snadno backportovat, predpokladam, ze tam
> neni nic vetsiho, nez
>
> current->dumpable = arg1;
>
> Nebo tak neco. Urcite na to mrknu.
Mohlo by fungovat neco takoveho (bez zaruky - nezkousel jsem ani prelozit):
Ahoj
Vita Samel
diff -urN clean-2.2.18/include/linux/prctl.h linux-2.2.18/include/linux/prctl.h
--- clean-2.2.18/include/linux/prctl.h Mon Dec 11 01:49:44 2000
+++ linux-2.2.18/include/linux/prctl.h Tue Jan 23 08:29:45 2001
@@ -5,6 +5,10 @@
#define PR_SET_PDEATHSIG 1 /* Second arg is a signal */
+/* Get/set current->dumpable */
+#define PR_GET_DUMPABLE 3
+#define PR_SET_DUMPABLE 4
+
/* Get/set whether or not to drop capabilities on setuid() away from uid 0 */
#define PR_GET_KEEPCAPS 7
#define PR_SET_KEEPCAPS 8
diff -urN clean-2.2.18/kernel/sys.c linux-2.2.18/kernel/sys.c
--- clean-2.2.18/kernel/sys.c Mon Dec 11 01:49:44 2000
+++ linux-2.2.18/kernel/sys.c Tue Jan 23 08:31:00 2001
@@ -1028,6 +1028,18 @@
current->pdeath_signal = sig;
break;
+ case PR_GET_DUMPABLE:
+ if (current->dumpable)
+ error = 1;
+ break;
+ case PR_SET_DUMPABLE:
+ if (arg2 != 0 && arg2 != 1) {
+ error = -EINVAL;
+ break;
+ }
+ current->dumpable = arg2;
+ break;
+
case PR_GET_KEEPCAPS:
if (current->keep_capabilities)
error = 1;
Další informace o konferenci Linux