@@ -66,14 +66,22 @@ def get_pam_password_from_stdin(file_like_object = None):
6666
6767class _pam_password_ClientAuthState (authentication_base ):
6868
69+ # Client define
70+ AUTH_CLIENT_AUTH_REQUEST = "pam_password_auth_client_request"
71+
72+ # Server define
73+ AUTH_AGENT_AUTH_REQUEST = "auth_agent_auth_request"
74+
6975 def __init__ (self ,* _ ,check_ssl = True ,** _kw ):
7076 super ().__init__ (* _ ,** _kw )
7177 self .check_ssl = check_ssl
72- self ._l = None
78+ self ._list_for_request_result_return = None
7379
7480 def auth_client_start (self , request ):
7581
76- self ._l = request .pop (CLIENT_GET_REQUEST_RESULT , False )
82+ # This list reference is popped and cached for the purpose of returning the request_result value
83+ # to the caller upon request.
84+ self ._list_for_request_result_return = request .pop (CLIENT_GET_REQUEST_RESULT , False )
7785
7886 if self .check_ssl :
7987 if not isinstance (self .conn .socket , ssl .SSLSocket ):
@@ -82,12 +90,13 @@ def auth_client_start(self, request):
8290
8391 resp = request .copy ()
8492
85- obj = resp .pop (FORCE_PASSWORD_PROMPT , None )
93+ password_input_obj = resp .pop (FORCE_PASSWORD_PROMPT , None )
8694
87- if obj :
88- obj = None if isinstance (obj ,(int ,bool )) else obj
95+ if password_input_obj :
96+ if isinstance (password_input_obj ,(int ,bool )):
97+ password_input_obj = None
8998 # Like with the C++ plugin, we offer the user a chance to enter a password.
90- resp [AUTH_PASSWORD_KEY ] = get_pam_password_from_stdin (file_like_object = obj )
99+ resp [AUTH_PASSWORD_KEY ] = get_pam_password_from_stdin (file_like_object = password_input_obj )
91100 else :
92101 # Password from .irodsA in environment.
93102 if self .conn .account ._auth_file :
@@ -100,12 +109,6 @@ def auth_client_start(self, request):
100109 resp [__NEXT_OPERATION__ ] = self .AUTH_CLIENT_AUTH_REQUEST
101110 return resp
102111
103- # Client define
104- AUTH_CLIENT_AUTH_REQUEST = "pam_password_auth_client_request"
105-
106- # Server define
107- AUTH_AGENT_AUTH_REQUEST = "auth_agent_auth_request"
108-
109112 def pam_password_auth_client_request (self , request ):
110113 server_req = request .copy ()
111114 server_req [__NEXT_OPERATION__ ] = self .AUTH_AGENT_AUTH_REQUEST
@@ -123,8 +126,8 @@ def pam_password_auth_client_request(self, request):
123126 msg = "auth storage object was either not set, or allowed to expire prematurely."
124127 raise RuntimeError (msg )
125128
126- if isinstance (self ._l ,list ):
127- self ._l [:] = (resp ["request_result" ],)
129+ if isinstance (self ._list_for_request_result_return ,list ):
130+ self ._list_for_request_result_return [:] = (resp ["request_result" ],)
128131
129132 resp [__NEXT_OPERATION__ ] = self .perform_native_auth
130133 return resp
0 commit comments