Ignore:
Timestamp:
Nov 14, 2012, 12:59:34 PM (13 years ago)
Author:
Silvan Scherrer
Message:

Samba Server: update vendor to 3.6.0

File:
1 edited

Legend:

Unmodified
Added
Removed
  • vendor/current/librpc/ndr/uuid.c

    r587 r740  
    2626#include "librpc/gen_ndr/ndr_misc.h"
    2727
     28/**
     29  build a NDR blob from a GUID
     30*/
     31_PUBLIC_ NTSTATUS GUID_to_ndr_blob(const struct GUID *guid, TALLOC_CTX *mem_ctx, DATA_BLOB *b)
     32{
     33        enum ndr_err_code ndr_err;
     34        ndr_err = ndr_push_struct_blob(b, mem_ctx, guid,
     35                                       (ndr_push_flags_fn_t)ndr_push_GUID);
     36        return ndr_map_error2ntstatus(ndr_err);
     37}
     38
    2839
    2940/**
     
    3849        NT_STATUS_HAVE_NO_MEMORY(mem_ctx);
    3950
    40         ndr_err = ndr_pull_struct_blob_all(b, mem_ctx, NULL, guid,
     51        ndr_err = ndr_pull_struct_blob_all(b, mem_ctx, guid,
    4152                                           (ndr_pull_flags_fn_t)ndr_pull_GUID);
    4253        talloc_free(mem_ctx);
     
    6475        }
    6576
    66         if (s->length == 36) {
     77        switch(s->length) {
     78        case 36:
     79        {
    6780                TALLOC_CTX *mem_ctx;
    6881                const char *string;
     
    8093                }
    8194                talloc_free(mem_ctx);
    82 
    83         } else if (s->length == 38) {
     95                break;
     96        }
     97        case 38:
     98        {
    8499                TALLOC_CTX *mem_ctx;
    85100                const char *string;
     
    97112                }
    98113                talloc_free(mem_ctx);
    99 
    100         } else if (s->length == 32) {
     114                break;
     115        }
     116        case 32:
     117        {
    101118                size_t rlen = strhex_to_str((char *)blob16.data, blob16.length,
    102119                                            (const char *)s->data, s->length);
     
    108125                return GUID_from_ndr_blob(s, guid);
    109126        }
    110 
    111         if (s->length == 16) {
     127        case 16:
    112128                return GUID_from_ndr_blob(s, guid);
     129        default:
     130                status = NT_STATUS_INVALID_PARAMETER;
     131                break;
    113132        }
    114133
     
    136155        DATA_BLOB blob = data_blob_string_const(s);
    137156        return GUID_from_data_blob(&blob, guid);
    138         return NT_STATUS_OK;
    139157}
    140158
     
    233251{
    234252        if (u1->time_low != u2->time_low) {
    235                 return u1->time_low - u2->time_low;
     253                return u1->time_low > u2->time_low ? 1 : -1;
    236254        }
    237255
    238256        if (u1->time_mid != u2->time_mid) {
    239                 return u1->time_mid - u2->time_mid;
     257                return u1->time_mid > u2->time_mid ? 1 : -1;
    240258        }
    241259
    242260        if (u1->time_hi_and_version != u2->time_hi_and_version) {
    243                 return u1->time_hi_and_version - u2->time_hi_and_version;
     261                return u1->time_hi_and_version > u2->time_hi_and_version ? 1 : -1;
    244262        }
    245263
    246264        if (u1->clock_seq[0] != u2->clock_seq[0]) {
    247                 return u1->clock_seq[0] - u2->clock_seq[0];
     265                return u1->clock_seq[0] > u2->clock_seq[0] ? 1 : -1;
    248266        }
    249267
    250268        if (u1->clock_seq[1] != u2->clock_seq[1]) {
    251                 return u1->clock_seq[1] - u2->clock_seq[1];
     269                return u1->clock_seq[1] > u2->clock_seq[1] ? 1 : -1;
    252270        }
    253271
     
    283301        char *ret;
    284302        DATA_BLOB guid_blob;
    285         enum ndr_err_code ndr_err;
    286303        TALLOC_CTX *tmp_mem;
     304        NTSTATUS status;
    287305
    288306        tmp_mem = talloc_new(mem_ctx);
     
    290308                return NULL;
    291309        }
    292         ndr_err = ndr_push_struct_blob(&guid_blob, tmp_mem,
    293                                        NULL,
    294                                        guid,
    295                                        (ndr_push_flags_fn_t)ndr_push_GUID);
    296         if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err)) {
     310        status = GUID_to_ndr_blob(guid, tmp_mem, &guid_blob);
     311        if (!NT_STATUS_IS_OK(status)) {
    297312                talloc_free(tmp_mem);
    298313                return NULL;
    299314        }
    300315
    301         ret = data_blob_hex_string(mem_ctx, &guid_blob);
     316        ret = data_blob_hex_string_upper(mem_ctx, &guid_blob);
    302317        talloc_free(tmp_mem);
    303318        return ret;
     
    317332}
    318333
    319 _PUBLIC_ bool policy_handle_empty(struct policy_handle *h)
     334_PUBLIC_ bool policy_handle_empty(const struct policy_handle *h)
    320335{
    321336        return (h->handle_type == 0 && GUID_all_zero(&h->uuid));
    322337}
     338
     339_PUBLIC_ bool is_valid_policy_hnd(const struct policy_handle *hnd)
     340{
     341        return !policy_handle_empty(hnd);
     342}
     343
     344_PUBLIC_ bool policy_handle_equal(const struct policy_handle *hnd1,
     345                                  const struct policy_handle *hnd2)
     346{
     347        if (!hnd1 || !hnd2) {
     348                return false;
     349        }
     350
     351        return (memcmp(hnd1, hnd2, sizeof(*hnd1)) == 0);
     352}
Note: See TracChangeset for help on using the changeset viewer.