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