Ignore:
Timestamp:
Nov 29, 2012, 2:06:31 PM (13 years ago)
Author:
Silvan Scherrer
Message:

Samba Server: updated trunk to 3.6.9 2nd part

Location:
trunk/server
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/server

  • trunk/server/librpc/ndr/ndr_string.c

    r745 r752  
    695695}
    696696
     697_PUBLIC_ enum ndr_err_code ndr_pull_charset_to_null(struct ndr_pull *ndr, int ndr_flags, const char **var, uint32_t length, uint8_t byte_mul, charset_t chset)
     698{
     699        size_t converted_size;
     700        uint32_t str_len;
     701
     702        if (length == 0) {
     703                *var = talloc_strdup(ndr->current_mem_ctx, "");
     704                return NDR_ERR_SUCCESS;
     705        }
     706
     707        if (NDR_BE(ndr) && chset == CH_UTF16) {
     708                chset = CH_UTF16BE;
     709        }
     710
     711        NDR_PULL_NEED_BYTES(ndr, length*byte_mul);
     712
     713        str_len = ndr_string_length(ndr->data+ndr->offset, byte_mul);
     714        str_len = MIN(str_len, length); /* overrun protection */
     715
     716        if (!convert_string_talloc(ndr->current_mem_ctx, chset, CH_UNIX,
     717                                   ndr->data+ndr->offset, str_len*byte_mul,
     718                                   discard_const_p(void *, var),
     719                                   &converted_size, false))
     720        {
     721                return ndr_pull_error(ndr, NDR_ERR_CHARCNV,
     722                                      "Bad character conversion");
     723        }
     724        NDR_CHECK(ndr_pull_advance(ndr, length*byte_mul));
     725
     726        return NDR_ERR_SUCCESS;
     727}
     728
    697729_PUBLIC_ enum ndr_err_code ndr_push_charset(struct ndr_push *ndr, int ndr_flags, const char *var, uint32_t length, uint8_t byte_mul, charset_t chset)
    698730{
Note: See TracChangeset for help on using the changeset viewer.