LLNL / UnifyFS

UnifyFS: A file system for burst buffers
Other
102 stars 31 forks source link

OpenSSL3 deprecates MD5 #723

Closed rgmiller closed 10 months ago

rgmiller commented 2 years ago

System information

Type Version/Name
Operating System Ubuntu
OS Version 22.04
Architecture x86_64
UnifyFS Version Latest from Git

Describe the problem you're observing

When attempting to build UnifyFS on an Ubuntu 22.04 system, gcc prints a warning saying that the MD5 function has been deprecated. Since we compile with -Werror, this warning halts the build.

The warning stems from the OpenSSL 3 library that is now standard on Unbuntu 22.04.

Describe how to reproduce the problem

Attempt to build on any system that's upgraded to OpenSSL 3.x. (Ubuntu 22.04 is a good example.)

Include any warning or errors or releveant debugging data

Replacing the call to MD5 (unifyfs_meta.c) with calls to OpenSSL EVP_Digest* functions should be pretty straight-forward. These functions exist at least as far back as the OpenSSL versions in RHEL7, so there shouldn't be any problem with builds on older systems.

rgmiller commented 1 year ago

This can be fixed with a change to just a few lines. Specifically, we can replace the call the MD5() with one to EVP_Digest(). The two functions have similar signatures and they produce identical output.

That said, I'm not sure this is the best option. EVP_Digest() is a wrapper around EVP_DigestInit_ex(), EVP_DigestUpdate() and EVP_DigestFinal_ex(). In particular, I'm pretty sure these operations involve allocating and freeing an EVP_MD_CTX struct. It's unclear at the moment if we can do the init and finalize operations once and just re-use the context struct, though.

haampie commented 1 year ago

FWIW: In Spack I'm dropping the upperbound on unifyfs, since a deprecation warning is only a warning, and we're dropping Werror anyways. Yesterday OpenSSL 1.1.1 got deprecated, so time to move forwards