diff options
author | Jeremy Allison <jra@samba.org> | 2014-08-25 17:11:58 -0700 |
---|---|---|
committer | David Disseldorp <ddiss@samba.org> | 2014-09-16 01:56:54 +0200 |
commit | 0519088c53b201b7ca1f144f3f2da052c612c0e7 (patch) | |
tree | 59d41b8d7869877d0c8579fb2663817a618f9f84 /source3/modules/vfs_default.c | |
parent | c7b89bb9e5531be378c1b71fa7165f3ce74c83bb (diff) | |
download | samba-0519088c53b201b7ca1f144f3f2da052c612c0e7.tar.gz samba-0519088c53b201b7ca1f144f3f2da052c612c0e7.tar.xz samba-0519088c53b201b7ca1f144f3f2da052c612c0e7.zip |
s3: smbd: Change the function signature of srvstr_push() from returning a length to returning an NTSTATUS with a length param.
srvstr_push_fn() now returns an NTSTATUS reporting any
string conversion failure.
We need to get serious about returning character set conversion errors
inside smbd.
Bug 10775 - smbd crashes when accessing garbage filenames
https://bugzilla.samba.org/show_bug.cgi?id=10775
Signed-off-by: Jeremy Allison <jra@samba.org>
Reviewed-by: David Disseldorp <ddiss@samba.org>
Diffstat (limited to 'source3/modules/vfs_default.c')
-rw-r--r-- | source3/modules/vfs_default.c | 10 |
1 files changed, 8 insertions, 2 deletions
diff --git a/source3/modules/vfs_default.c b/source3/modules/vfs_default.c index 3430cd0d68..3a3943b257 100644 --- a/source3/modules/vfs_default.c +++ b/source3/modules/vfs_default.c @@ -1178,10 +1178,16 @@ static NTSTATUS vfswrap_fsctl(struct vfs_handle_struct *handle, shadow_data->num_volumes, fsp_str_dbg(fsp))); if (labels && shadow_data->labels) { for (i=0; i<shadow_data->num_volumes; i++) { - srvstr_push(cur_pdata, req_flags, + size_t len = 0; + status = srvstr_push(cur_pdata, req_flags, cur_pdata, shadow_data->labels[i], 2 * sizeof(SHADOW_COPY_LABEL), - STR_UNICODE|STR_TERMINATE); + STR_UNICODE|STR_TERMINATE, &len); + if (!NT_STATUS_IS_OK(status)) { + TALLOC_FREE(*out_data); + TALLOC_FREE(shadow_data); + return status; + } cur_pdata += 2 * sizeof(SHADOW_COPY_LABEL); DEBUGADD(10,("Label[%u]: '%s'\n",i,shadow_data->labels[i])); } |