[PATCH] Master fix for bug #9518 - conn->share_access appears not be be reset between users

Jeremy Allison jra at samba.org
Tue Jan 8 09:42:30 MST 2013


On Tue, Jan 08, 2013 at 10:38:40PM +1100, Andrew Bartlett wrote:
> 
> Jermey,
> 
> I've got bad news sorry.  
> 
> source3/printing/nt_printing.c:get_correct_cversion() calls
> become_user_by_session() which uses UID_FIELD_INVALID.
> 
> This means that on sn-devel (but not on my Fedora system!) we segfault:
> /home/abartlet/samba-1/bin/smbd: #7  0x00002b8604c74f3e in check_user_ok
> (conn=0x1943890, vuid=0,
> /home/abartlet/samba-1/bin/smbd:     session_info=0x218a990, snum=15)
> at ../source3/smbd/uid.c:193
> /home/abartlet/samba-1/bin/smbd:         i = 0
> /home/abartlet/samba-1/bin/smbd:         readonly_share = false
> /home/abartlet/samba-1/bin/smbd:         admin_user = false
> /home/abartlet/samba-1/bin/smbd:         ent = 0x8
> /home/abartlet/samba-1/bin/smbd:         share_access = 0
> /home/abartlet/samba-1/bin/smbd:         status = {v = 39425808}
> /home/abartlet/samba-1/bin/smbd:         __FUNCTION__ = "check_user_ok"
> /home/abartlet/samba-1/bin/smbd: #8  0x00002b8604c75204 in
> change_to_user_internal (conn=0x1943890,
> /home/abartlet/samba-1/bin/smbd:     session_info=0x218a990, vuid=0)
> at ../source3/smbd/uid.c:274
> /home/abartlet/samba-1/bin/smbd:         snum = 15
> /home/abartlet/samba-1/bin/smbd:         gid = 0
> /home/abartlet/samba-1/bin/smbd:         uid = 4
> /home/abartlet/samba-1/bin/smbd:         group_c = 0 '\000'
> /home/abartlet/samba-1/bin/smbd:         num_groups = 0
> /home/abartlet/samba-1/bin/smbd:         group_list = 0x0
> /home/abartlet/samba-1/bin/smbd:         ok = false
> /home/abartlet/samba-1/bin/smbd:         __FUNCTION__ =
> "change_to_user_internal"
> /home/abartlet/samba-1/bin/smbd: #9  0x00002b8604c758ac in
> change_to_user_by_session (conn=0x1943890,
> /home/abartlet/samba-1/bin/smbd:     session_info=0x218a990)
> at ../source3/smbd/uid.c:390
> /home/abartlet/samba-1/bin/smbd:         __FUNCTION__ =
> "change_to_user_by_session"
> /home/abartlet/samba-1/bin/smbd: #10 0x00002b8604c75cb6 in
> become_user_by_session (conn=0x1943890,
> /home/abartlet/samba-1/bin/smbd:     session_info=0x218a990)
> at ../source3/smbd/uid.c:544
> /home/abartlet/samba-1/bin/smbd: No locals.
> /home/abartlet/samba-1/bin/smbd: #11 0x00002b8604bd61b1 in
> get_correct_cversion (session_info=0x218a990,
> /home/abartlet/samba-1/bin/smbd:     architecture=0x2b8604dffb51
> "W32X86",
> /home/abartlet/samba-1/bin/smbd:     driverpath_in=0x27f1f20
> "pscript5.dll", perr=0x7fff40a89600)
> /home/abartlet/samba-1/bin/smbd:
> at ../source3/printing/nt_printing.c:640
> /home/abartlet/samba-1/bin/smbd:         cversion = -1
> /home/abartlet/samba-1/bin/smbd:         nt_status = {v = 0}
> /home/abartlet/samba-1/bin/smbd:         smb_fname = 0x0
> /home/abartlet/samba-1/bin/smbd:         driverpath = 0x0
> /home/abartlet/samba-1/bin/smbd:         fsp = 0x0
> /home/abartlet/samba-1/bin/smbd:         conn = 0x1943890
> /home/abartlet/samba-1/bin/smbd:         oldcwd = 0x2910620 "/tmp"
> /home/abartlet/samba-1/bin/smbd:         printdollar = 0x1eba6c0 "print
> $"
> /home/abartlet/samba-1/bin/smbd:         printdollar_snum = 15
> /home/abartlet/samba-1/bin/smbd:         __FUNCTION__ =
> "get_correct_cversion"
> 
> This means we need to put back all the ugly UID_FIELD_INVALID stuff,
> because we don't want to be doing caches based on a 0 vuid (being the
> value the cache is initialised to).  (Or find a more elegant solution). 

Thanks for the update. I'll look into this for a fix ASAP.

I'd really rather not put back the UID_FIELD_INVALID code,
so let me see what I can come up with.

Cheers,

	Jeremy.


More information about the samba-technical mailing list