diff options
author | jb150015 <none@none> | 2008-06-02 13:50:26 -0700 |
---|---|---|
committer | jb150015 <none@none> | 2008-06-02 13:50:26 -0700 |
commit | 3ad684d66b78e06edd37e2c4fd3b3949f095194b (patch) | |
tree | c8a46bd6352a4d612c208b2da5baa3d9817a28e4 /usr/src/lib/libshare | |
parent | 25c3d9a2161e0ea7e7d2783b5f991fd797282b63 (diff) | |
download | illumos-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.c | 15 | ||||
-rw-r--r-- | usr/src/lib/libshare/smb/smb_share_doorclnt.c | 141 |
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 |