From 97c26c1924b076ef23ebe4381558e8aa025712b2 Mon Sep 17 00:00:00 2001 From: Daniel Baumann Date: Sun, 7 Apr 2024 16:54:37 +0200 Subject: Adding upstream version 1:4.13+dfsg1. Signed-off-by: Daniel Baumann --- src/free_subid_range.c | 55 ++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 55 insertions(+) create mode 100644 src/free_subid_range.c (limited to 'src/free_subid_range.c') diff --git a/src/free_subid_range.c b/src/free_subid_range.c new file mode 100644 index 0000000..d9a2cd8 --- /dev/null +++ b/src/free_subid_range.c @@ -0,0 +1,55 @@ +/* SPDX-License-Identifier: BSD-3-Clause */ + +#include +#include +#include "subid.h" +#include "stdlib.h" +#include "prototypes.h" +#include "shadowlog.h" + +/* Test program for the subid freeing routine */ + +const char *Prog; + +static void usage(void) +{ + fprintf(stderr, "Usage: %s [-g] user start count\n", Prog); + fprintf(stderr, " Release a user's subuid (or with -g, subgid) range\n"); + exit(EXIT_FAILURE); +} + +int main(int argc, char *argv[]) +{ + int c; + bool ok; + struct subordinate_range range; + bool group = false; // get subuids by default + + Prog = Basename (argv[0]); + log_set_progname(Prog); + log_set_logfd(stderr); + while ((c = getopt(argc, argv, "g")) != EOF) { + switch(c) { + case 'g': group = true; break; + default: usage(); + } + } + argv = &argv[optind]; + argc = argc - optind; + if (argc < 3) + usage(); + range.owner = argv[0]; + range.start = atoi(argv[1]); + range.count = atoi(argv[2]); + if (group) + ok = subid_ungrant_gid_range(&range); + else + ok = subid_ungrant_uid_range(&range); + + if (!ok) { + fprintf(stderr, "Failed freeing id range\n"); + exit(EXIT_FAILURE); + } + + return 0; +} -- cgit v1.2.3