From: Günther Deschner Date: Tue, 22 Jan 2013 14:57:22 +0000 (+0100) Subject: s3-rpcclient: decode OsVersion{Ex} binary blobs when displaying printerdata. X-Git-Url: http://git.samba.org/?a=commitdiff_plain;h=aab232cb2ea91b3a6c636f4ea47ca9f872848f3f;p=obnox%2Fsamba%2Fsamba-obnox.git s3-rpcclient: decode OsVersion{Ex} binary blobs when displaying printerdata. Guenther Signed-off-by: Günther Deschner Reviewed-by: Andreas Schneider --- diff --git a/source3/rpcclient/cmd_spoolss.c b/source3/rpcclient/cmd_spoolss.c index ced224b4d73..35fbb9b8af9 100644 --- a/source3/rpcclient/cmd_spoolss.c +++ b/source3/rpcclient/cmd_spoolss.c @@ -25,6 +25,7 @@ #include "includes.h" #include "rpcclient.h" #include "../librpc/gen_ndr/ndr_spoolss_c.h" +#include "../librpc/gen_ndr/ndr_spoolss.h" #include "rpc_client/cli_spoolss.h" #include "rpc_client/init_spoolss.h" #include "nt_printing.h" @@ -831,6 +832,7 @@ static void display_printer_data(const char *v, union spoolss_PrinterData r; DATA_BLOB blob = data_blob_const(data, length); WERROR result; + enum ndr_err_code ndr_err; result = pull_spoolss_PrinterData(talloc_tos(), &blob, &r, type); if (!W_ERROR_IS_OK(result)) { @@ -861,6 +863,25 @@ static void display_printer_data(const char *v, } TALLOC_FREE(hex); putchar('\n'); + + if (strequal(v, "OsVersion")) { + struct spoolss_OSVersion os; + ndr_err = ndr_pull_struct_blob(&blob, talloc_tos(), &os, + (ndr_pull_flags_fn_t)ndr_pull_spoolss_OSVersion); + if (NDR_ERR_CODE_IS_SUCCESS(ndr_err)) { + printf("%s: OsVersion:\n", v); + NDR_PRINT_DEBUG(spoolss_OSVersion, &os); + } + } + if (strequal(v, "OsVersionEx")) { + struct spoolss_OSVersionEx os; + ndr_err = ndr_pull_struct_blob(&blob, talloc_tos(), &os, + (ndr_pull_flags_fn_t)ndr_pull_spoolss_OSVersionEx); + if (NDR_ERR_CODE_IS_SUCCESS(ndr_err)) { + printf("%s: OsVersionEx:\n", v); + NDR_PRINT_DEBUG(spoolss_OSVersionEx, &os); + } + } break; } case REG_MULTI_SZ: