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

Diff for /src/usr.bin/ssh/auth-bsdauth.c between version 1.1 and 1.1.6.4

version 1.1, 2001/05/18 14:13:28 version 1.1.6.4, 2002/10/11 14:53:06
Line 28 
Line 28 
 #include "xmalloc.h"  #include "xmalloc.h"
 #include "auth.h"  #include "auth.h"
 #include "log.h"  #include "log.h"
   #include "monitor_wrap.h"
   
 static void *  static void *
 bsdauth_init_ctx(Authctxt *authctxt)  bsdauth_init_ctx(Authctxt *authctxt)
Line 35 
Line 36 
         return authctxt;          return authctxt;
 }  }
   
 static int  int
 bsdauth_query(void *ctx, char **name, char **infotxt,  bsdauth_query(void *ctx, char **name, char **infotxt,
    u_int *numprompts, char ***prompts, u_int **echo_on)     u_int *numprompts, char ***prompts, u_int **echo_on)
 {  {
         Authctxt *authctxt = ctx;          Authctxt *authctxt = ctx;
         char *challenge = NULL;          char *challenge = NULL;
   
         if (authctxt->as != NULL) {          if (authctxt->as != NULL) {
                 debug2("bsdauth_query: try reuse session");                  debug2("bsdauth_query: try reuse session");
                 challenge = auth_getitem(authctxt->as, AUTHV_CHALLENGE);                  challenge = auth_getitem(authctxt->as, AUTHV_CHALLENGE);
                 if (challenge == NULL) {                  if (challenge == NULL) {
                         auth_close(authctxt->as);                          auth_close(authctxt->as);
                         authctxt->as = NULL;                          authctxt->as = NULL;
                 }                  }
         }          }
   
         if (challenge == NULL) {          if (challenge == NULL) {
                 debug2("bsdauth_query: new bsd auth session");                  debug2("bsdauth_query: new bsd auth session");
                 debug3("bsdauth_query: style %s",                  debug3("bsdauth_query: style %s",
                     authctxt->style ? authctxt->style : "<default>");                      authctxt->style ? authctxt->style : "<default>");
                 authctxt->as = auth_userchallenge(authctxt->user,                  authctxt->as = auth_userchallenge(authctxt->user,
                      authctxt->style, "auth-ssh", &challenge);                      authctxt->style, "auth-ssh", &challenge);
                 if (authctxt->as == NULL)                  if (authctxt->as == NULL)
                         challenge = NULL;                          challenge = NULL;
                 debug2("bsdauth_query: <%s>", challenge ? challenge : "empty");                  debug2("bsdauth_query: <%s>", challenge ? challenge : "empty");
         }          }
   
         if (challenge == NULL)  
                 return -1;  
   
         *name       = xstrdup("");          if (challenge == NULL)
         *infotxt    = xstrdup("");                  return -1;
         *numprompts = 1;  
         *prompts = xmalloc(*numprompts * sizeof(char*));  
         *echo_on = xmalloc(*numprompts * sizeof(u_int));  
         (*echo_on)[0] = 0;  
         (*prompts)[0] = xstrdup(challenge);  
   
         return 0;          *name = xstrdup("");
           *infotxt = xstrdup("");
           *numprompts = 1;
           *prompts = xmalloc(*numprompts * sizeof(char *));
           *echo_on = xmalloc(*numprompts * sizeof(u_int));
           (*echo_on)[0] = 0;
           (*prompts)[0] = xstrdup(challenge);
   
           return 0;
 }  }
   
 static int  int
 bsdauth_respond(void *ctx, u_int numresponses, char **responses)  bsdauth_respond(void *ctx, u_int numresponses, char **responses)
 {  {
         Authctxt *authctxt = ctx;          Authctxt *authctxt = ctx;
         int authok;          int authok;
   
         if (authctxt->as == 0)  
                 error("bsdauth_respond: no bsd auth session");  
   
         if (numresponses != 1)          if (authctxt->as == 0)
                 return -1;                  error("bsdauth_respond: no bsd auth session");
   
         authok = auth_userresponse(authctxt->as, responses[0], 0);          if (numresponses != 1)
         authctxt->as = NULL;                  return -1;
         debug3("bsdauth_respond: <%s> = <%d>", responses[0], authok);  
   
         return (authok == 0) ? -1 : 0;          authok = auth_userresponse(authctxt->as, responses[0], 0);
           authctxt->as = NULL;
           debug3("bsdauth_respond: <%s> = <%d>", responses[0], authok);
   
           return (authok == 0) ? -1 : 0;
 }  }
   
 static void  static void
 bsdauth_free_ctx(void *ctx)  bsdauth_free_ctx(void *ctx)
 {  {
         Authctxt *authctxt = ctx;          Authctxt *authctxt = ctx;
   
         if (authctxt && authctxt->as) {          if (authctxt && authctxt->as) {
                 auth_close(authctxt->as);                  auth_close(authctxt->as);
                 authctxt->as = NULL;                  authctxt->as = NULL;
         }          }
 }  }
   
 KbdintDevice bsdauth_device = {  KbdintDevice bsdauth_device = {
Line 111 
Line 112 
         bsdauth_init_ctx,          bsdauth_init_ctx,
         bsdauth_query,          bsdauth_query,
         bsdauth_respond,          bsdauth_respond,
           bsdauth_free_ctx
   };
   
   KbdintDevice mm_bsdauth_device = {
           "bsdauth",
           bsdauth_init_ctx,
           mm_bsdauth_query,
           mm_bsdauth_respond,
         bsdauth_free_ctx          bsdauth_free_ctx
 };  };
 #endif  #endif

Legend:
Removed from v.1.1  
changed lines
  Added in v.1.1.6.4