Ted Unangst <[email protected]> writes:

> Part one of this diff eliminates a series of u_long casts in favor of
> just using native size_t types. A few other type adjustments.

Wouldn't that make ssh harder to port to systems where those types
aren't available?  See for example millert's last commit to
yacc/skeleton.c.

> Part two reorders a few conditionals in sshd for protocol 1 vs 2
> handling. No functional change, just clearer and updated to reflect
> protocol 2 as the default.

This part looks fine.

> Index: mac.c
> ===================================================================
> RCS file: /cvs/src/usr.bin/ssh/mac.c,v
> retrieving revision 1.25
> diff -u -p -r1.25 mac.c
> --- mac.c     7 Nov 2013 11:58:27 -0000       1.25
> +++ mac.c     21 Dec 2013 07:40:33 -0000
> @@ -172,8 +172,8 @@ mac_compute(Mac *mac, u_int32_t seqno, u
>       u_char b[4], nonce[8];
>  
>       if (mac->mac_len > sizeof(u))
> -             fatal("mac_compute: mac too long %u %lu",
> -                 mac->mac_len, (u_long)sizeof(u));
> +             fatal("mac_compute: mac too long %u %zu",
> +                 mac->mac_len, sizeof(u));
>  
>       switch (mac->type) {
>       case SSH_EVP:
> Index: monitor_mm.c
> ===================================================================
> RCS file: /cvs/src/usr.bin/ssh/monitor_mm.c,v
> retrieving revision 1.18
> diff -u -p -r1.18 monitor_mm.c
> --- monitor_mm.c      8 Nov 2013 00:39:15 -0000       1.18
> +++ monitor_mm.c      21 Dec 2013 07:47:30 -0000
> @@ -31,6 +31,7 @@
>  
>  #include <errno.h>
>  #include <stdarg.h>
> +#include <stddef.h>
>  #include <stdlib.h>
>  #include <string.h>
>  
> @@ -42,7 +43,7 @@
>  static int
>  mm_compare(struct mm_share *a, struct mm_share *b)
>  {
> -     long diff = (char *)a->address - (char *)b->address;
> +     ptrdiff_t diff = (char *)a->address - (char *)b->address;
>  
>       if (diff == 0)
>               return (0);
> @@ -69,8 +70,8 @@ mm_make_entry(struct mm_master *mm, stru
>  
>       tmp2 = RB_INSERT(mmtree, head, tmp);
>       if (tmp2 != NULL)
> -             fatal("mm_make_entry(%p): double address %p->%p(%lu)",
> -                 mm, tmp2, address, (u_long)size);
> +             fatal("mm_make_entry(%p): double address %p->%p(%zu)",
> +                 mm, tmp2, address, size);
>  
>       return (tmp);
>  }
> @@ -96,9 +97,9 @@ mm_create(struct mm_master *mmalloc, siz
>       mm->mmalloc = mmalloc;
>  
>       address = mmap(NULL, size, PROT_WRITE|PROT_READ, MAP_ANON|MAP_SHARED,
> -         -1, (off_t)0);
> +         -1, 0);
>       if (address == MAP_FAILED)
> -             fatal("mmap(%lu): %s", (u_long)size, strerror(errno));
> +             fatal("mmap(%zu): %s", size, strerror(errno));
>  
>       mm->address = address;
>       mm->size = size;
> @@ -137,7 +138,7 @@ mm_destroy(struct mm_master *mm)
>       mm_freelist(mm->mmalloc, &mm->rb_allocated);
>  
>       if (munmap(mm->address, mm->size) == -1)
> -             fatal("munmap(%p, %lu): %s", mm->address, (u_long)mm->size,
> +             fatal("munmap(%p, %zu): %s", mm->address, mm->size,
>                   strerror(errno));
>       if (mm->mmalloc == NULL)
>               free(mm);
> @@ -152,7 +153,7 @@ mm_xmalloc(struct mm_master *mm, size_t 
>  
>       address = mm_malloc(mm, size);
>       if (address == NULL)
> -             fatal("%s: mm_malloc(%lu)", __func__, (u_long)size);
> +             fatal("%s: mm_malloc(%zu)", __func__, size);
>       memset(address, 0, size);
>       return (address);
>  }
> @@ -187,7 +188,7 @@ mm_malloc(struct mm_master *mm, size_t s
>  
>       /* Does not change order in RB tree */
>       mms->size -= size;
> -     mms->address = (u_char *)mms->address + size;
> +     mms->address = (char *)mms->address + size;
>  
>       if (mms->size == 0) {
>               RB_REMOVE(mmtree, &mm->rb_free, mms);
> @@ -240,8 +241,8 @@ mm_free(struct mm_master *mm, void *addr
>  
>       /* Check if range does not overlap */
>       if (prev != NULL && MM_ADDRESS_END(prev) > address)
> -             fatal("mm_free: memory corruption: %p(%lu) > %p",
> -                 prev->address, (u_long)prev->size, address);
> +             fatal("mm_free: memory corruption: %p(%zu) > %p",
> +                 prev->address, prev->size, address);
>  
>       /* See if we can merge backwards */
>       if (prev != NULL && MM_ADDRESS_END(prev) == address) {
> @@ -263,8 +264,8 @@ mm_free(struct mm_master *mm, void *addr
>               return;
>  
>       if (MM_ADDRESS_END(prev) > mms->address)
> -             fatal("mm_free: memory corruption: %p < %p(%lu)",
> -                 mms->address, prev->address, (u_long)prev->size);
> +             fatal("mm_free: memory corruption: %p < %p(%zu)",
> +                 mms->address, prev->address, prev->size);
>       if (MM_ADDRESS_END(prev) != mms->address)
>               return;
>  
> @@ -335,12 +336,12 @@ mm_share_sync(struct mm_master **pmm, st
>  void
>  mm_memvalid(struct mm_master *mm, void *address, size_t size)
>  {
> -     void *end = (u_char *)address + size;
> +     void *end = (char *)address + size;
>  
>       if (address < mm->address)
>               fatal("mm_memvalid: address too small: %p", address);
>       if (end < address)
>               fatal("mm_memvalid: end < address: %p < %p", end, address);
> -     if (end > (void *)((u_char *)mm->address + mm->size))
> +     if (end > MM_ADDRESS_END(mm))
>               fatal("mm_memvalid: address too large: %p", address);
>  }
> Index: monitor_mm.h
> ===================================================================
> RCS file: /cvs/src/usr.bin/ssh/monitor_mm.h,v
> retrieving revision 1.5
> diff -u -p -r1.5 monitor_mm.h
> --- monitor_mm.h      29 Apr 2008 11:20:31 -0000      1.5
> +++ monitor_mm.h      21 Dec 2013 07:47:04 -0000
> @@ -47,7 +47,7 @@ RB_PROTOTYPE(mmtree, mm_share, next, mm_
>  
>  #define MM_MINSIZE           128
>  
> -#define MM_ADDRESS_END(x)    (void *)((u_char *)(x)->address + (x)->size)
> +#define MM_ADDRESS_END(x)    (void *)((char *)(x)->address + (x)->size)
>  
>  struct mm_master *mm_create(struct mm_master *, size_t);
>  void mm_destroy(struct mm_master *);
> Index: xmalloc.c
> ===================================================================
> RCS file: /cvs/src/usr.bin/ssh/xmalloc.c,v
> retrieving revision 1.28
> diff -u -p -r1.28 xmalloc.c
> --- xmalloc.c 17 May 2013 00:13:14 -0000      1.28
> +++ xmalloc.c 21 Dec 2013 07:38:23 -0000
> @@ -31,7 +31,7 @@ xmalloc(size_t size)
>               fatal("xmalloc: zero size");
>       ptr = malloc(size);
>       if (ptr == NULL)
> -             fatal("xmalloc: out of memory (allocating %lu bytes)", (u_long) 
> size);
> +             fatal("xmalloc: out of memory (allocating %zu bytes)", size);
>       return ptr;
>  }
>  
> @@ -46,8 +46,8 @@ xcalloc(size_t nmemb, size_t size)
>               fatal("xcalloc: nmemb * size > SIZE_T_MAX");
>       ptr = calloc(nmemb, size);
>       if (ptr == NULL)
> -             fatal("xcalloc: out of memory (allocating %lu bytes)",
> -                 (u_long)(size * nmemb));
> +             fatal("xcalloc: out of memory (allocating %zu bytes)",
> +                 size * nmemb);
>       return ptr;
>  }
>  
> @@ -66,8 +66,8 @@ xrealloc(void *ptr, size_t nmemb, size_t
>       else
>               new_ptr = realloc(ptr, new_size);
>       if (new_ptr == NULL)
> -             fatal("xrealloc: out of memory (new_size %lu bytes)",
> -                 (u_long) new_size);
> +             fatal("xrealloc: out of memory (new_size %zu bytes)",
> +                 new_size);
>       return new_ptr;
>  }
>  
> Index: sshd.c
> ===================================================================
> RCS file: /cvs/src/usr.bin/ssh/sshd.c,v
> retrieving revision 1.412
> diff -u -p -r1.412 sshd.c
> --- sshd.c    6 Dec 2013 13:39:49 -0000       1.412
> +++ sshd.c    21 Dec 2013 07:59:20 -0000
> @@ -397,21 +397,20 @@ sshd_exchange_identification(int sock_in
>       int mismatch;
>       int remote_major, remote_minor;
>       int major, minor;
> -     char *s, *newline = "\n";
> +     char *s, *newline = "\r\n";
>       char buf[256];                  /* Must not be larger than 
> remote_version. */
>       char remote_version[256];       /* Must be at least as big as buf. */
>  
> -     if ((options.protocol & SSH_PROTO_1) &&
> -         (options.protocol & SSH_PROTO_2)) {
> +     if ((options.protocol & SSH_PROTO_1)) {
>               major = PROTOCOL_MAJOR_1;
> -             minor = 99;
> -     } else if (options.protocol & SSH_PROTO_2) {
> +             if (options.protocol & SSH_PROTO_2)
> +                     minor = 99;
> +             else
> +                     minor = PROTOCOL_MINOR_1;
> +             newline = "\n";
> +     } else {
>               major = PROTOCOL_MAJOR_2;
>               minor = PROTOCOL_MINOR_2;
> -             newline = "\r\n";
> -     } else {
> -             major = PROTOCOL_MAJOR_1;
> -             minor = PROTOCOL_MINOR_1;
>       }
>  
>       xasprintf(&server_version_string, "SSH-%d.%d-%.100s%s%s%s",
>

-- 
jca | PGP: 0x06A11494 / 61DB D9A0 00A4 67CF 2A90  8961 6191 8FBF 06A1 1494

Reply via email to