s3-net: Fix Bug #6328: allow multiple rights in "net sam rights grant".
authorGünther Deschner <gd@samba.org>
Wed, 17 Jun 2009 10:31:49 +0000 (12:31 +0200)
committerGünther Deschner <gd@samba.org>
Wed, 17 Jun 2009 10:40:28 +0000 (12:40 +0200)
Guenther

source3/utils/net_sam.c

index 0d8b6ff4821062ca989a7182d656f95064463e64..e8ab412469d916185a895406536c9a023f103fae 100644 (file)
@@ -678,10 +678,11 @@ static int net_sam_rights_grant(struct net_context *c, int argc,
        enum lsa_SidType type;
        const char *dom, *name;
        SE_PRIV mask;
        enum lsa_SidType type;
        const char *dom, *name;
        SE_PRIV mask;
+       int i;
 
 
-       if (argc != 2 || c->display_usage) {
+       if (argc < 2 || c->display_usage) {
                d_fprintf(stderr, "usage: net sam rights grant <name> "
                d_fprintf(stderr, "usage: net sam rights grant <name> "
-                         "<right>\n");
+                         "<right> ...\n");
                return -1;
        }
 
                return -1;
        }
 
@@ -691,17 +692,20 @@ static int net_sam_rights_grant(struct net_context *c, int argc,
                return -1;
        }
 
                return -1;
        }
 
-       if (!se_priv_from_name(argv[1], &mask)) {
-               d_fprintf(stderr, "%s unknown\n", argv[1]);
-               return -1;
-       }
+       for (i=1; i < argc; i++) {
+               if (!se_priv_from_name(argv[i], &mask)) {
+                       d_fprintf(stderr, "%s unknown\n", argv[i]);
+                       return -1;
+               }
 
 
-       if (!grant_privilege(&sid, &mask)) {
-               d_fprintf(stderr, "Could not grant privilege\n");
-               return -1;
+               if (!grant_privilege(&sid, &mask)) {
+                       d_fprintf(stderr, "Could not grant privilege\n");
+                       return -1;
+               }
+
+               d_printf("Granted %s to %s\\%s\n", argv[i], dom, name);
        }
 
        }
 
-       d_printf("Granted %s to %s\\%s\n", argv[1], dom, name);
        return 0;
 }
 
        return 0;
 }