commit-inetutils
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[SCM] GNU Inetutils branch, master, updated. inetutils-1_9_1-126-g7129b


From: Mats Erik Andersson
Subject: [SCM] GNU Inetutils branch, master, updated. inetutils-1_9_1-126-g7129ba4
Date: Tue, 10 Jul 2012 17:07:02 +0000

This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "GNU Inetutils ".

The branch, master has been updated
       via  7129ba40720e8a4c3da62b4af6764557f3c0842e (commit)
      from  3da88b201d8397b2a7906a9ee8194fbfae247338 (commit)

Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.

- Log -----------------------------------------------------------------
http://git.savannah.gnu.org/cgit/inetutils.git/commit/?id=7129ba40720e8a4c3da62b4af6764557f3c0842e


commit 7129ba40720e8a4c3da62b4af6764557f3c0842e
Author: Mats Erik Andersson <address@hidden>
Date:   Tue Jul 10 18:59:22 2012 +0200

    rshd: 64-bit issue with libshishi.

diff --git a/ChangeLog b/ChangeLog
index 9be716a..70fb0d9 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,20 @@
+2012-07-10  Mats Erik Andersson  <address@hidden>
+
+       rshd: Resolve conflicts `int' versus `size_t'.
+       Inappropriate use of `int' leads to failure
+       of authentication on 64-bit architectures.
+
+       * libinetutils/shishi.c (shishi_auth): Let OUTLEN
+       be `size_t'. Read and write lengths using MSGLEN.
+       (get_auth): New argument type `size_t *cksumlen'.
+       Let OUTLEN be `size_t'.  New variable LEN.
+       (readenc, writeenc): New type `size_t outlen'.
+       * libinetutils/shishi_def.h (shishi_auth):
+       Modified signature.
+       * src/rlogind.c (do_shishi_login): Use `size_t'
+       for CKSUMLEN and `socklen_t' for SOCKLEN.
+       * src/rshd.c (doit) [SHISHI]: Likewise.
+
 2012-07-07  Mats Erik Andersson  <address@hidden>
 
        * src/rshd.c (doit) <PAM_NEW_AUTHTOK_REQD>:
diff --git a/libinetutils/shishi.c b/libinetutils/shishi.c
index 25c54a0..e49718e 100644
--- a/libinetutils/shishi.c
+++ b/libinetutils/shishi.c
@@ -41,7 +41,7 @@ shishi_auth (Shishi ** handle, int verbose, char **cname,
 
   int rc;
   char *out;
-  int outlen;
+  size_t outlen;
   int krb5len, msglen;
   char *tmpserver;
   char auth;
@@ -178,7 +178,8 @@ shishi_auth (Shishi ** handle, int verbose, char **cname,
 
   /* send size of AP-REQ to the server */
 
-  msglen = htonl (outlen);
+  msglen = outlen;
+  msglen = htonl (msglen);
   write (sock, (char *) &msglen, sizeof (int));
 
   /* send AP-REQ to the server */
@@ -200,10 +201,10 @@ shishi_auth (Shishi ** handle, int verbose, char **cname,
 
       /* read size of the AP-REP */
 
-      read (sock, (char *) &outlen, sizeof (int));
+      read (sock, (char *) &msglen, sizeof (int));
 
       /* read AP-REP */
-      outlen = ntohl (outlen);
+      outlen = ntohl (msglen);
       outlen = read (sock, out, outlen);
 
       rc = shishi_ap_rep_verify_der (ap, out, outlen);
@@ -245,11 +246,11 @@ senderror (int s, char type, char *buf)
 int
 get_auth (int infd, Shishi ** handle, Shishi_ap ** ap,
          Shishi_key ** enckey, const char **err_msg, int *protoversion,
-         int *cksumtype, char **cksum, int *cksumlen, char *srvname)
+         int *cksumtype, char **cksum, size_t *cksumlen, char *srvname)
 {
   Shishi_key *key;
   char *out;
-  int outlen;
+  size_t outlen;
   char *buf;
   int buflen;
   int len;
@@ -451,12 +452,15 @@ get_auth (int infd, Shishi ** handle, Shishi_ap ** ap,
 
   if (shishi_apreq_mutual_required_p (*handle, shishi_ap_req (*ap)))
     {
+      int len;
+
       rc = shishi_ap_rep_der (*ap, &out, &outlen);
       if (rc != SHISHI_OK)
        return rc;
 
-      outlen = htonl (outlen);
-      rc = write (infd, &outlen, sizeof (int));
+      len = outlen;
+      len = htonl (len);
+      rc = write (infd, &len, sizeof (len));
       if (rc != sizeof (int))
        {
          *err_msg = "Error sending AP-REP";
@@ -464,8 +468,8 @@ get_auth (int infd, Shishi ** handle, Shishi_ap ** ap,
          return SHISHI_IO_ERROR;
        }
 
-      rc = write (infd, out, ntohl (outlen));
-      if (rc != ntohl (outlen))
+      rc = write (infd, out, ntohl (len));
+      if (rc != ntohl (len))
        {
          *err_msg = "Error sending AP-REP";
          free (out);
@@ -512,7 +516,7 @@ readenc (Shishi * h, int sock, char *buf, int *len, 
shishi_ivector * iv,
 
   int rc;
   int val;
-  int outlen;
+  size_t outlen;
   int dlen = 0, blocksize, enctype, hashsize;
 
   /* read size of message */
@@ -637,7 +641,8 @@ writeenc (Shishi * h, int sock, char *buf, int wlen, int 
*len,
   char *bufbis;
 
   int rc;
-  int dlen, outlen;
+  int dlen;
+  size_t outlen;
 
   dlen = wlen;
   dlen = htonl (dlen);
diff --git a/libinetutils/shishi_def.h b/libinetutils/shishi_def.h
index d574665..71ef2d7 100644
--- a/libinetutils/shishi_def.h
+++ b/libinetutils/shishi_def.h
@@ -62,7 +62,7 @@ extern int shishi_auth (Shishi ** handle, int verbose, char 
**cname,
 extern int get_auth (int infd, Shishi ** handle, Shishi_ap ** ap,
                     Shishi_key ** enckey, const char **err_msg,
                     int *protoversion, int *cksumtype, char **cksum,
-                    int *cksumlen, char *srvname);
+                    size_t *cksumlen, char *srvname);
 
 extern int readenc (Shishi * h, int sock, char *buf, int *len,
                    shishi_ivector * iv, Shishi_key * enckey, int proto);
diff --git a/src/rlogind.c b/src/rlogind.c
index 86cf17c..c7745ca 100644
--- a/src/rlogind.c
+++ b/src/rlogind.c
@@ -1182,13 +1182,13 @@ do_shishi_login (int infd, struct auth_data *ad, const 
char **err_msg)
   int error = 0;
   int keylen, keytype;
   struct passwd *pwd = NULL;
-  int cksumtype, cksumlen = 30;
+  int cksumtype;
   char *cksum;
   char *compcksum;
-  size_t compcksumlen;
+  size_t compcksumlen, cksumlen = 30;
   char cksumdata[100];
   struct sockaddr_in sock;
-  size_t socklen = sizeof (sock);
+  socklen_t socklen = sizeof (sock);
 
 #  ifdef ENCRYPTION
   rc = get_auth (infd, &ad->h, &ad->ap, &ad->enckey, err_msg, &ad->protocol,
diff --git a/src/rshd.c b/src/rshd.c
index b6b1303..5cf796c 100644
--- a/src/rshd.c
+++ b/src/rshd.c
@@ -422,7 +422,8 @@ doit (int sockfd, struct sockaddr *fromp, socklen_t fromlen)
   int pv1[2], pv2[2];
   fd_set wready, writeto;
   int keytype, keylen;
-  int cksumtype, cksumlen;
+  int cksumtype;
+  size_t cksumlen;
   char *cksum = NULL;
 #endif /* KERBEROS || SHISHI */
 
@@ -844,7 +845,7 @@ doit (int sockfd, struct sockaddr *fromp, socklen_t fromlen)
       size_t compcksumlen;
       char cksumdata[100];
       struct sockaddr_storage sock;
-      size_t socklen;
+      socklen_t socklen;
 
 # ifdef ENCRYPTION
       if (strlen (cmdbuf) >= 3)

-----------------------------------------------------------------------

Summary of changes:
 ChangeLog                 |   17 +++++++++++++++++
 libinetutils/shishi.c     |   29 +++++++++++++++++------------
 libinetutils/shishi_def.h |    2 +-
 src/rlogind.c             |    6 +++---
 src/rshd.c                |    5 +++--
 5 files changed, 41 insertions(+), 18 deletions(-)


hooks/post-receive
-- 
GNU Inetutils 



reply via email to

[Prev in Thread] Current Thread [Next in Thread]