The branch, v4-2-test has been updated via 6033569 fix writev(vector[...]) points to uninitialised bytes in call_trans2findfirst via 1eb6f36 fix 'Invalid read of size 1' in reply_search via 9e8475e fix writev(vector[...]) points to uninitialised bytes in call_trans2findnext via 579c13de fix uninitialised read in process_host_announce via 6a7f87b remove many valgrind errors for base.lock test via 7cbca2f nss_wins: Use lp_global_no_reinit() from 92cc4e0 s3: winbind: Prevent null ptr access by returning error if no creds available
https://git.samba.org/?p=samba.git;a=shortlog;h=v4-2-test - Log ----------------------------------------------------------------- commit 6033569bc45e645ba52c6f7b3ed15093db239629 Author: Noel Power <noel.po...@suse.com> Date: Wed Oct 28 15:42:06 2015 +0000 fix writev(vector[...]) points to uninitialised bytes in call_trans2findfirst Signed-off-by: Noel Power <noel.po...@suse.com> Reviewed-by: Jeremy Allison <j...@samba.org> Reviewed-by: Volker Lendecke <v...@samba.org> (cherry picked from commit 9b2aba1b7aa7386dfc64bcefafa83374b6525354) The last 5 patches address BUG: https://bugzilla.samba.org/show_bug.cgi?id=11597 backport some valgrind fixes from upstream master to 4.2 / 4.3 Autobuild-User(v4-2-test): Karolin Seeger <ksee...@samba.org> Autobuild-Date(v4-2-test): Fri Nov 20 14:18:32 CET 2015 on sn-devel-104 commit 1eb6f3617b63fcabebfba1659f00431f79c2b4ab Author: Noel Power <noel.po...@suse.com> Date: Wed Oct 28 17:08:28 2015 +0000 fix 'Invalid read of size 1' in reply_search Signed-off-by: Noel Power <noel.po...@suse.com> Reviewed-by: Jeremy Allison <j...@samba.org> Reviewed-by: Volker Lendecke <v...@samba.org> (cherry picked from commit 0f2f8a4f772ff22d00a9e87dafa97a431af8f6da) commit 9e8475e4e366aca2d3b09341876a1f95bc711224 Author: Noel Power <noel.po...@suse.com> Date: Wed Oct 28 19:53:49 2015 +0000 fix writev(vector[...]) points to uninitialised bytes in call_trans2findnext Signed-off-by: Noel Power <noel.po...@suse.com> Reviewed-by: Jeremy Allison <j...@samba.org> Reviewed-by: Volker Lendecke <v...@samba.org> (cherry picked from commit 17482d52160acc869af9f7a2029d5b595d33a12d) commit 579c13dee811f9b4a53ae1ff835b8be8e1979d7c Author: Noel Power <noel.po...@suse.com> Date: Wed Oct 28 21:17:42 2015 +0000 fix uninitialised read in process_host_announce Signed-off-by: Noel Power <noel.po...@suse.com> Reviewed-by: Jeremy Allison <j...@samba.org> Reviewed-by: Volker Lendecke <v...@samba.org> (cherry picked from commit 7ade51901381507beaeac92e9b0d2f0d424123a9) commit 6a7f87b98d58040c39c4096bcc03096c135c9361 Author: Noel Power <noel.po...@suse.com> Date: Thu Oct 29 11:11:00 2015 +0000 remove many valgrind errors for base.lock test mostly "Conditional jump or move depends on uninitialised value" & "Use of uninitialised value of size 8" errors, suspect this is related to compiler padding for the struct Signed-off-by: Noel Power <noel.po...@suse.com> Reviewed-by: Jeremy Allison <j...@samba.org> Reviewed-by: Volker Lendecke <v...@samba.org> Autobuild-User(master): Jeremy Allison <j...@samba.org> Autobuild-Date(master): Fri Nov 6 00:16:53 CET 2015 on sn-devel-104 (cherry picked from commit ce8068e70b11a3ce5634c56f43a035713c5ea2ed) commit 7cbca2fbbe41e2e76d60d2523dc6cd0514f3765b Author: Andreas Schneider <a...@samba.org> Date: Fri Oct 23 15:28:23 2015 +0200 nss_wins: Use lp_global_no_reinit() This avoids that we run into use after free issues when we access memory allocated on the globals and the global being reinitialized. BUG: https://bugzilla.samba.org/show_bug.cgi?id=11563 Signed-off-by: Andreas Schneider <a...@samba.org> Reviewed-by: Volker Lendecke <v...@samba.org> (cherry picked from commit 0abbfb2e4d5bcd847983ef7981840f1eab7b917c) ----------------------------------------------------------------------- Summary of changes: nsswitch/wins.c | 2 +- source3/locking/brlock.c | 2 ++ source3/nmbd/nmbd_incomingdgrams.c | 2 ++ source3/smbd/reply.c | 9 +++++---- source3/smbd/trans2.c | 11 ++++++++++- 5 files changed, 20 insertions(+), 6 deletions(-) Changeset truncated at 500 lines: diff --git a/nsswitch/wins.c b/nsswitch/wins.c index d63968b..6b5c3e2 100644 --- a/nsswitch/wins.c +++ b/nsswitch/wins.c @@ -53,7 +53,7 @@ static void nss_wins_init(void) TimeInit(); setup_logging("nss_wins",False); - lp_load(get_dyn_CONFIGFILE(),True,False,False,True); + lp_load_global_no_reinit(get_dyn_CONFIGFILE()); load_interfaces(); } diff --git a/source3/locking/brlock.c b/source3/locking/brlock.c index 1a468d0..30f4cee 100644 --- a/source3/locking/brlock.c +++ b/source3/locking/brlock.c @@ -1006,6 +1006,8 @@ NTSTATUS brl_lock(struct messaging_context *msg_ctx, NTSTATUS ret; struct lock_struct lock; + ZERO_STRUCT(lock); + #if !ZERO_ZERO if (start == 0 && size == 0) { DEBUG(0,("client sent 0/0 lock - please report this\n")); diff --git a/source3/nmbd/nmbd_incomingdgrams.c b/source3/nmbd/nmbd_incomingdgrams.c index 2dc684e..5a99fef 100644 --- a/source3/nmbd/nmbd_incomingdgrams.c +++ b/source3/nmbd/nmbd_incomingdgrams.c @@ -106,6 +106,8 @@ void process_host_announce(struct subnet_record *subrec, struct packet_struct *p struct server_record *servrec; unstring work_name; unstring source_name; + ZERO_STRUCT(source_name); + ZERO_STRUCT(announce_name); START_PROFILE(host_announce); diff --git a/source3/smbd/reply.c b/source3/smbd/reply.c index 05ebe21..0f96b0d 100644 --- a/source3/smbd/reply.c +++ b/source3/smbd/reply.c @@ -1587,7 +1587,7 @@ void reply_search(struct smb_request *req) { connection_struct *conn = req->conn; char *path = NULL; - const char *mask = NULL; + char *mask = NULL; char *directory = NULL; struct smb_filename *smb_fname = NULL; char *fname = NULL; @@ -1668,11 +1668,11 @@ void reply_search(struct smb_request *req) p = strrchr_m(directory,'/'); if ((p != NULL) && (*directory != '/')) { - mask = p + 1; + mask = talloc_strdup(ctx, p + 1); directory = talloc_strndup(ctx, directory, PTR_DIFF(p, directory)); } else { - mask = directory; + mask = talloc_strdup(ctx, directory); directory = talloc_strdup(ctx,"."); } @@ -1721,7 +1721,7 @@ void reply_search(struct smb_request *req) goto out; } - mask = dptr_wcard(sconn, dptr_num); + mask = talloc_strdup(ctx, dptr_wcard(sconn, dptr_num)); if (!mask) { goto SearchEmpty; } @@ -1860,6 +1860,7 @@ void reply_search(struct smb_request *req) maxentries )); out: TALLOC_FREE(directory); + TALLOC_FREE(mask); TALLOC_FREE(smb_fname); END_PROFILE(SMBsearch); return; diff --git a/source3/smbd/trans2.c b/source3/smbd/trans2.c index a937023..41e1bb1 100644 --- a/source3/smbd/trans2.c +++ b/source3/smbd/trans2.c @@ -2641,7 +2641,11 @@ total_data=%u (should be %u)\n", (unsigned int)total_data, (unsigned int)IVAL(pd } pdata = *ppdata; data_end = pdata + max_data_bytes + DIR_ENTRY_SAFETY_MARGIN - 1; - + /* + * squash valgrind "writev(vector[...]) points to uninitialised byte(s)" + * error. + */ + memset(pdata + total_data, 0, ((max_data_bytes + DIR_ENTRY_SAFETY_MARGIN) - total_data)); /* Realloc the params space */ *pparams = (char *)SMB_REALLOC(*pparams, 10); if (*pparams == NULL) { @@ -2988,6 +2992,11 @@ total_data=%u (should be %u)\n", (unsigned int)total_data, (unsigned int)IVAL(pd pdata = *ppdata; data_end = pdata + max_data_bytes + DIR_ENTRY_SAFETY_MARGIN - 1; + /* + * squash valgrind "writev(vector[...]) points to uninitialised byte(s)" + * error. + */ + memset(pdata + total_data, 0, (max_data_bytes + DIR_ENTRY_SAFETY_MARGIN) - total_data); /* Realloc the params space */ *pparams = (char *)SMB_REALLOC(*pparams, 6*SIZEOFWORD); if(*pparams == NULL ) { -- Samba Shared Repository