[openssl-commits] [openssl] master update

Richard Levitte levitte at openssl.org
Thu Mar 29 09:00:32 UTC 2018

The branch master has been updated
       via  5848be0488c20591892f82a7c79c6d1637518b96 (commit)
      from  5d322036b4afbd16afa2714539cf3f85eb7669c2 (commit)

- Log -----------------------------------------------------------------
commit 5848be0488c20591892f82a7c79c6d1637518b96
Author: Richard Levitte <levitte at openssl.org>
Date:   Thu Mar 29 10:34:11 2018 +0200

    Fix setbuf use for VMS C
    The VMS C RTL has setbuf() working for short pointers only, probably
    the FILE pointer will always be in P0 (the lower 4GB).  Fortunately,
    this only generates a warning about possible data loss (doesn't apply
    in this case) that we can simply turn off.
    Reviewed-by: Tim Hudson <tjh at openssl.org>
    (Merged from https://github.com/openssl/openssl/pull/5789)


Summary of changes:
 crypto/rand/randfile.c | 14 ++++++++++++++
 1 file changed, 14 insertions(+)

diff --git a/crypto/rand/randfile.c b/crypto/rand/randfile.c
index fa6f49e..99a3f14 100644
--- a/crypto/rand/randfile.c
+++ b/crypto/rand/randfile.c
@@ -101,11 +101,25 @@ int RAND_load_file(const char *file, long bytes)
         bytes = 256;
+     * On VMS, setbuf() will only take 32-bit pointers, and a compilation
+     * with /POINTER_SIZE=64 will give off a MAYLOSEDATA2 warning here.
+     * However, we trust that the C RTL will never give us a FILE pointer
+     * above the first 4 GB of memory, so we simply turn off the warning
+     * temporarily.
+     */
+#if defined(OPENSSL_SYS_VMS) && defined(__DECC)
+# pragma environment save
+# pragma message disable maylosedata2
+    /*
      * Don't buffer, because even if |file| is regular file, we have
      * no control over the buffer, so why would we want a copy of its
      * contents lying around?
     setbuf(in, NULL);
+#if defined(OPENSSL_SYS_VMS) && defined(__DECC)
+# pragma environment restore
     for ( ; ; ) {
         if (bytes > 0)

More information about the openssl-commits mailing list