[jcifs] Quick question Re: Challenge in NegProt response.

Michael B. Allen miallen at eskimo.com
Fri Sep 6 05:20:13 EST 2002


On Thu, 05 Sep 2002 13:35:19 -0500
"Christopher R. Hertel" <crh at ubiqx.mn.org> wrote:

> Mike,
> 
> I lost my notes on this...  You remember that bug I stumbled across at the
> PlugFest?  The one that would cause reconnections to fail?
> 
> Here's the thing:  Does SMB continue to use the same challenge for the
> entire duration of the TCP session or is there a mechanism for obtaining a
> new challenge?  What was it that was actually going wrong with the
> reconnection?

Whenever  a  negprot  response is received the new challenge should be used
but  to the best of my knowledge such a response will only be received once
during  transport establishment. The jCIFS gracefull reconnect bug resulted
because  jCIFS  closes  transport  after  a  configureable  time  period to
conserve  resources  and  it  does  not  tear  down  and  build up all data
structures: 

  NbtSocket
   |
  SmbTransport
   |
  SmbSession
   |
  SmbTree

every  time.  It  just  flips  a negotiated/sessionSetup/treeConnected flag
indicating       the      particular      layer      will      need      to
re-negotiate/re-sessionSetup/re-treeConnect.  However with the introduction
of  the  NtlmPasswordAuthentication  class  the  server challenge was being
cached. Encrypting passwords with an old challenge will not work of course.

Incedentally  it's  still  not  correct  actually.  If  an error occurs, an
SmbTransport/SmbSession/SmbTree hierarchy may be invalidated without trying
to  trigger  SMB_COM_LOGOFF_ANDX/SMB_COM_TREE_DISCONNECT_ANDX  messages and
that  too  even in the latest version will not invalidate the challenge. So
if the *server* closes the socket, that will be treated like this error and
now we have the graceful-reconnect issue. I'm working on a fix for that and
a few other complicated state consistentcey issues having to do with hashes
beeing provided externally (from IE). 

-- 
A  program should be written to model the concepts of the task it
performs rather than the physical world or a process because this
maximizes  the  potential  for it to be applied to tasks that are
conceptually  similar and more importantly to tasks that have not
yet been conceived. 



More information about the jcifs mailing list