From 47e76de56a372796260b06a55f0be7765ee2f54f Mon Sep 17 00:00:00 2001
From: Matt Johnston <matt@ucc.asn.au>
Date: Mon, 12 Feb 2007 10:43:44 +0000
Subject: [PATCH] Disable core dumps

--HG--
extra : convert_revision : ba8ebf724630561c6b9285247be7574a33853a17
---
 cli-main.c | 2 ++
 dbutil.c   | 6 ++++++
 dbutil.h   | 1 +
 includes.h | 1 +
 svr-main.c | 2 ++
 5 files changed, 12 insertions(+)

diff --git a/cli-main.c b/cli-main.c
index 3f767c9..68cf023 100644
--- a/cli-main.c
+++ b/cli-main.c
@@ -47,6 +47,8 @@ int main(int argc, char ** argv) {
 	_dropbear_exit = cli_dropbear_exit;
 	_dropbear_log = cli_dropbear_log;
 
+	disallow_core();
+
 	cli_getopts(argc, argv);
 
 	TRACE(("user='%s' host='%s' port='%s'", cli_opts.username,
diff --git a/dbutil.c b/dbutil.c
index f06b8bf..4559ba9 100644
--- a/dbutil.c
+++ b/dbutil.c
@@ -693,3 +693,9 @@ void setnonblocking(int fd) {
 	}
 	TRACE(("leave setnonblocking"))
 }
+
+void disallow_core() {
+	struct rlimit lim;
+	lim.rlim_cur = lim.rlim_max = 0;
+	setrlimit(RLIMIT_CORE, &lim);
+}
diff --git a/dbutil.h b/dbutil.h
index d74e17e..856978d 100644
--- a/dbutil.h
+++ b/dbutil.h
@@ -63,6 +63,7 @@ void * m_realloc(void* ptr, size_t size);
 void __m_free(void* ptr);
 void m_burn(void* data, unsigned int len);
 void setnonblocking(int fd);
+void disallow_core();
 
 /* Used to force mp_ints to be initialised */
 #define DEF_MP_INT(X) mp_int X = {0, 0, 0, NULL}
diff --git a/includes.h b/includes.h
index 1fcf634..017de66 100644
--- a/includes.h
+++ b/includes.h
@@ -38,6 +38,7 @@
 #include <sys/time.h>
 #include <sys/un.h>
 #include <sys/wait.h>
+#include <sys/resource.h>
 
 #include <stdio.h>
 #include <errno.h>
diff --git a/svr-main.c b/svr-main.c
index e228acf..ddf5445 100644
--- a/svr-main.c
+++ b/svr-main.c
@@ -52,6 +52,8 @@ int main(int argc, char ** argv)
 	_dropbear_exit = svr_dropbear_exit;
 	_dropbear_log = svr_dropbear_log;
 
+	disallow_core();
+
 	/* get commandline options */
 	svr_getopts(argc, argv);