Changeset 752 for trunk/server/librpc/ndr/ndr_string.c
- Timestamp:
- Nov 29, 2012, 2:06:31 PM (13 years ago)
- Location:
- trunk/server
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/server
- Property svn:mergeinfo changed
/vendor/current merged: 746,748
- Property svn:mergeinfo changed
-
trunk/server/librpc/ndr/ndr_string.c
r745 r752 695 695 } 696 696 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 697 729 _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) 698 730 {
Note:
See TracChangeset
for help on using the changeset viewer.