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 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 .