sharesec: Print ACEs in similar format as expected in input
authorChristof Schmitt <cs@samba.org>
Fri, 24 Apr 2015 16:51:28 +0000 (09:51 -0700)
committerJeremy Allison <jra@samba.org>
Fri, 24 Apr 2015 22:04:24 +0000 (00:04 +0200)
BUG: https://bugzilla.samba.org/show_bug.cgi?id=11237

Signed-off-by: Christof Schmitt <cs@samba.org>
Reviewed-by: Jeremy Allison <jra@samba.org>
source3/utils/sharesec.c
source3/wscript_build

index 132ca7ecc10dd21aaebebf4bd637619f9abf2c06..44cab17cd7ca38ce9c8f3f5bb4554ff94808779a 100644 (file)
  *  along with this program; if not, see <http://www.gnu.org/licenses/>.
  */
 
+struct cli_state;
 
 #include "includes.h"
 #include "popt_common.h"
 #include "../libcli/security/security.h"
-#include "../librpc/gen_ndr/ndr_security.h"
 #include "passdb/machine_sid.h"
+#include "util_sd.h"
 
 static TALLOC_CTX *ctx;
 
@@ -334,7 +335,6 @@ static int change_share_sec(TALLOC_CTX *mem_ctx, const char *sharename, char *th
        struct security_descriptor *old = NULL;
        size_t sd_size = 0;
        uint32 i, j;
-       char *sd_str;
 
        if (mode != SMB_ACL_SET && mode != SMB_SD_DELETE) {
            if (!(old = get_share_security( mem_ctx, sharename, &sd_size )) ) {
@@ -355,11 +355,7 @@ static int change_share_sec(TALLOC_CTX *mem_ctx, const char *sharename, char *th
                /* should not happen */
                return 0;
        case SMB_ACL_VIEW:
-               sd_str = ndr_print_struct_string(mem_ctx,
-                               (ndr_print_fn_t)ndr_print_security_descriptor,
-                               "", old);
-               fprintf(stdout, "%s\n", sd_str);
-               talloc_free(sd_str);
+               sec_desc_print(NULL, stdout, old, true);
                return 0;
        case SMB_ACL_DELETE:
            for (i=0;sd->dacl && i<sd->dacl->num_aces;i++) {
@@ -379,11 +375,9 @@ static int change_share_sec(TALLOC_CTX *mem_ctx, const char *sharename, char *th
                }
 
                if (!found) {
-                       sd_str = ndr_print_struct_string(mem_ctx,
-                                       (ndr_print_fn_t)ndr_print_security_ace,
-                                       "", &sd->dacl->aces[i]);
-                       printf("ACL for ACE: %s not found\n", sd_str);
-                       talloc_free(sd_str);
+                       printf("ACL for ACE:");
+                       print_ace(NULL, stdout, &sd->dacl->aces[i], true);
+                       printf(" not found\n");
                }
            }
            break;
index 36eb1b79294061441ed658e94edf01e1f89f6fd3..ef4c986bca6a2c2c734d75909e1319f3dd809b12 100755 (executable)
@@ -1365,9 +1365,11 @@ bld.SAMBA3_BINARY('eventlogadm',
                  LIBEVENTLOG''')
 
 bld.SAMBA3_BINARY('sharesec',
-                 source='utils/sharesec.c',
+                 source='utils/sharesec.c lib/util_sd.c',
                  deps='''
                  talloc
+                 msrpc3
+                 libcli_lsa3
                  popt_samba3''')
 
 bld.SAMBA3_BINARY('pdbtest',