[BACK]Return to gss-serv.c CVS log [TXT][DIR] Up to [local] / src / usr.bin / ssh

Diff for /src/usr.bin/ssh/gss-serv.c between version 1.2 and 1.3

version 1.2, 2003/08/31 13:30:18 version 1.3, 2003/08/31 13:31:57
Line 137 
Line 137 
         char *tok;          char *tok;
         OM_uint32 offset;          OM_uint32 offset;
         OM_uint32 oidl;          OM_uint32 oidl;
   
         tok=ename->value;          tok=ename->value;
   
         /*          /*
          * Check that ename is long enough for all of the fixed length           * Check that ename is long enough for all of the fixed length
          * header, and that the initial ID bytes are correct           * header, and that the initial ID bytes are correct
          */           */
   
         if (ename->length<6 || memcmp(tok,"\x04\x01", 2)!=0)          if (ename->length<6 || memcmp(tok,"\x04\x01", 2)!=0)
                 return GSS_S_FAILURE;                  return GSS_S_FAILURE;
   
         /*          /*
Line 163 
Line 163 
          * string is long enough and that the OID matches that in our context           * string is long enough and that the OID matches that in our context
          */           */
         if (tok[4] != 0x06 || tok[5] != oidl ||          if (tok[4] != 0x06 || tok[5] != oidl ||
             ename->length < oidl+6 ||              ename->length < oidl+6 ||
            !ssh_gssapi_check_oid(ctx,tok+6,oidl))             !ssh_gssapi_check_oid(ctx,tok+6,oidl))
                 return GSS_S_FAILURE;                  return GSS_S_FAILURE;
   
         offset = oidl+6;          offset = oidl+6;
   
         if (ename->length < offset+4)          if (ename->length < offset+4)
                 return GSS_S_FAILURE;                  return GSS_S_FAILURE;
   
         name->length = GET_32BIT(tok+offset);          name->length = GET_32BIT(tok+offset);
         offset += 4;          offset += 4;
   
         if (ename->length < offset+name->length)          if (ename->length < offset+name->length)
                 return GSS_S_FAILURE;                  return GSS_S_FAILURE;
   
         name->value = xmalloc(name->length+1);          name->value = xmalloc(name->length+1);
         memcpy(name->value,tok+offset,name->length);          memcpy(name->value,tok+offset,name->length);
         ((char *)name->value)[name->length] = 0;          ((char *)name->value)[name->length] = 0;
   
         return GSS_S_COMPLETE;          return GSS_S_COMPLETE;
 }  }
   
 /* Extract the client details from a given context. This can only reliably  /* Extract the client details from a given context. This can only reliably
  * be called once for a context */   * be called once for a context */
Line 195 
Line 195 
         int i = 0;          int i = 0;
   
         gss_buffer_desc ename;          gss_buffer_desc ename;
   
         client->mech = NULL;          client->mech = NULL;
   
         while (supported_mechs[i]->name != NULL) {          while (supported_mechs[i]->name != NULL) {
Line 206 
Line 206 
                 i++;                  i++;
         }          }
   
         if (client->mech == NULL)          if (client->mech == NULL)
                 return GSS_S_FAILURE;                  return GSS_S_FAILURE;
   
         if ((ctx->major = gss_display_name(&ctx->minor, ctx->client,          if ((ctx->major = gss_display_name(&ctx->minor, ctx->client,
             &client->displayname, NULL))) {              &client->displayname, NULL))) {
                 ssh_gssapi_error(ctx);                  ssh_gssapi_error(ctx);
                 return (ctx->major);                  return (ctx->major);
         }          }
   
         if ((ctx->major = gss_export_name(&ctx->minor, ctx->client,          if ((ctx->major = gss_export_name(&ctx->minor, ctx->client,
             &ename))) {              &ename))) {
                 ssh_gssapi_error(ctx);                  ssh_gssapi_error(ctx);
                 return (ctx->major);                  return (ctx->major);
         }          }
   
         if ((ctx->major = ssh_gssapi_parse_ename(ctx,&ename,          if ((ctx->major = ssh_gssapi_parse_ename(ctx,&ename,
             &client->exportedname))) {              &client->exportedname))) {
                 return (ctx->major);                  return (ctx->major);

Legend:
Removed from v.1.2  
changed lines
  Added in v.1.3