cursory examination done by andrew@creep.net   18 Mar 1999

./smbd/reply.c:1726:  pstrcpy(fname2,(char *)mktemp(fname));

 ok - passed to open_file_shared() (./smbd/open.c:765)  with 
      FILE_CREATE_IF_NOT_EXIST|FILE_EXISTS_FAIL which results in open() 
      being called with O_CREAT|O_EXCL

./smbd/reply.c:2881:	pstrcpy(fname2,(char *)mktemp(fname));

 ok - passed to open_file_shared() (./smbd/open.c:765)  with 
      FILE_CREATE_IF_NOT_EXIST|FILE_EXISTS_FAIL which results in open() 
      being called with O_CREAT|O_EXCL

./smbd/message.c:57:  fstrcpy(name,(char *)mktemp(s));

 ok - the file is open()d with O_CREAT|O_EXCL

./smbd/filename.c:419:      pstrcpy(name,(char *)mktemp(name2));	  

 ?? - I wasn't able to tell where/if this was called from when the
      conn->printer member would != 0, so I don't know what was done
      with the returned name, if anything.  It's possible, though unlikely,
      that there is a race in a caller of unix_convert().

./smbwrapper/shared.c:40:	fstrcpy(name,(char *)mktemp(s));

 ok - the file is open()d with O_CREAT|O_EXCL

Also while investigating what I thought was a bug I found some behavior
that I consider undesirable:

      When a non-root user executes smbpasswd to change their password,
      it makes a connection to smbd, instead of having smbpasswd be suid
      root so it can modify the file.  This is fine, but the problem is 
      that in order for it to work you must have enabled anonymous
      access to smbd.  This seems to be intentional (see the code and
      comment at libsmb/passchange.c:74) but it would be better to fix
      smbd so that this is not necessary.
