/[shishi]/inetutils/rshd/rshd.c
ViewVC logotype

Diff of /inetutils/rshd/rshd.c

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 1.5 by npo, Wed Sep 24 15:17:58 2003 UTC revision 1.6 by npo, Wed Sep 24 21:30:35 2003 UTC
# Line 308  doit (int sockfd, struct sockaddr_in *fr Line 308  doit (int sockfd, struct sockaddr_in *fr
308    int           pv1[2], pv2[2];    int           pv1[2], pv2[2];
309    fd_set                wready, writeto;    fd_set                wready, writeto;
310    int keytype, keylen;    int keytype, keylen;
311      int cksumtype, cksumlen = 30;
312      char cksum[30];
313  #endif  #endif
314    
315    signal(SIGINT, SIG_DFL);    signal(SIGINT, SIG_DFL);
# Line 567  doit (int sockfd, struct sockaddr_in *fr Line 569  doit (int sockfd, struct sockaddr_in *fr
569          int rc;          int rc;
570          char * err_msg = NULL;          char * err_msg = NULL;
571    
572          rc = get_auth (STDIN_FILENO, &h, &enckey, &err_msg, &protocol);          rc = get_auth (STDIN_FILENO, &h, &enckey, &err_msg, &protocol,
573                           &cksumtype, cksum, &cksumlen);
574          if (rc != SHISHI_OK)          if (rc != SHISHI_OK)
575          {          {
576            error ("Kerberos authentication failure: %s\n", err_msg);            error ("Kerberos authentication failure: %s\n", err_msg);
# Line 588  doit (int sockfd, struct sockaddr_in *fr Line 591  doit (int sockfd, struct sockaddr_in *fr
591   {   {
592     int error;     int error;
593     int rc;     int rc;
594       char * compcksum;
595       size_t compcksumlen;
596       char cksumdata[100];
597       struct sockaddr_in sock;
598       size_t socklen;    
599    
600  #ifdef ENCRYPTION  #ifdef ENCRYPTION
601     if (strlen (cmdbuf) >= 3)     if (strlen (cmdbuf) >= 3)
# Line 646  doit (int sockfd, struct sockaddr_in *fr Line 654  doit (int sockfd, struct sockaddr_in *fr
654         //error ("Kerberos authentication failure: %s\n", err_msg);         //error ("Kerberos authentication failure: %s\n", err_msg);
655         exit (1);         exit (1);
656       }       }
657    
658       /* verify checksum */
659      
660       /* Doesn't give socket port ?
661       if (getsockname (STDIN_FILENO, (struct sockaddr *)&sock, &socklen) < 0)
662         {
663           syslog (LOG_ERR, "Can't get sock name");
664           exit (1);
665         }
666       */
667       snprintf (cksumdata, 100, "544:%s%s", /*ntohs(sock.sin_port),*/ cmdbuf, locuser);  
668       rc = shishi_checksum (h, enckey, 0, cksumtype, cksumdata,
669                             strlen (cksumdata), &compcksum, &compcksumlen);
670       if ((rc != SHISHI_OK) || (compcksumlen != cksumlen) || (memcmp (compcksum, cksum, cksumlen) != 0))
671         {
672           /* err_msg crash ? */
673           /* *err_msg = "checksum verify failed"; */
674           syslog (LOG_ERR, "checksum verify failed: %s", shishi_error (h));
675           free (compcksum);
676           exit (1);      
677         }
678    
679       free (compcksum);
680    
681   }   }
682  #endif  #endif
683    

Legend:
Removed from v.1.5  
changed lines
  Added in v.1.6

savannah-hackers-public@gnu.org
ViewVC Help
Powered by ViewVC 1.1.26