r_u->switch_value = 0;
if (strequal(share_name,"IPC$") || strequal(share_name,"ADMIN$"))
- return NT_STATUS_BAD_NETWORK_NAME;
+ return ERROR_ACCESS_DENIED;
snum = find_service(share_name);
/* Does this share exist ? */
if (snum < 0)
- return NT_STATUS_BAD_NETWORK_NAME;
+ return ERRnosuchshare;
+
+ /* No change to printer shares. */
+ if (lp_print_ok(snum))
+ return ERROR_ACCESS_DENIED;
get_current_user(&user,p);
get_current_user(&user,p);
- if (user.uid != 0)
+ if (user.uid != 0) {
+ DEBUG(10,("_srv_net_share_add: uid != 0. Access denied.\n"));
return ERROR_ACCESS_DENIED;
+ }
- if (!lp_add_share_cmd() || !*lp_add_share_cmd())
+ if (!lp_add_share_cmd() || !*lp_add_share_cmd()) {
+ DEBUG(10,("_srv_net_share_add: No add share command\n"));
return ERROR_ACCESS_DENIED;
+ }
switch (q_u->info_level) {
case 1:
/* Share already exists. */
if (snum >= 0)
- return NT_STATUS_BAD_NETWORK_NAME;
+ return ERRfilexists;
/* We can only add disk shares. */
if (type != STYPE_DISKTREE)
unistr2_to_ascii(share_name, &q_u->uni_share_name, sizeof(share_name));
+ if (strequal(share_name,"IPC$") || strequal(share_name,"ADMIN$"))
+ return ERROR_ACCESS_DENIED;
+
snum = find_service(share_name);
if (snum < 0)
- return NT_STATUS_BAD_NETWORK_NAME;
+ return ERRnosuchshare;
+
+ /* No change to printer shares. */
+ if (lp_print_ok(snum))
+ return ERROR_ACCESS_DENIED;
get_current_user(&user,p);