From c15818546258359c64db2bfe7158fa26e95fcae4 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Niels=20M=C3=B6ller?= <nisse@lysator.liu.se>
Date: Tue, 1 Oct 2002 17:31:54 +0200
Subject: [PATCH] * examples/io.c (read_file): Bug fix, used to overwrite
 pointer.

Rev: src/nettle/examples/io.c:1.2
---
 examples/io.c | 19 +++++++++++--------
 1 file changed, 11 insertions(+), 8 deletions(-)

diff --git a/examples/io.c b/examples/io.c
index 8ce412c0..5584c110 100644
--- a/examples/io.c
+++ b/examples/io.c
@@ -52,17 +52,18 @@ werror(const char *format, ...)
 #define MIN(a,b) (((a) < (b)) ? (a) : (b))
 
 unsigned
-read_file(const char *name, unsigned max_size, char **buffer)
+read_file(const char *name, unsigned max_size, char **contents)
 {
   unsigned size;
   unsigned done;
+  char *buffer;
   FILE *f;
     
   f = fopen(name, "rb");
   if (!f)
     return 0;
 
-  *buffer = NULL;
+  buffer = NULL;
 
   if (max_size && max_size < 100)
     size = max_size;
@@ -75,22 +76,22 @@ read_file(const char *name, unsigned max_size, char **buffer)
     {
       char *p;
 
-      if (size > max_size)
+      if (max_size && size > max_size)
 	size = max_size;
 
       /* Space for terminating NUL */
-      p = realloc(*buffer, size + 1);
+      p = realloc(buffer, size + 1);
 
       if (!p)
 	{
 	fail:
 	  fclose(f);
-	  free(*buffer);
-	  *buffer = NULL;
+	  free(buffer);
+	  *contents = NULL;
 	  return 0;
 	}
 
-      *buffer = p;
+      buffer = p;
       done += fread(buffer + done, 1, size - done, f);
 
       if (ferror(f))
@@ -100,7 +101,9 @@ read_file(const char *name, unsigned max_size, char **buffer)
   fclose(f);
 
   /* NUL-terminate the data. */
-  (*buffer)[done] = '\0';
+  buffer[done] = '\0';
+  *contents = buffer;
+  
   return done;
 }
 
-- 
GitLab