SMOLNET PORTAL home about changes
i* Add contextual error information in die() - sup - small tool for privilege escalation	Err	bitreich.org	70
hgit clone git://bitreich.org/sup git://enlrupgkhuxnvlhsf6lc3fziv5h2hhfrinws65d7roiv6bfj7d652fid.onion/sup	URL:git://bitreich.org/sup git://enlrupgkhuxnvlhsf6lc3fziv5h2hhfrinws65d7roiv6bfj7d652fid.onion/sup	bitreich.org	70
1Log	/scm/sup/log.gph	bitreich.org	70
1Files	/scm/sup/files.gph	bitreich.org	70
1Refs	/scm/sup/refs.gph	bitreich.org	70
1Tags	/scm/sup/tag	bitreich.org	70
1README	/scm/sup/file/README.gph	bitreich.org	70
1LICENSE	/scm/sup/file/LICENSE.gph	bitreich.org	70
i---	Err	bitreich.org	70
1commit 8078fe60673809c9ce32dd85613e9f96d7278742	/scm/sup/commit/8078fe60673809c9ce32dd85613e9f96d7278742.gph	bitreich.org	70
1parent 0492cb034b11bc7ae89a4be974cf80678c74bfe8	/scm/sup/commit/0492cb034b11bc7ae89a4be974cf80678c74bfe8.gph	bitreich.org	70
hAuthor: pancake@dazo <unknown>	URL:mailto:unknown	bitreich.org	70
iDate:   Mon,  4 Jan 2010 00:06:28 +0100	Err	bitreich.org	70
i	Err	bitreich.org	70
i* Add contextual error information in die()	Err	bitreich.org	70
iDiffstat:	Err	bitreich.org	70
i  M sup.c                               |      24 ++++++++++++------------	Err	bitreich.org	70
i	Err	bitreich.org	70
i1 file changed, 12 insertions(+), 12 deletions(-)	Err	bitreich.org	70
i---	Err	bitreich.org	70
1diff --git a/sup.c b/sup.c	/scm/sup/file/sup.c.gph	bitreich.org	70
i@@ -18,8 +18,8 @@ struct rule_t {	Err	bitreich.org	70
i 	Err	bitreich.org	70
i #include "config.h"	Err	bitreich.org	70
i 	Err	bitreich.org	70
i-static int die(int ret, const char *str) {	Err	bitreich.org	70
i-        fprintf (stderr, "%s\n", str);	Err	bitreich.org	70
i+static int die(int ret, const char *org, const char *str) {	Err	bitreich.org	70
i+        fprintf (stderr, "%s%s%s\n", org, org?": ":"", str);	Err	bitreich.org	70
i         return ret;	Err	bitreich.org	70
i }	Err	bitreich.org	70
i 	Err	bitreich.org	70
i@@ -27,10 +27,10 @@ int main(int argc, char **argv) {	Err	bitreich.org	70
i         int i, uid, gid, ret;	Err	bitreich.org	70
i 	Err	bitreich.org	70
i         if (argc < 2 || !strcmp (argv[1], "-h"))	Err	bitreich.org	70
i-                return die (1, HELP);	Err	bitreich.org	70
i+                return die (1, NULL, HELP);	Err	bitreich.org	70
i 	Err	bitreich.org	70
i         if (!strcmp (argv[1], "-v"))	Err	bitreich.org	70
i-                return die (1, VERSION);	Err	bitreich.org	70
i+                return die (1, NULL, VERSION);	Err	bitreich.org	70
i 	Err	bitreich.org	70
i         if (!strcmp (argv[1], "-l")) {	Err	bitreich.org	70
i                 for (i = 0; rules[i].cmd != NULL; i++)	Err	bitreich.org	70
i@@ -48,29 +48,29 @@ int main(int argc, char **argv) {	Err	bitreich.org	70
i                         struct stat st;	Err	bitreich.org	70
i                         lstat (rules[i].path, &st);	Err	bitreich.org	70
i                         if (st.st_mode & 0222)	Err	bitreich.org	70
i-                                return die (1, "Cannot run writable binaries.");	Err	bitreich.org	70
i+                                return die (1, "stat", "Cannot run writable binaries.");	Err	bitreich.org	70
i #endif	Err	bitreich.org	70
i                         if (uid != SETUID && rules[i].uid != -1 && rules[i].uid != uid)	Err	bitreich.org	70
i-                                return die (1, "User does not match");	Err	bitreich.org	70
i+                                return die (1, "urule", "User does not match");	Err	bitreich.org	70
i 	Err	bitreich.org	70
i                         if (gid != SETGID && rules[i].gid != -1 && rules[i].gid != gid)	Err	bitreich.org	70
i-                                return die (1, "Group id does not match");	Err	bitreich.org	70
i+                                return die (1, "grule", "Group id does not match");	Err	bitreich.org	70
i 	Err	bitreich.org	70
i                         if (setuid (SETUID) == -1 || setgid (SETGID) == -1 ||	Err	bitreich.org	70
i                             seteuid (SETUID) == -1 || setegid (SETGID) == -1)	Err	bitreich.org	70
i-                                return die (1, strerror (errno));	Err	bitreich.org	70
i+                                return die (1, "set[e][ug]id", strerror (errno));	Err	bitreich.org	70
i #ifdef CHROOT	Err	bitreich.org	70
i                         if (*CHROOT)	Err	bitreich.org	70
i                                 if (chdir (CHROOT) == -1 || chroot (".") == -1)	Err	bitreich.org	70
i-                                        return die (1, strerror (errno));	Err	bitreich.org	70
i+                                        return die (1, "chroot", strerror (errno));	Err	bitreich.org	70
i                         if (*CHRDIR)	Err	bitreich.org	70
i                                 if (chdir (CHRDIR) == -1)	Err	bitreich.org	70
i-                                        return die (1, strerror (errno));	Err	bitreich.org	70
i+                                        return die (1, "chdir", strerror (errno));	Err	bitreich.org	70
i #endif	Err	bitreich.org	70
i                         ret = execv (*rules[i].path? rules[i].path:argv[1], argv+1);	Err	bitreich.org	70
i-                        return die (ret, strerror (errno));	Err	bitreich.org	70
i+                        return die (ret, "execv", strerror (errno));	Err	bitreich.org	70
i                 }	Err	bitreich.org	70
i         }	Err	bitreich.org	70
i 	Err	bitreich.org	70
i-        return die (1, "Sorry");	Err	bitreich.org	70
i+        return die (1, NULL, "Sorry");	Err	bitreich.org	70
i }	Err	bitreich.org	70
.
Response: text/plain
Original URLgopher://bitreich.org/0/scm/sup/commit/8078fe60673809c9ce...
Content-Typetext/plain; charset=utf-8