static WERROR cmd_info(struct regshell_context *ctx, int argc, char **argv) { struct security_descriptor *sec_desc = NULL; time_t last_mod; WERROR error; const char *classname = NULL; NTTIME last_change; uint32_t max_subkeynamelen; uint32_t max_valnamelen; uint32_t max_valbufsize; uint32_t num_subkeys; uint32_t num_values; error = reg_key_get_info(ctx, ctx->current, &classname, &num_subkeys, &num_values, &last_change, &max_subkeynamelen, &max_valnamelen, &max_valbufsize); if (!W_ERROR_IS_OK(error)) { printf("Error getting key info: %s\n", win_errstr(error)); return error; } printf("Name: %s\n", strchr(ctx->path, '\\')?strrchr(ctx->path, '\\')+1: ctx->path); printf("Full path: %s\n", ctx->path); if (classname != NULL) printf("Key Class: %s\n", classname); last_mod = nt_time_to_unix(last_change); printf("Time Last Modified: %s", ctime(&last_mod)); printf("Number of subkeys: %d\n", num_subkeys); printf("Number of values: %d\n", num_values); if (max_valnamelen > 0) printf("Maximum value name length: %d\n", max_valnamelen); if (max_valbufsize > 0) printf("Maximum value data length: %d\n", max_valbufsize); if (max_subkeynamelen > 0) printf("Maximum sub key name length: %d\n", max_subkeynamelen); error = reg_get_sec_desc(ctx, ctx->current, &sec_desc); if (!W_ERROR_IS_OK(error)) { printf("Error getting security descriptor: %s\n", win_errstr(error)); return WERR_OK; } ndr_print_debug((ndr_print_fn_t)ndr_print_security_descriptor, "Security", sec_desc); talloc_free(sec_desc); return WERR_OK; }
static bool ntprinting_printer_latin1_check(struct torture_context *tctx) { enum ndr_err_code ndr_err; struct ntprinting_printer r; DATA_BLOB blob; bool ok; ok = lpcfg_do_global_parameter(tctx->lp_ctx, "dos charset", "CP1252"); if (!ok) { torture_comment(tctx, "Could not set 'dos charset' option.\n"); return false; } reload_charcnv(tctx->lp_ctx); ZERO_STRUCT(r); r.info.string_flags = LIBNDR_FLAG_STR_ASCII; blob = data_blob_const(ntprinting_printer_data_latin1, sizeof(ntprinting_printer_data_latin1)); ndr_err = ndr_pull_struct_blob(&blob, tctx, &r, (ndr_pull_flags_fn_t)ndr_pull_ntprinting_printer); torture_assert_ndr_success(tctx, ndr_err, "ndr_pull_ntprinting_printer"); #if 0 ndr_print_debug((ndr_print_fn_t) ndr_print_ntprinting_printer, "ntprinter", &r); #endif torture_assert_str_equal(tctx, r.info.printername, "S0BC", "printername"); /* latin1 encoding check */ torture_assert_str_equal(tctx, r.info.comment, "\" SALA DA RECEPÇÃO DA CONSTRUÇÃO - RAND0 LOCATIO", "comment"); torture_assert_str_equal(tctx, r.info.location, "UTGCA ", "location"); return true; }