* w32reg.c (read_w32_registry_string): Fixed expanding of the environment
authorDavid Shaw <dshaw@jabberwocky.com>
Wed, 6 Nov 2002 22:51:44 +0000 (22:51 +0000)
committerDavid Shaw <dshaw@jabberwocky.com>
Wed, 6 Nov 2002 22:51:44 +0000 (22:51 +0000)
buffer; didn't worked at all.  Reported by Thijmen Klok.  From Werner on
stable branch.

* secmem.c (secmem_free, secmem_term): Use wipememory2() instead of
memset() to overwrite secure memory

* iobuf.c (direct_open): Handle mode 'b' if O_BINARY is available. From
Werner on stable branch.

* fileutil.c: Comment from stable branch.

util/ChangeLog
util/fileutil.c
util/iobuf.c
util/secmem.c
util/w32reg.c

index 55e584e..4b13098 100644 (file)
@@ -1,3 +1,17 @@
+2002-11-06  David Shaw  <dshaw@jabberwocky.com>
+
+       * w32reg.c (read_w32_registry_string): Fixed expanding of the
+       environment buffer; didn't worked at all.  Reported by Thijmen
+       Klok.  From Werner on stable branch.
+
+       * secmem.c (secmem_free, secmem_term): Use wipememory2() instead
+       of memset() to overwrite secure memory
+
+       * iobuf.c (direct_open): Handle mode 'b' if O_BINARY is available.
+       From Werner on stable branch.
+
+       * fileutil.c: Comment from stable branch.
+
 2002-10-31  Stefan Bellon  <sbellon@sbellon.de>
 
        * riscos.c (riscos_load_module, riscos_check_regexp): New.
index 92dbc9e..14be8b6 100644 (file)
@@ -89,10 +89,10 @@ make_dirname(const char *filepath)
 
 
 
-/****************
- * Construct a filename from the NULL terminated list of parts.
- * Tilde expansion is done here.
- */
+/*
+  Construct a filename from the NULL terminated list of parts.  Tilde
+  expansion is done here.  Note that FIRST_PART must never be NULL and
 that this function is guaranteed to return an allocated string.  */
 char *
 make_filename( const char *first_part, ... )
 {
index a3e9ad3..953d9f3 100644 (file)
@@ -208,6 +208,10 @@ direct_open (const char *fname, const char *mode)
     else {
         oflag = O_RDONLY;
     }
+#ifdef O_BINARY
+    if (strchr (mode, 'b'))
+      oflag |= O_BINARY;
+#endif
 #ifndef __riscos__
     return open (fname, oflag, cflag );
 #else
index d077fed..0a0931a 100644 (file)
@@ -408,10 +408,10 @@ secmem_free( void *a )
     size = mb->size;
     /* This does not make much sense: probably this memory is held in the
      * cache. We do it anyway: */
-    memset(mb, 0xff, size );
-    memset(mb, 0xaa, size );
-    memset(mb, 0x55, size );
-    memset(mb, 0x00, size );
+    wipememory2(mb, 0xff, size );
+    wipememory2(mb, 0xaa, size );
+    wipememory2(mb, 0x55, size );
+    wipememory2(mb, 0x00, size );
     mb->size = size;
     mb->u.next = unused_blocks;
     unused_blocks = mb;
@@ -441,10 +441,10 @@ secmem_term()
     if( !pool_okay )
        return;
 
-    memset( pool, 0xff, poolsize);
-    memset( pool, 0xaa, poolsize);
-    memset( pool, 0x55, poolsize);
-    memset( pool, 0x00, poolsize);
+    wipememory2( pool, 0xff, poolsize);
+    wipememory2( pool, 0xaa, poolsize);
+    wipememory2( pool, 0x55, poolsize);
+    wipememory2( pool, 0x00, poolsize);
   #ifdef HAVE_MMAP
     if( pool_is_mmapped )
        munmap( pool, poolsize );
index 5391c80..aa507b2 100644 (file)
@@ -103,6 +103,7 @@ read_w32_registry_string( const char *root, const char *dir, const char *name )
         nbytes = ExpandEnvironmentStrings (result, tmp, n1);
         if (nbytes && nbytes > n1) {
             free (tmp);
+            n1 = nbytes;
             tmp = malloc (n1 + 1);
             if (!tmp)
                 goto leave;