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.

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.

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",

Reply via email to