socsvn commit: r236809 -
soc2012/tzabal/client-side/akcrs-head/usr.sbin/crashreport
tzabal at FreeBSD.org
tzabal at FreeBSD.org
Thu May 31 12:04:42 UTC 2012
Author: tzabal
Date: Thu May 31 12:04:39 2012
New Revision: 236809
URL: http://svnweb.FreeBSD.org/socsvn/?view=rev&rev=236809
Log:
crashreport: Only root can execute the script and function error for messages to stderr has been added.
Modified:
soc2012/tzabal/client-side/akcrs-head/usr.sbin/crashreport/crashreport.sh
Modified: soc2012/tzabal/client-side/akcrs-head/usr.sbin/crashreport/crashreport.sh
==============================================================================
--- soc2012/tzabal/client-side/akcrs-head/usr.sbin/crashreport/crashreport.sh Thu May 31 11:43:41 2012 (r236808)
+++ soc2012/tzabal/client-side/akcrs-head/usr.sbin/crashreport/crashreport.sh Thu May 31 12:04:39 2012 (r236809)
@@ -1,22 +1,43 @@
#!/bin/sh
+#
+# Crashreport is a program that is responsible to locate, collect and send
+# the debugging information of a FreeBSD kernel crash to a central machine
+# that collects these reports for analysis from the FreeBSD community and
+# the FreeBSD developers.
+#
. /etc/rc.conf
+PROG=`/usr/bin/basename $0`
print_usage()
{
- echo "usage: $(basename $0) [-d dumpdir] [-f file] [-e email]"
+ echo "usage: ${PROG} [-d dumpdir] [-f file] [-e email]"
+}
+
+error()
+{
+ echo "${PROG}: ERROR: $*" 1>&2
}
# Default dump directory
DUMPDIR='/var/crash'
-_dumpdir=""
-_file=""
-_email=""
+_dumpdir=
+_file=
+_email=
+
+
+## Check if the user that executes the script is root
+user=`/usr/bin/id -u`
+if [ "${user}" != "0" ]; then
+ error 'Only the superuser (uid 0) can use this program.'
+ exit 1
+fi
+## Get positional parameters
while getopts "d:f:e:" opt; do
case "$opt" in
d)
@@ -30,7 +51,7 @@
;;
*)
print_usage
- exit 1
+ exit 2
;;
esac
done
@@ -47,19 +68,19 @@
fi
if [ ! -d "${_dumpdir}" ]; then
- echo "crashreport: Dump directory ${_dumpdir} does not exist."
- exit 1
+ error "Dump directory ${_dumpdir} does not exist."
+ exit 3
fi
if [ -z "`ls ${_dumpdir}`" ]; then
- echo "crashreport: Dump directory ${_dumpdir} is empty."
- exit 2
+ error "Dump directory ${_dumpdir} is empty."
+ exit 4
fi
## Find the file that contains the debugging information
-## It is either a core.txt.X or a textdump.tar.X
-X=""
+## Normally, it is either a core.txt.X or a textdump.tar.X
+X=
BOUNDS="${_dumpdir}/bounds"
CORE="${_dumpdir}/core.txt"
TEXTDUMP="${_dumpdir}/textdump.tar"
@@ -82,8 +103,8 @@
fi
if [ ! -f "${_dumpdir}/${_file}" ]; then
- echo "crashreport: Unable to locate file with debugging information."
- exit 3
+ error 'Unable to locate file with debugging information.'
+ exit 5
fi
@@ -94,8 +115,8 @@
fi
if [ -z "$_email" ]; then
- echo 'crashreport: No email address for contact is specified.'
- exit 4
+ error 'No email address for contact is specified.'
+ exit 6
fi
# Check if the given email address is valid based on its format.
@@ -103,8 +124,8 @@
> /dev/null
if [ "$?" -ne "0" ]; then
- echo "crashreport: Email address ${_email} is invalid."
- exit 5
+ error "Email address ${_email} is invalid."
+ exit 7
fi
More information about the svn-soc-all
mailing list