1
0
mirror of https://github.com/samba-team/samba.git synced 2025-02-02 09:47:23 +03:00

Working on EnumPrinterData. There appears to be an alignment problem

after reading a non-empty DATA_BLOB in the reply.
(This used to be commit 3165bf532f6b5a074f20f38a9af56325eedbb1c2)
This commit is contained in:
Tim Potter 2003-11-18 05:54:14 +00:00
parent 06d0f61aa4
commit 30daed2f7c
2 changed files with 49 additions and 5 deletions

View File

@ -533,16 +533,15 @@
/******************/
/* Function: 0x48 */
NTSTATUS spoolss_EnumPrinterData(
WERROR spoolss_EnumPrinterData(
[in,ref] policy_handle *handle,
[in] uint32 enum_index,
[in] uint32 value_offered,
[out] uint32 value_len,
[out] unistr *value_name,
[out] DATA_BLOB value,
[out] uint32 value_needed,
[out] uint32 printerdata_type,
[in,out] DATA_BLOB *buffer,
[in,out,ref] uint32 *buf_size
[out] DATA_BLOB data,
[in,out,ref] uint32 *data_size
);
/******************/

View File

@ -87,6 +87,47 @@ BOOL test_ClosePrinter(struct dcerpc_pipe *p, TALLOC_CTX *mem_ctx,
return True;
}
BOOL test_EnumPrinterData(struct dcerpc_pipe *p, TALLOC_CTX *mem_ctx,
struct policy_handle *handle)
{
NTSTATUS status;
struct spoolss_EnumPrinterData r;
r.in.handle = handle;
r.in.enum_index = 0;
do {
uint32 data_size;
r.in.value_offered = 0;
data_size = 0;
r.in.data_size = &data_size;
r.out.data_size = &data_size;
printf("Testing EnumPrinterData\n");
status = dcerpc_spoolss_EnumPrinterData(p, mem_ctx, &r);
if (!NT_STATUS_IS_OK(status)) {
printf("EnumPrinterData failed - %s\n", nt_errstr(status));
return False;
}
r.in.value_offered = r.out.value_needed;
status = dcerpc_spoolss_EnumPrinterData(p, mem_ctx, &r);
if (!NT_STATUS_IS_OK(status)) {
printf("EnumPrinterData failed - %s\n", nt_errstr(status));
return False;
}
r.in.enum_index++;
} while (1);
return True;
}
static BOOL test_OpenPrinter(struct dcerpc_pipe *p, TALLOC_CTX *mem_ctx,
const char *name)
{
@ -170,6 +211,10 @@ static BOOL test_OpenPrinterEx(struct dcerpc_pipe *p, TALLOC_CTX *mem_ctx,
ret = False;
}
if (!test_EnumPrinterData(p, mem_ctx, &handle)) {
ret = False;
}
if (!test_ClosePrinter(p, mem_ctx, &handle)) {
ret = False;
}