Ignore:
Timestamp:
Nov 27, 2012, 4:56:06 PM (13 years ago)
Author:
Silvan Scherrer
Message:

Samba Server: updated vendor to 3.6.9

Location:
vendor/current/source3/utils
Files:
5 edited

Legend:

Unmodified
Added
Removed
  • vendor/current/source3/utils/net_ads.c

    r740 r746  
    22082208        attrs = (argv + 1);
    22092209
    2210         rc = ads_do_search_all(ads, ads->config.bind_path,
     2210        rc = ads_do_search_retry(ads, ads->config.bind_path,
    22112211                               LDAP_SCOPE_SUBTREE,
    22122212                               ldap_exp, attrs, &res);
  • vendor/current/source3/utils/net_groupmap.c

    r740 r746  
    824824                d_printf("%s\n%s",
    825825                         _("Usage:"),
    826                          _("net groupmap memberof sid\n"));
     826                         _("net groupmap memberships sid\n"));
    827827                return -1;
    828828        }
  • vendor/current/source3/utils/net_idmap_check.c

    r740 r746  
    891891        }
    892892
    893         status = dbwrap_traverse(ctx->db, traverse_check, ctx);
     893        status = dbwrap_traverse(ctx->db, traverse_check, ctx, NULL);
    894894
    895895        if (!NT_STATUS_IS_OK(status)) {
     
    928928
    929929static void check_diff_list(struct check_ctx* ctx) {
    930         NTSTATUS status = dbwrap_traverse(ctx->diff, traverse_print_diff, ctx);
     930        NTSTATUS status = dbwrap_traverse(ctx->diff, traverse_print_diff, ctx, NULL);
    931931
    932932        if (!NT_STATUS_IS_OK(status)) {
     
    964964        }
    965965
    966         status = dbwrap_traverse(ctx->diff, traverse_commit, ctx);
     966        status = dbwrap_traverse(ctx->diff, traverse_commit, ctx, NULL);
    967967
    968968        if (!NT_STATUS_IS_OK(status)) {
  • vendor/current/source3/utils/net_lookup.c

    r740 r746  
    277277        krb5_error_code rc;
    278278        krb5_context ctx;
    279         struct sockaddr_in *addrs;
    280         int num_kdcs,i;
    281         krb5_data realm;
    282         char **realms;
     279        struct ip_service *kdcs;
     280        const char *realm;
     281        int num_kdcs = 0;
     282        int i;
     283        NTSTATUS status;
    283284
    284285        initialize_krb5_error_table();
     
    290291        }
    291292
    292         if (argc>0) {
    293                 realm.data = CONST_DISCARD(char *, argv[0]);
    294                 realm.length = strlen(argv[0]);
     293        if (argc > 0) {
     294                realm = argv[0];
    295295        } else if (lp_realm() && *lp_realm()) {
    296                 realm.data = lp_realm();
    297                 realm.length = strlen((const char *)realm.data);
     296                realm = lp_realm();
    298297        } else {
     298                char **realms;
     299
    299300                rc = krb5_get_host_realm(ctx, NULL, &realms);
    300301                if (rc) {
     
    303304                        return -1;
    304305                }
    305                 realm.data = (char *) *realms;
    306                 realm.length = strlen((const char *)realm.data);
    307         }
    308 
    309         rc = smb_krb5_locate_kdc(ctx, &realm, (struct sockaddr **)(void *)&addrs, &num_kdcs, 0);
    310         if (rc) {
    311                 DEBUG(1, ("smb_krb5_locate_kdc failed (%s)\n", error_message(rc)));
    312                 return -1;
    313         }
    314         for (i=0;i<num_kdcs;i++)
    315                 if (addrs[i].sin_family == AF_INET)
    316                         d_printf("%s:%hd\n", inet_ntoa(addrs[i].sin_addr),
    317                                  ntohs(addrs[i].sin_port));
    318         return 0;
    319 
     306                realm = (const char *) *realms;
     307        }
     308
     309        status = get_kdc_list(realm, NULL, &kdcs, &num_kdcs);
     310        if (!NT_STATUS_IS_OK(status)) {
     311                DEBUG(1,("get_kdc_list failed (%s)\n", nt_errstr(status)));
     312                return -1;
     313        }
     314
     315        for (i = 0; i < num_kdcs; i++) {
     316                char addr[INET6_ADDRSTRLEN];
     317
     318                print_sockaddr(addr, sizeof(addr), &kdcs[i].ss);
     319
     320                d_printf("%s:%hd\n", addr, kdcs[i].port);
     321        }
     322
     323        return 0;
    320324#endif
    321325        DEBUG(1, ("No kerberos support\n"));
  • vendor/current/source3/utils/net_rpc.c

    r740 r746  
    49034903}
    49044904
    4905 struct share_list {
    4906         int num_shares;
    4907         char **shares;
    4908 };
    4909 
    4910 static void collect_share(const char *name, uint32 m,
    4911                           const char *comment, void *state)
    4912 {
    4913         struct share_list *share_list = (struct share_list *)state;
    4914 
    4915         if (m != STYPE_DISKTREE)
    4916                 return;
    4917 
    4918         share_list->num_shares += 1;
    4919         share_list->shares = SMB_REALLOC_ARRAY(share_list->shares, char *, share_list->num_shares);
    4920         if (!share_list->shares) {
    4921                 share_list->num_shares = 0;
    4922                 return;
    4923         }
    4924         share_list->shares[share_list->num_shares-1] = SMB_STRDUP(name);
    4925 }
    4926 
    49274905/**
    49284906 * List shares on a remote RPC server, including the security descriptors.
     
    49504928                                                const char **argv)
    49514929{
    4952         int ret;
    49534930        bool r;
    4954         uint32 i;
    49554931        FILE *f;
     4932        NTSTATUS nt_status = NT_STATUS_OK;
     4933        uint32_t total_entries = 0;
     4934        uint32_t resume_handle = 0;
     4935        uint32_t preferred_len = 0xffffffff;
     4936        uint32_t i;
     4937        struct dcerpc_binding_handle *b = NULL;
     4938        struct srvsvc_NetShareInfoCtr info_ctr;
     4939        struct srvsvc_NetShareCtr1 ctr1;
     4940        WERROR result;
    49564941
    49574942        struct user_token *tokens = NULL;
    49584943        int num_tokens = 0;
    4959 
    4960         struct share_list share_list;
    49614944
    49624945        if (argc == 0) {
     
    49844967                collect_alias_memberships(&tokens[i].token);
    49854968
    4986         share_list.num_shares = 0;
    4987         share_list.shares = NULL;
    4988 
    4989         ret = cli_RNetShareEnum(cli, collect_share, &share_list);
    4990 
    4991         if (ret == -1) {
    4992                 DEBUG(0, ("Error returning browse list: %s\n",
    4993                           cli_errstr(cli)));
    4994                 goto done;
    4995         }
    4996 
    4997         for (i = 0; i < share_list.num_shares; i++) {
    4998                 char *netname = share_list.shares[i];
    4999 
    5000                 if (netname[strlen(netname)-1] == '$')
     4969        ZERO_STRUCT(info_ctr);
     4970        ZERO_STRUCT(ctr1);
     4971
     4972        info_ctr.level = 1;
     4973        info_ctr.ctr.ctr1 = &ctr1;
     4974
     4975        b = pipe_hnd->binding_handle;
     4976
     4977        /* Issue the NetShareEnum RPC call and retrieve the response */
     4978        nt_status = dcerpc_srvsvc_NetShareEnumAll(b,
     4979                                        talloc_tos(),
     4980                                        pipe_hnd->desthost,
     4981                                        &info_ctr,
     4982                                        preferred_len,
     4983                                        &total_entries,
     4984                                        &resume_handle,
     4985                                        &result);
     4986
     4987        /* Was it successful? */
     4988        if (!NT_STATUS_IS_OK(nt_status)) {
     4989                /*  Nope.  Go clean up. */
     4990                goto done;
     4991        }
     4992
     4993        if (!W_ERROR_IS_OK(result)) {
     4994                /*  Nope.  Go clean up. */
     4995                nt_status = werror_to_ntstatus(result);
     4996                goto done;
     4997        }
     4998
     4999        if (total_entries == 0) {
     5000                goto done;
     5001        }
     5002
     5003        /* For each returned entry... */
     5004        for (i = 0; i < info_ctr.ctr.ctr1->count; i++) {
     5005                const char *netname = info_ctr.ctr.ctr1->array[i].name;
     5006
     5007                if (info_ctr.ctr.ctr1->array[i].type != STYPE_DISKTREE) {
    50015008                        continue;
     5009                }
    50025010
    50035011                d_printf("%s\n", netname);
     
    50115019        }
    50125020        SAFE_FREE(tokens);
    5013         SAFE_FREE(share_list.shares);
    5014 
    5015         return NT_STATUS_OK;
     5021
     5022        return nt_status;
    50165023}
    50175024
Note: See TracChangeset for help on using the changeset viewer.