Changeset 429 for trunk/server/librpc/ndr
- Timestamp:
- Apr 9, 2010, 3:51:41 PM (15 years ago)
- Location:
- trunk/server
- Files:
-
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/server
-
Property svn:mergeinfo
set to
/vendor/3.5.2 merged eligible /vendor/current merged eligible
-
Property svn:mergeinfo
set to
-
trunk/server/librpc/ndr/ndr_spoolss_buf.c
r414 r429 558 558 } 559 559 560 /*561 spoolss_GetPrinterData562 */563 enum ndr_err_code ndr_push_spoolss_GetPrinterData(struct ndr_push *ndr, int flags, const struct spoolss_GetPrinterData *r)564 {565 struct _spoolss_GetPrinterData _r;566 if (flags & NDR_IN) {567 _r.in.handle = r->in.handle;568 _r.in.value_name= r->in.value_name;569 _r.in.offered = r->in.offered;570 NDR_CHECK(ndr_push__spoolss_GetPrinterData(ndr, flags, &_r));571 }572 if (flags & NDR_OUT) {573 struct ndr_push *_ndr_info;574 DATA_BLOB blob = data_blob(NULL, 0);575 _r.in.handle = r->in.handle;576 _r.in.value_name= r->in.value_name;577 _r.in.offered = r->in.offered;578 _r.out.type = r->out.type;579 _r.out.data = &blob;580 _r.out.needed = r->out.needed;581 _r.out.result = r->out.result;582 {583 struct __spoolss_GetPrinterData __r;584 DATA_BLOB _blob;585 _ndr_info = ndr_push_init_ctx(ndr, ndr->iconv_convenience);586 NDR_ERR_HAVE_NO_MEMORY(_ndr_info);587 _ndr_info->flags= ndr->flags;588 __r.in.type = *r->out.type;589 __r.out.data = r->out.data;590 NDR_CHECK(ndr_push___spoolss_GetPrinterData(_ndr_info, flags, &__r));591 if (r->in.offered > _ndr_info->offset) {592 uint32_t _padding_len = r->in.offered - _ndr_info->offset;593 NDR_CHECK(ndr_push_zero(_ndr_info, _padding_len));594 }595 _blob = ndr_push_blob(_ndr_info);596 _r.out.data = &_blob;597 }598 NDR_CHECK(ndr_push__spoolss_GetPrinterData(ndr, flags, &_r));599 }600 return NDR_ERR_SUCCESS;601 }602 603 enum ndr_err_code ndr_pull_spoolss_GetPrinterData(struct ndr_pull *ndr, int flags, struct spoolss_GetPrinterData *r)604 {605 struct _spoolss_GetPrinterData _r;606 if (flags & NDR_IN) {607 DATA_BLOB blob = data_blob(NULL,0);608 ZERO_STRUCT(r->out);609 610 _r.in.handle = r->in.handle;611 _r.in.value_name= r->in.value_name;612 _r.in.offered = r->in.offered;613 _r.out.type = r->out.type;614 _r.out.data = &blob;615 _r.out.needed = r->out.needed;616 NDR_CHECK(ndr_pull__spoolss_GetPrinterData(ndr, flags, &_r));617 r->in.handle = _r.in.handle;618 r->in.value_name= _r.in.value_name;619 r->in.offered = _r.in.offered;620 r->out.needed = _r.out.needed;621 }622 if (flags & NDR_OUT) {623 DATA_BLOB blob = data_blob_talloc(ndr,NULL,0);624 _r.in.handle = r->in.handle;625 _r.in.value_name= r->in.value_name;626 _r.in.offered = r->in.offered;627 _r.out.type = r->out.type;628 _r.out.data = &blob;629 _r.out.needed = r->out.needed;630 _r.out.result = r->out.result;631 NDR_CHECK(ndr_pull__spoolss_GetPrinterData(ndr, flags, &_r));632 r->out.type = _r.out.type;633 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {634 NDR_PULL_ALLOC(ndr, r->out.data);635 }636 ZERO_STRUCTP(r->out.data);637 r->out.needed = _r.out.needed;638 r->out.result = _r.out.result;639 if (_r.out.data && _r.out.data->length != r->in.offered) {640 return ndr_pull_error(ndr, NDR_ERR_BUFSIZE,641 "SPOOLSS Buffer: r->in.offered[%u] doesn't match length of out buffer[%u]",642 (unsigned)r->in.offered, (unsigned)_r.out.data->length);643 }644 if (_r.out.data && _r.out.data->length > 0 && *r->out.needed <= _r.out.data->length) {645 struct __spoolss_GetPrinterData __r;646 struct ndr_pull *_ndr_data = ndr_pull_init_blob(_r.out.data, ndr, ndr->iconv_convenience);647 NDR_ERR_HAVE_NO_MEMORY(_ndr_data);648 _ndr_data->flags= ndr->flags;649 __r.in.type = *r->out.type;650 __r.out.data = r->out.data;651 NDR_CHECK(ndr_pull___spoolss_GetPrinterData(_ndr_data, flags, &__r));652 r->out.data = __r.out.data;653 } else {654 *r->out.type = REG_NONE;655 }656 }657 return NDR_ERR_SUCCESS;658 }659 660 /*661 spoolss_SetPrinterData662 */663 enum ndr_err_code ndr_push_spoolss_SetPrinterData(struct ndr_push *ndr, int flags, const struct spoolss_SetPrinterData *r)664 {665 struct _spoolss_SetPrinterData _r;666 if (flags & NDR_IN) {667 struct ndr_push *_ndr_data;668 struct __spoolss_SetPrinterData __r;669 DATA_BLOB _data_blob_data;670 671 _ndr_data = ndr_push_init_ctx(ndr, ndr->iconv_convenience);672 NDR_ERR_HAVE_NO_MEMORY(_ndr_data);673 _ndr_data->flags= ndr->flags;674 675 __r.in.type = r->in.type;676 __r.out.data = discard_const_p(union spoolss_PrinterData, &r->in.data);677 NDR_CHECK(ndr_push___spoolss_SetPrinterData(_ndr_data, NDR_OUT, &__r));678 _data_blob_data = ndr_push_blob(_ndr_data);679 680 _r.in.handle = r->in.handle;681 _r.in.value_name= r->in.value_name;682 _r.in.type = r->in.type;683 _r.in.data = _data_blob_data;684 _r.in._offered = _data_blob_data.length;685 _r.out.result = r->out.result;686 NDR_CHECK(ndr_push__spoolss_SetPrinterData(ndr, flags, &_r));687 }688 if (flags & NDR_OUT) {689 _r.in.handle = r->in.handle;690 _r.in.value_name= r->in.value_name;691 _r.in.type = r->in.type;692 _r.in.data = data_blob(NULL,0),693 _r.in._offered = r->in._offered;694 _r.out.result = r->out.result;695 NDR_CHECK(ndr_push__spoolss_SetPrinterData(ndr, flags, &_r));696 }697 return NDR_ERR_SUCCESS;698 }699 700 /*701 spoolss_GetPrinterDataEx702 */703 enum ndr_err_code ndr_push_spoolss_GetPrinterDataEx(struct ndr_push *ndr, int flags, const struct spoolss_GetPrinterDataEx *r)704 {705 struct _spoolss_GetPrinterDataEx _r;706 if (flags & NDR_IN) {707 _r.in.handle = r->in.handle;708 _r.in.key_name = r->in.key_name;709 _r.in.value_name= r->in.value_name;710 _r.in.offered = r->in.offered;711 NDR_CHECK(ndr_push__spoolss_GetPrinterDataEx(ndr, flags, &_r));712 }713 if (flags & NDR_OUT) {714 struct ndr_push *_ndr_info;715 DATA_BLOB blob = data_blob(NULL, 0);716 _r.in.handle = r->in.handle;717 _r.in.key_name = r->in.key_name;718 _r.in.value_name= r->in.value_name;719 _r.in.offered = r->in.offered;720 _r.out.type = r->out.type;721 _r.out.data = &blob;722 _r.out.needed = r->out.needed;723 _r.out.result = r->out.result;724 {725 struct __spoolss_GetPrinterDataEx __r;726 DATA_BLOB _blob;727 _ndr_info = ndr_push_init_ctx(ndr, ndr->iconv_convenience);728 NDR_ERR_HAVE_NO_MEMORY(_ndr_info);729 _ndr_info->flags= ndr->flags;730 __r.in.type = *r->out.type;731 __r.out.data = r->out.data;732 NDR_CHECK(ndr_push___spoolss_GetPrinterDataEx(_ndr_info, flags, &__r));733 if (r->in.offered > _ndr_info->offset) {734 uint32_t _padding_len = r->in.offered - _ndr_info->offset;735 NDR_CHECK(ndr_push_zero(_ndr_info, _padding_len));736 }737 _blob = ndr_push_blob(_ndr_info);738 _r.out.data = &_blob;739 }740 NDR_CHECK(ndr_push__spoolss_GetPrinterDataEx(ndr, flags, &_r));741 }742 return NDR_ERR_SUCCESS;743 }744 745 enum ndr_err_code ndr_pull_spoolss_GetPrinterDataEx(struct ndr_pull *ndr, int flags, struct spoolss_GetPrinterDataEx *r)746 {747 struct _spoolss_GetPrinterDataEx _r;748 if (flags & NDR_IN) {749 DATA_BLOB blob = data_blob(NULL,0);750 ZERO_STRUCT(r->out);751 752 _r.in.handle = r->in.handle;753 _r.in.key_name = r->in.key_name;754 _r.in.value_name= r->in.value_name;755 _r.in.offered = r->in.offered;756 _r.out.type = r->out.type;757 _r.out.data = &blob;758 _r.out.needed = r->out.needed;759 NDR_CHECK(ndr_pull__spoolss_GetPrinterDataEx(ndr, flags, &_r));760 r->in.handle = _r.in.handle;761 r->in.key_name = _r.in.key_name;762 r->in.value_name= _r.in.value_name;763 r->in.offered = _r.in.offered;764 r->out.needed = _r.out.needed;765 }766 if (flags & NDR_OUT) {767 DATA_BLOB blob = data_blob_talloc(ndr,NULL,0);768 _r.in.handle = r->in.handle;769 _r.in.key_name = r->in.key_name;770 _r.in.value_name= r->in.value_name;771 _r.in.offered = r->in.offered;772 _r.out.type = r->out.type;773 _r.out.data = &blob;774 _r.out.needed = r->out.needed;775 _r.out.result = r->out.result;776 NDR_CHECK(ndr_pull__spoolss_GetPrinterDataEx(ndr, flags, &_r));777 r->out.type = _r.out.type;778 if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {779 NDR_PULL_ALLOC(ndr, r->out.data);780 }781 ZERO_STRUCTP(r->out.data);782 r->out.needed = _r.out.needed;783 r->out.result = _r.out.result;784 if (_r.out.data && _r.out.data->length != r->in.offered) {785 return ndr_pull_error(ndr, NDR_ERR_BUFSIZE,786 "SPOOLSS Buffer: r->in.offered[%u] doesn't match length of out buffer[%u]",787 (unsigned)r->in.offered, (unsigned)_r.out.data->length);788 }789 if (_r.out.data && _r.out.data->length > 0 && *r->out.needed <= _r.out.data->length) {790 struct __spoolss_GetPrinterDataEx __r;791 struct ndr_pull *_ndr_data = ndr_pull_init_blob(_r.out.data, ndr, ndr->iconv_convenience);792 NDR_ERR_HAVE_NO_MEMORY(_ndr_data);793 _ndr_data->flags= ndr->flags;794 __r.in.type = *r->out.type;795 __r.out.data = r->out.data;796 NDR_CHECK(ndr_pull___spoolss_GetPrinterDataEx(_ndr_data, flags, &__r));797 r->out.data = __r.out.data;798 } else {799 *r->out.type = REG_NONE;800 }801 }802 return NDR_ERR_SUCCESS;803 }804 805 /*806 spoolss_SetPrinterDataEx807 */808 enum ndr_err_code ndr_push_spoolss_SetPrinterDataEx(struct ndr_push *ndr, int flags, const struct spoolss_SetPrinterDataEx *r)809 {810 struct _spoolss_SetPrinterDataEx _r;811 if (flags & NDR_IN) {812 struct ndr_push *_ndr_data;813 struct __spoolss_SetPrinterDataEx __r;814 DATA_BLOB _data_blob_data;815 816 _ndr_data = ndr_push_init_ctx(ndr, ndr->iconv_convenience);817 NDR_ERR_HAVE_NO_MEMORY(_ndr_data);818 _ndr_data->flags= ndr->flags;819 820 __r.in.type = r->in.type;821 __r.out.data = discard_const_p(union spoolss_PrinterData, &r->in.data);822 NDR_CHECK(ndr_push___spoolss_SetPrinterDataEx(_ndr_data, NDR_OUT, &__r));823 _data_blob_data = ndr_push_blob(_ndr_data);824 825 _r.in.handle = r->in.handle;826 _r.in.key_name = r->in.key_name;827 _r.in.value_name= r->in.value_name;828 _r.in.type = r->in.type;829 _r.in.data = _data_blob_data;830 _r.in._offered = _data_blob_data.length;831 _r.out.result = r->out.result;832 NDR_CHECK(ndr_push__spoolss_SetPrinterDataEx(ndr, flags, &_r));833 }834 if (flags & NDR_OUT) {835 _r.in.handle = r->in.handle;836 _r.in.key_name = r->in.key_name;837 _r.in.value_name= r->in.value_name;838 _r.in.type = r->in.type;839 _r.in.data = data_blob(NULL,0),840 _r.in._offered = r->in._offered;841 _r.out.result = r->out.result;842 NDR_CHECK(ndr_push__spoolss_SetPrinterDataEx(ndr, flags, &_r));843 }844 return NDR_ERR_SUCCESS;845 }846 847 560 uint32_t _ndr_size_spoolss_DeviceMode(struct spoolss_DeviceMode *devmode, struct smb_iconv_convenience *ic, uint32_t flags) 848 561 { -
trunk/server/librpc/ndr/ndr_spoolss_buf.h
r414 r429 43 43 uint32_t ndr_size_spoolss_EnumPrinterDataEx_info(TALLOC_CTX *mem_ctx, struct smb_iconv_convenience *iconv_convenience, 44 44 uint32_t count, struct spoolss_PrinterEnumValues *info); 45 enum ndr_err_code ndr_push_spoolss_GetPrinterData(struct ndr_push *ndr, int flags, const struct spoolss_GetPrinterData *r);46 enum ndr_err_code ndr_pull_spoolss_GetPrinterData(struct ndr_pull *ndr, int flags, struct spoolss_GetPrinterData *r);47 enum ndr_err_code ndr_push_spoolss_SetPrinterData(struct ndr_push *ndr, int flags, const struct spoolss_SetPrinterData *r);48 enum ndr_err_code ndr_push_spoolss_GetPrinterDataEx(struct ndr_push *ndr, int flags, const struct spoolss_GetPrinterDataEx *r);49 enum ndr_err_code ndr_pull_spoolss_GetPrinterDataEx(struct ndr_pull *ndr, int flags, struct spoolss_GetPrinterDataEx *r);50 enum ndr_err_code ndr_push_spoolss_SetPrinterDataEx(struct ndr_push *ndr, int flags, const struct spoolss_SetPrinterDataEx *r);51 45 uint32_t _ndr_size_spoolss_DeviceMode(struct spoolss_DeviceMode *devmode, struct smb_iconv_convenience *ic, uint32_t flags); 52 46 size_t ndr_size_spoolss_StringArray(const struct spoolss_StringArray *r, struct smb_iconv_convenience *ic, int flags);
Note:
See TracChangeset
for help on using the changeset viewer.