init_unistr2(&info2->info_2_str.uni_passwd, s, UNI_STR_TERMINATE);
}
break;
+ /* adding info-level 502 here */
+ case 502:
+ ctr->share.info502 = (SRV_SHARE_INFO_502 *)talloc(
+ mem_ctx, sizeof(SRV_SHARE_INFO_502) * ctr->num_entries);
+
+ memset(ctr->share.info502, 0, sizeof(SRV_SHARE_INFO_502));
+
+ for (i = 0; i < ctr->num_entries; i++) {
+ SRV_SHARE_INFO_502 *info502 = &ctr->share.info502[i];
+ char *s;
+
+ /* Copy pointer crap */
+ memcpy(&info502->info_502, &r.ctr.share.info502[i].info_502,
+ sizeof(SH_INFO_502));
+
+ /* Duplicate strings */
+
+ s = unistr2_tdup(mem_ctx, &r.ctr.share.info502[i].info_502_str.uni_netname);
+ if (s)
+ init_unistr2(&info502->info_502_str.uni_netname, s, UNI_STR_TERMINATE);
+
+ s = unistr2_tdup(mem_ctx, &r.ctr.share.info502[i].info_502_str.uni_remark);
+ if (s)
+ init_unistr2(&info502->info_502_str.uni_remark, s, UNI_STR_TERMINATE);
+
+ s = unistr2_tdup(mem_ctx, &r.ctr.share.info502[i].info_502_str.uni_path);
+ if (s)
+ init_unistr2(&info502->info_502_str.uni_path, s, UNI_STR_TERMINATE);
+
+ s = unistr2_tdup(mem_ctx, &r.ctr.share.info502[i].info_502_str.uni_passwd);
+ if (s)
+ init_unistr2(&info502->info_502_str.uni_passwd, s, UNI_STR_TERMINATE);
+
+ info502->info_502_str.sd = dup_sec_desc(mem_ctx, r.ctr.share.info502[i].info_502_str.sd);
+ }
+ break;
}
done:
prs_mem_free(&qbuf);
printf("\tpassword:\t%s\n", passwd);
}
+static void display_share_info_502(SRV_SHARE_INFO_502 *info502)
+{
+ fstring netname = "", remark = "", path = "", passwd = "";
+
+ rpcstr_pull_unistr2_fstring(netname, &info502->info_502_str.uni_netname);
+ rpcstr_pull_unistr2_fstring(remark, &info502->info_502_str.uni_remark);
+ rpcstr_pull_unistr2_fstring(path, &info502->info_502_str.uni_path);
+ rpcstr_pull_unistr2_fstring(passwd, &info502->info_502_str.uni_passwd);
+
+ printf("netname: %s\n", netname);
+ printf("\tremark:\t%s\n", remark);
+ printf("\tpath:\t%s\n", path);
+ printf("\tpassword:\t%s\n", passwd);
+
+ if (info502->info_502_str.sd)
+ display_sec_desc(info502->info_502_str.sd);
+
+}
+
static WERROR cmd_srvsvc_net_share_enum(struct cli_state *cli,
TALLOC_CTX *mem_ctx,
int argc, const char **argv)
for (i = 0; i < ctr.num_entries; i++)
display_share_info_2(&ctr.share.info2[i]);
break;
+ case 502:
+ for (i = 0; i < ctr.num_entries; i++)
+ display_share_info_502(&ctr.share.info502[i]);
+ break;
default:
printf("unsupported info level %d\n", info_level);
break;