]> andersk Git - openssh.git/blobdiff - buffer.c
- dtucker@cvs.openbsd.org 2004/02/27 22:44:56
[openssh.git] / buffer.c
index 8ff8c2f48b4f2e01b38523924fbfed860e319dfd..9217cb2695cf9ad68be4545b4d76ab9fced181d4 100644 (file)
--- a/buffer.c
+++ b/buffer.c
@@ -12,7 +12,7 @@
  */
 
 #include "includes.h"
-RCSID("$OpenBSD: buffer.c,v 1.17 2003/09/16 03:03:47 deraadt Exp $");
+RCSID("$OpenBSD: buffer.c,v 1.21 2003/11/21 11:57:03 djm Exp $");
 
 #include "xmalloc.h"
 #include "buffer.h"
@@ -23,8 +23,11 @@ RCSID("$OpenBSD: buffer.c,v 1.17 2003/09/16 03:03:47 deraadt Exp $");
 void
 buffer_init(Buffer *buffer)
 {
-       buffer->alloc = 4096;
-       buffer->buf = xmalloc(buffer->alloc);
+       const u_int len = 4096;
+
+       buffer->alloc = 0;
+       buffer->buf = xmalloc(len);
+       buffer->alloc = len;
        buffer->offset = 0;
        buffer->end = 0;
 }
@@ -34,8 +37,11 @@ buffer_init(Buffer *buffer)
 void
 buffer_free(Buffer *buffer)
 {
-       memset(buffer->buf, 0, buffer->alloc);
-       xfree(buffer->buf);
+       if (buffer->alloc > 0) {
+               memset(buffer->buf, 0, buffer->alloc);
+               buffer->alloc = 0;
+               xfree(buffer->buf);
+       }
 }
 
 /*
@@ -99,7 +105,7 @@ restart:
                goto restart;
        }
        /* Increase the size of the buffer and retry. */
-       
+
        newlen = buffer->alloc + len + 32768;
        if (newlen > 0xa00000)
                fatal("buffer_append_space: alloc %u not supported",
@@ -163,7 +169,7 @@ buffer_ptr(Buffer *buffer)
 void
 buffer_dump(Buffer *buffer)
 {
-       int i;
+       u_int i;
        u_char *ucp = buffer->buf;
 
        for (i = buffer->offset; i < buffer->end; i++) {
This page took 0.591596 seconds and 4 git commands to generate.