SMOLNET PORTAL home about changes
iIndentation tweaks in sup.c - 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 2d1c01d008c45941d3e710f7ec5f7abc94fcffcc	/scm/sup/commit/2d1c01d008c45941d3e710f7ec5f7abc94fcffcc.gph	bitreich.org	70
1parent 7869bc4fa8353f917e6868f8c2b165f5fcf979dc	/scm/sup/commit/7869bc4fa8353f917e6868f8c2b165f5fcf979dc.gph	bitreich.org	70
hAuthor: parazyd <parazyd@dyne.org>	URL:mailto:parazyd@dyne.org	bitreich.org	70
iDate:   Wed, 27 Jan 2021 15:11:51 +0100	Err	bitreich.org	70
i	Err	bitreich.org	70
iIndentation tweaks in sup.c	Err	bitreich.org	70
i	Err	bitreich.org	70
iDiffstat:	Err	bitreich.org	70
i  M sup.c                               |      32 ++++++++++++++++++-------------	Err	bitreich.org	70
i	Err	bitreich.org	70
i1 file changed, 19 insertions(+), 13 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@@ -10,7 +10,7 @@	Err	bitreich.org	70
i #include "sha256.h"	Err	bitreich.org	70
i 	Err	bitreich.org	70
i #define nelem(x) (sizeof (x) / sizeof *(x))	Err	bitreich.org	70
i-#define CHUNK 1048576 /* 1MiB */	Err	bitreich.org	70
i+#define CHUNK 1048576                /* 1MiB */	Err	bitreich.org	70
i 	Err	bitreich.org	70
i struct rule_t {	Err	bitreich.org	70
i         const int uid;	Err	bitreich.org	70
i@@ -23,12 +23,14 @@ struct rule_t {	Err	bitreich.org	70
i 	Err	bitreich.org	70
i char *argv0;	Err	bitreich.org	70
i 	Err	bitreich.org	70
i-void die(char *msg) {	Err	bitreich.org	70
i+void die(char *msg)	Err	bitreich.org	70
i+{	Err	bitreich.org	70
i         fprintf(stderr, "%s\n", msg);	Err	bitreich.org	70
i         exit(1);	Err	bitreich.org	70
i }	Err	bitreich.org	70
i 	Err	bitreich.org	70
i-static uint32 getsha(const char *path, unsigned char *dest) {	Err	bitreich.org	70
i+static uint32 getsha(const char *path, unsigned char *dest)	Err	bitreich.org	70
i+{	Err	bitreich.org	70
i         static sha256_context sha;	Err	bitreich.org	70
i         unsigned char buf[CHUNK];	Err	bitreich.org	70
i         uint32 len, tot = 0;	Err	bitreich.org	70
i@@ -50,25 +52,27 @@ static uint32 getsha(const char *path, unsigned char *dest) {	Err	bitreich.org	70
i         return tot;	Err	bitreich.org	70
i }	Err	bitreich.org	70
i 	Err	bitreich.org	70
i-int main(int argc, char *argv[]) {	Err	bitreich.org	70
i+int main(int argc, char *argv[])	Err	bitreich.org	70
i+{	Err	bitreich.org	70
i         unsigned int c, i, lflag = 0;	Err	bitreich.org	70
i         unsigned char digest[32];	Err	bitreich.org	70
i         char output[65];	Err	bitreich.org	70
i         struct stat st;	Err	bitreich.org	70
i 	Err	bitreich.org	70
i         ARGBEGIN {	Err	bitreich.org	70
i-                case 'l':	Err	bitreich.org	70
i-                        lflag = 1;	Err	bitreich.org	70
i-                        break;	Err	bitreich.org	70
i-                default:	Err	bitreich.org	70
i-                        die("Usage: sup [-l] command [ args ... ]");	Err	bitreich.org	70
i+        case 'l':	Err	bitreich.org	70
i+                lflag = 1;	Err	bitreich.org	70
i+                break;	Err	bitreich.org	70
i+        default:	Err	bitreich.org	70
i+                die("Usage: sup [-l] command [ args ... ]");	Err	bitreich.org	70
i         } ARGEND;	Err	bitreich.org	70
i 	Err	bitreich.org	70
i         if (lflag) {	Err	bitreich.org	70
i                 printf("List of compiled authorizations:\n");	Err	bitreich.org	70
i                 for (i = 0; i < nelem(rules); i++)	Err	bitreich.org	70
i                         printf("\nuser: %d\ncmd: %s\nbinary: %s\nsha256: %s\n",	Err	bitreich.org	70
i-                                        rules[i].uid, rules[i].cmd, rules[i].path, rules[i].hash);	Err	bitreich.org	70
i+                               rules[i].uid, rules[i].cmd, rules[i].path,	Err	bitreich.org	70
i+                               rules[i].hash);	Err	bitreich.org	70
i                 return 0;	Err	bitreich.org	70
i         }	Err	bitreich.org	70
i 	Err	bitreich.org	70
i@@ -91,14 +95,16 @@ int main(int argc, char *argv[]) {	Err	bitreich.org	70
i                                 die("Binary file differs from size read.");	Err	bitreich.org	70
i 	Err	bitreich.org	70
i                         for (c = 0; c < 32; c++)	Err	bitreich.org	70
i-                                sprintf(output + (c*2), "%02x", digest[c]);	Err	bitreich.org	70
i+                                sprintf(output + (c * 2), "%02x", digest[c]);	Err	bitreich.org	70
i                         output[64] = '\0';	Err	bitreich.org	70
i 	Err	bitreich.org	70
i                         if (strncmp(rules[i].hash, output, 64))	Err	bitreich.org	70
i                                 die("Checksums do not match.");	Err	bitreich.org	70
i 	Err	bitreich.org	70
i-                        if (setgid(SETGID) < 0) die("setgid failed");	Err	bitreich.org	70
i-                        if (setuid(SETUID) < 0) die("setuid failed");	Err	bitreich.org	70
i+                        if (setgid(SETGID) < 0)	Err	bitreich.org	70
i+                                die("setgid failed");	Err	bitreich.org	70
i+                        if (setuid(SETUID) < 0)	Err	bitreich.org	70
i+                                die("setuid failed");	Err	bitreich.org	70
i 	Err	bitreich.org	70
i                         if (execv(rules[i].path, argv) < 0)	Err	bitreich.org	70
i                                 die("execv failed.");	Err	bitreich.org	70
.
Response: text/plain
Original URLgopher://bitreich.org/0/scm/sup/commit/2d1c01d008c45941d3...
Content-Typetext/plain; charset=utf-8