On Thursday 23 February 2006 21:40, Simon Wilkinson wrote:
> Achim,
>
> I'm having some trouble understanding the requirements for these
> changes. 

I'm sorry.
find attached my new diff.
Please let me know if that changes are OK to you.

Thank you,
Achim
Index: GSSAPI.pm
===================================================================
--- GSSAPI.pm	(revision 73)
+++ GSSAPI.pm	(working copy)
@@ -30,10 +30,15 @@
   my $status;
   my $principal = $self->service.'@'.$self->host;
 
-  $self->{gss_name} = new GSSAPI::Name;
-  $status = $self->{gss_name}->import($self->{gss_name}, $principal, 
+  # GSSAPI::Name->import is the *constructor*,
+  # storing the new GSSAPI::Name into $target.
+  # GSSAPI::Name->import is not the standard
+  # import() method as used in Perl normally
+  my $target;
+  $status = GSSAPI::Name->import($target, $principal, 
 				      gss_nt_service_name)
     or return $self->set_error("GSSAPI Error : ".$status);
+  $self->{gss_name} = $target;
   $self->{gss_ctx} = new GSSAPI::Context;
   $self->{gss_state} = 0;
   return $self->client_step("");
@@ -48,10 +53,10 @@
   if ($self->{gss_state}==0) {
     my $outtok;
     my $flags;
-    $status = $self->{gss_ctx}->init(undef, $self->{gss_name}, 
+    $status = $self->{gss_ctx}->init(GSS_C_NO_CREDENTIAL, $self->{gss_name}, 
 				     gss_mech_krb5, 
 				     GSS_C_INTEG_FLAG | GSS_C_MUTUAL_FLAG, 
-				     undef, undef, $challenge, undef, 
+				     0, GSS_C_NO_CHANNEL_BINDINGS, $challenge, undef, 
 				     $outtok, $flags, undef);
 
     if (GSSAPI::Status::GSS_ERROR($status->major)) {
@@ -75,9 +80,9 @@
 
     # Need to set message to be 0x01, 0x00, 0x00, 0x00 for no security layers
     my $message = pack('CCCC', 0x01, 0x00, 0x00, 0x00);
-    $message.= $self->_call('user');
+    $message.= $self->_call('user') if ( $self->_call('user') ) ;
     my $outtok;
-    $status = $self->{gss_ctx}->wrap(0, undef, $message, undef, $outtok)
+    $status = $self->{gss_ctx}->wrap(0, 0, $message, undef, $outtok)
       or return $self->set_error("GSSAPI Error : ".$status);
     
     $self->{gss_state}=0;

Reply via email to