You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
The reason for trying to get the correct output_count from server is because it increases with the increment of the share amounts on my server in the range of 0-86, but once the share amounts exceeds 86, the output_count always returns 4280 and the status returns -22 so that I can't access the smb server. Some other smb clients such as linux, windows, mac can access the server correctly.
I am using function smb2_share_enum_async and the callback function returns status=-22.
I have checked the smb2_ioctl_request sent.
and smb2->max_transact_size = 8388608 ( > MaxOutputResponse).
The problem seems to be in the below function, offset gradually increases to approach iov->len with each loop when the dp->coder is dcerpc_utf16z_coder, and if (offset + actual * 2 > iov->len) { return -1; }, the value of the iov->len is got from smb2_get_uint32(iov, 36, &rep->output_count);, so, if the reply from server returns a fixed value (4280 in my example), the offset will return -1 in a loop while decoding. And then the offset will always be -1, at last, the status returns -22.
The reason for trying to get the correct output_count from server is because it increases with the increment of the share amounts on my server in the range of 0-86, but once the share amounts exceeds 86, the output_count always returns 4280 and the status returns -22 so that I can't access the smb server. Some other smb clients such as linux, windows, mac can access the server correctly.
I am using function
smb2_share_enum_async
and the callback function returns status=-22.I have checked the smb2_ioctl_request sent.
and
smb2->max_transact_size = 8388608 ( > MaxOutputResponse)
.The problem seems to be in the below function, offset gradually increases to approach iov->len with each loop when the dp->coder is
dcerpc_utf16z_coder
, andif (offset + actual * 2 > iov->len) { return -1; }
, the value of the iov->len is got fromsmb2_get_uint32(iov, 36, &rep->output_count);
, so, if the reply from server returns a fixed value (4280 in my example), the offset will return -1 in a loop while decoding. And then the offset will always be -1, at last, the status returns -22.Custom Log:
Could anybody help me? Thanks a lot.
The text was updated successfully, but these errors were encountered: