summaryrefslogtreecommitdiff
path: root/usr/src/lib/libshare
diff options
context:
space:
mode:
authorjb150015 <none@none>2008-06-02 13:50:26 -0700
committerjb150015 <none@none>2008-06-02 13:50:26 -0700
commit3ad684d66b78e06edd37e2c4fd3b3949f095194b (patch)
treec8a46bd6352a4d612c208b2da5baa3d9817a28e4 /usr/src/lib/libshare
parent25c3d9a2161e0ea7e7d2783b5f991fd797282b63 (diff)
downloadillumos-gate-3ad684d66b78e06edd37e2c4fd3b3949f095194b.tar.gz
6686467 Panic in smb_trans_net_share_enum() while browsing over 200 shares from Mac
6693094 zfs_frlock panic while running stress tests. 6696744 smbd dumped core while joining Windows 2K domain 6698934 ofile state needs to be checked before doing share (i.e. open/deny mode) checks 6705282 configuration changes are not propagated to kernel 6708562 SID filtering breaks trusted domain users --HG-- rename : usr/src/uts/common/fs/smbsrv/smb_share_kdoor_client.c => usr/src/uts/common/fs/smbsrv/smb_kshare.c
Diffstat (limited to 'usr/src/lib/libshare')
-rw-r--r--usr/src/lib/libshare/smb/libshare_smb.c15
-rw-r--r--usr/src/lib/libshare/smb/smb_share_doorclnt.c141
2 files changed, 4 insertions, 152 deletions
diff --git a/usr/src/lib/libshare/smb/libshare_smb.c b/usr/src/lib/libshare/smb/libshare_smb.c
index bec97b7c39..cbbc9297cb 100644
--- a/usr/src/lib/libshare/smb/libshare_smb.c
+++ b/usr/src/lib/libshare/smb/libshare_smb.c
@@ -413,7 +413,6 @@ smb_enable_share(sa_share_t share)
for (resource = sa_get_share_resource(share, NULL);
resource != NULL;
resource = sa_get_next_resource(resource)) {
- sa_optionset_t opts;
bzero(&si, sizeof (lmshare_info_t));
rname = sa_get_resource_attr(resource, "name");
if (rname == NULL) {
@@ -421,11 +420,9 @@ smb_enable_share(sa_share_t share)
return (SA_NO_SUCH_RESOURCE);
}
- opts = sa_get_derived_optionset(resource, SMB_PROTOCOL_NAME, 1);
- smb_build_lmshare_info(rname, path, opts, &si);
+ smb_build_lmshare_info(rname, path, resource, &si);
sa_free_attr_string(rname);
- sa_free_derived_optionset(opts);
if (!iszfs) {
err = lmshrd_add(&si);
} else {
@@ -458,7 +455,6 @@ smb_enable_resource(sa_resource_t resource)
{
char *path;
char *rname;
- sa_optionset_t opts;
sa_share_t share;
lmshare_info_t si;
int ret = SA_OK;
@@ -492,11 +488,9 @@ smb_enable_resource(sa_resource_t resource)
return (SA_NO_SUCH_RESOURCE);
}
- opts = sa_get_derived_optionset(resource, SMB_PROTOCOL_NAME, 1);
- smb_build_lmshare_info(rname, path, opts, &si);
+ smb_build_lmshare_info(rname, path, resource, &si);
sa_free_attr_string(path);
sa_free_attr_string(rname);
- sa_free_derived_optionset(opts);
/*
* Attempt to add the share. Any error that occurs if it was
@@ -595,7 +589,6 @@ smb_resource_changed(sa_resource_t resource)
lmshare_info_t si;
lmshare_info_t new_si;
char *rname, *path;
- sa_optionset_t opts;
sa_share_t share;
rname = sa_get_resource_attr(resource, "name");
@@ -627,9 +620,7 @@ smb_resource_changed(sa_resource_t resource)
return (SA_CONFIG_ERR);
}
- opts = sa_get_derived_optionset(resource, SMB_PROTOCOL_NAME, 1);
- smb_build_lmshare_info(rname, path, opts, &new_si);
- sa_free_derived_optionset(opts);
+ smb_build_lmshare_info(rname, path, resource, &new_si);
sa_free_attr_string(path);
sa_free_attr_string(rname);
diff --git a/usr/src/lib/libshare/smb/smb_share_doorclnt.c b/usr/src/lib/libshare/smb/smb_share_doorclnt.c
index 1a06278568..731b70c47c 100644
--- a/usr/src/lib/libshare/smb/smb_share_doorclnt.c
+++ b/usr/src/lib/libshare/smb/smb_share_doorclnt.c
@@ -54,9 +54,6 @@ static cond_t lmshrd_cv;
char *lmshrd_desc[] = {
"",
- "LmshrdOpenIter",
- "LmshrdCloseIter",
- "LmshrdIterate",
"LmshrdNumShares",
"LmshrdDelete",
"LmshrdRename",
@@ -70,7 +67,6 @@ char *lmshrd_desc[] = {
"LmshrdIsValid",
"LmshrdIsDir",
"LmshrdList",
- "LmshrdListTrans",
"LmshrdNumTrans",
"N/A",
0
@@ -179,140 +175,6 @@ lmshrd_door_check_status(smb_dr_ctx_t *dec_ctx)
return (0);
}
-uint64_t
-lmshrd_open_iterator(int mode)
-{
- door_arg_t *arg;
- smb_dr_ctx_t *dec_ctx;
- smb_dr_ctx_t *enc_ctx;
- uint64_t lmshr_iter = 0;
- int rc;
-
- if ((arg = lmshrd_door_enter()) == NULL)
- return (lmshr_iter);
-
- enc_ctx = smb_dr_encode_start(arg->data_ptr, LMSHR_DOOR_SIZE);
- smb_dr_put_uint32(enc_ctx, LMSHR_DOOR_OPEN_ITERATOR);
- smb_dr_put_int32(enc_ctx, mode);
-
- rc = smb_dr_encode_finish(enc_ctx, (unsigned int *)&arg->data_size);
- if (rc != 0) {
- lmshrd_door_exit(arg, "encode error");
- return (lmshr_iter);
- }
-
- if (door_call(lmshrd_fildes, arg) < 0) {
- lmshrd_door_exit(arg, "door call error");
- lmshrd_door_close();
- return (lmshr_iter);
- }
-
- dec_ctx = smb_dr_decode_start(arg->data_ptr, arg->data_size);
- if (lmshrd_door_check_status(dec_ctx) != 0) {
- (void) smb_dr_decode_finish(dec_ctx);
- lmshrd_door_exit(arg, "decode error");
- return (lmshr_iter);
- }
-
- lmshr_iter = smb_dr_get_lmshr_iterator(dec_ctx);
- if (smb_dr_decode_finish(dec_ctx) != 0) {
- lmshrd_door_exit(arg, "decode error");
- return (lmshr_iter);
- }
-
- lmshrd_door_exit(arg, NULL);
- return (lmshr_iter);
-}
-
-
-DWORD
-lmshrd_close_iterator(uint64_t iterator)
-{
- door_arg_t *arg;
- smb_dr_ctx_t *dec_ctx;
- smb_dr_ctx_t *enc_ctx;
- int rc;
-
- if ((arg = lmshrd_door_enter()) == NULL)
- return (NERR_InternalError);
-
- enc_ctx = smb_dr_encode_start(arg->data_ptr, LMSHR_DOOR_SIZE);
- smb_dr_put_uint32(enc_ctx, LMSHR_DOOR_CLOSE_ITERATOR);
- smb_dr_put_lmshr_iterator(enc_ctx, iterator);
-
- rc = smb_dr_encode_finish(enc_ctx, (unsigned int *)&arg->data_size);
- if (rc != 0) {
- lmshrd_door_exit(arg, "encode error");
- return (NERR_InternalError);
- }
-
- if (door_call(lmshrd_fildes, arg) < 0) {
- lmshrd_door_exit(arg, "door call error");
- lmshrd_door_close();
- return (NERR_InternalError);
- }
-
- dec_ctx = smb_dr_decode_start(arg->data_ptr, arg->data_size);
- if (lmshrd_door_check_status(dec_ctx) != 0) {
- (void) smb_dr_decode_finish(dec_ctx);
- lmshrd_door_exit(arg, "decode error");
- return (NERR_InternalError);
- }
-
- if (smb_dr_decode_finish(dec_ctx) != 0) {
- lmshrd_door_exit(arg, "decode error");
- return (NERR_InternalError);
- }
-
- lmshrd_door_exit(arg, NULL);
- return (NERR_Success);
-}
-
-DWORD
-lmshrd_iterate(uint64_t iterator, lmshare_info_t *si)
-{
- door_arg_t *arg;
- smb_dr_ctx_t *dec_ctx;
- smb_dr_ctx_t *enc_ctx;
- int rc;
-
- if ((arg = lmshrd_door_enter()) == NULL)
- return (NERR_InternalError);
-
- bzero(si, sizeof (lmshare_info_t));
- enc_ctx = smb_dr_encode_start(arg->data_ptr, LMSHR_DOOR_SIZE);
- smb_dr_put_uint32(enc_ctx, LMSHR_DOOR_ITERATE);
- smb_dr_put_lmshr_iterator(enc_ctx, iterator);
-
- rc = smb_dr_encode_finish(enc_ctx, (unsigned int *)&arg->data_size);
- if (rc != 0) {
- lmshrd_door_exit(arg, "encode error");
- return (NERR_InternalError);
- }
-
- if (door_call(lmshrd_fildes, arg) < 0) {
- lmshrd_door_exit(arg, "door call error");
- lmshrd_door_close();
- return (NERR_InternalError);
- }
-
- dec_ctx = smb_dr_decode_start(arg->data_ptr, arg->data_size);
- if (lmshrd_door_check_status(dec_ctx) != 0) {
- (void) smb_dr_decode_finish(dec_ctx);
- lmshrd_door_exit(arg, "decode error");
- return (NERR_InternalError);
- }
-
- smb_dr_get_lmshare(dec_ctx, si);
- if (smb_dr_decode_finish(dec_ctx) != 0) {
- lmshrd_door_exit(arg, "decode error");
- return (NERR_InternalError);
- }
-
- lmshrd_door_exit(arg, NULL);
- return (NERR_Success);
-}
-
DWORD
lmshrd_list(int offset, lmshare_list_t *list)
{
@@ -347,7 +209,6 @@ lmshrd_list(int offset, lmshare_list_t *list)
return (NERR_InternalError);
}
- rc = smb_dr_get_uint32(dec_ctx);
smb_dr_get_lmshr_list(dec_ctx, list);
if (smb_dr_decode_finish(dec_ctx) != 0) {
lmshrd_door_exit(arg, "decode error");
@@ -355,7 +216,7 @@ lmshrd_list(int offset, lmshare_list_t *list)
}
lmshrd_door_exit(arg, NULL);
- return (rc);
+ return (NERR_Success);
}
int