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

Samba Server: updated vendor to 3.6.9

File:
1 edited

Legend:

Unmodified
Added
Removed
  • vendor/current/libcli/cldap/cldap.c

    r740 r746  
    274274        DLIST_REMOVE(c->searches.list, search);
    275275
    276         if (!cldap_recvfrom_setup(c)) {
    277                 goto nomem;
    278         }
     276        cldap_recvfrom_setup(c);
    279277
    280278        tevent_req_done(search->req);
    281         talloc_free(in);
    282279        return true;
    283280
     
    287284        status = map_nt_error_from_unix(in->recv_errno);
    288285nterror:
     286        TALLOC_FREE(in);
    289287        /* in connected mode the first pending search gets the error */
    290288        if (!c->connected) {
     
    295293                goto done;
    296294        }
     295        cldap_recvfrom_setup(c);
    297296        tevent_req_nterror(c->searches.list->req, status);
     297        return true;
    298298done:
    299         talloc_free(in);
     299        TALLOC_FREE(in);
    300300        return false;
    301301}
     
    314314        NTSTATUS status;
    315315        int ret;
     316        const char *fam = NULL;
     317
     318        if (local_addr == NULL && remote_addr == NULL) {
     319                return NT_STATUS_INVALID_PARAMETER_MIX;
     320        }
     321
     322        if (remote_addr) {
     323                bool is_ipv4;
     324                bool is_ipv6;
     325
     326                is_ipv4 = tsocket_address_is_inet(remote_addr, "ipv4");
     327                is_ipv6 = tsocket_address_is_inet(remote_addr, "ipv6");
     328
     329                if (is_ipv4) {
     330                        fam = "ipv4";
     331                } else if (is_ipv6) {
     332                        fam = "ipv6";
     333                } else {
     334                        return NT_STATUS_INVALID_ADDRESS;
     335                }
     336        }
    316337
    317338        c = talloc_zero(mem_ctx, struct cldap_socket);
     
    330351
    331352        if (!local_addr) {
    332                 /* we use ipv4 here instead of ip, as otherwise we end
    333                    up with a PF_INET6 socket, and sendto() for ipv4
    334                    addresses will fail. That breaks cldap name
    335                    resolution for winbind to IPv4 hosts. */
    336                 ret = tsocket_address_inet_from_strings(c, "ipv4",
     353                /*
     354                 * Here we know the address family of the remote address.
     355                 */
     356                if (fam == NULL) {
     357                        return NT_STATUS_INVALID_PARAMETER_MIX;
     358                }
     359
     360                ret = tsocket_address_inet_from_strings(c, fam,
    337361                                                        NULL, 0,
    338362                                                        &any);
Note: See TracChangeset for help on using the changeset viewer.