Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Purge the buffer used in type conversion. #263

Merged
merged 1 commit into from
Mar 19, 2021
Merged

Conversation

rainwoodman
Copy link
Contributor

Some of the uninitialized bits in the buffer may get carried through
all the way to disk, creating a risk for leaks.

We observed an msan error during the floating point output conversion.
Due to the encoding certain bits could remain untouched during the conversion.

In this draft we zero initialize the dbuf buffer used by every converter.

@schwehr

Some of the uniniitialized bits in the buffer may get carried through
all the way to disk, creating a risk for leaks.

We observed an msan error during the floating point output conversion.
Due to the encoding certain bits could remain untouched during the conversion.

In this draft we zero initialize the dbuf used by every convertor.
@qkoziol
Copy link
Contributor

qkoziol commented Jan 14, 2021

Seems like a reasonable direction - do you have a test case that shows the issue?

@rainwoodman
Copy link
Contributor Author

rainwoodman commented Jan 14, 2021

I have a case, but not a test case.

The error occurred during a memory sanitizer run on this h5py test:
https://github.com/h5py/h5py/blob/2.10.x/h5py/tests/test_h5t.py

Here is what the error report says (sorry for the scrubbing):

Uninitialized bytes in __interceptor_write at offset 1 inside [??, 56)
WARNING: MemorySanitizer: use-of-uninitialized-value
    #0 ?? in H5FD_sec2_write hdf5/src/H5FDsec2.c:??:?
    #1 ?? in H5FD_write hdf5/src/H5FDint.c:??:?
    #2 ?? in H5F__accum_write hdf5/src/H5Faccum.c:??:?
    #3 ?? in H5F_block_write hdf5/src/H5Fio.c:??:?
    #4 ?? in H5D__flush_sieve_buf hdf5/src/H5Dint.c:??:?
    #5 ?? in H5D__contig_flush hdf5/src/H5Dcontig.c:??:?
    #6 ?? in H5D__flush_real hdf5/src/H5Dint.c:??:?
    #7 ?? in H5D_close hdf5/src/H5Dint.c:??:?
    #8 ?? in H5I_dec_ref hdf5/src/H5I.c:??:?
    #9 ?? in H5I_dec_app_ref hdf5/src/H5I.c:??:?
    #10 ?? in H5Idec_ref hdf5/src/H5I.c:??:?
...
...

  Uninitialized value was stored to memory at
    #0 ?? in __msan_memcpy llvm/llvm-project/compiler-rt/lib/msan/msan_interceptors.cpp:??:?
    #1 ?? in H5D__contig_writevv_sieve_cb hdf5/src/H5Dcontig.c:??:?
    #2 ?? in H5VM_opvv hdf5/src/H5VM.c:??:?
    #3 ?? in H5D__contig_writevv hdf5/src/H5Dcontig.c:??:?
    #4 ?? in H5D__scatter_file hdf5/src/H5Dscatgath.c:??:?
    #5 ?? in H5D__scatgath_write hdf5/src/H5Dscatgath.c:??:?
    #6 ?? in H5D__contig_write hdf5/src/H5Dcontig.c:??:?
    #7 ?? in H5D__write hdf5/src/H5Dio.c:??:?
    #8 ?? in H5D__pre_write hdf5/src/H5Dio.c:??:?
    #9 ?? in H5Dwrite hdf5/src/H5Dio.c:??:?
...
...

  Uninitialized value was stored to memory at
    #0 ?? in __msan_memcpy llvm/llvm-project/compiler-rt/lib/msan/msan_interceptors.cpp:??:?
    #1 ?? in H5T__conv_f_f hdf5/src/H5Tconv.c:??:?
    #2 ?? in H5T_convert hdf5/src/H5T.c:??:?
    #3 ?? in H5D__scatgath_write hdf5/src/H5Dscatgath.c:??:?
    #4 ?? in H5D__contig_write hdf5/src/H5Dcontig.c:??:?
    #5 ?? in H5D__write hdf5/src/H5Dio.c:??:?
    #6 ?? in H5D__pre_write hdf5/src/H5Dio.c:??:?
    #7 ?? in H5Dwrite hdf5/src/H5Dio.c:??:?
...
...

  Uninitialized value was stored to memory at
    #0 ?? in H5T__bit_copy hdf5/src/H5Tbit.c:??:?
    #1 ?? in H5T__bit_set_d hdf5/src/H5Tbit.c:??:?
    #2 ?? in H5T__conv_f_f hdf5/src/H5Tconv.c:??:?
    #3 ?? in H5T_convert hdf5/src/H5T.c:??:?
    #4 ?? in H5D__scatgath_write hdf5/src/H5Dscatgath.c:??:?
    #5 ?? in H5D__contig_write hdf5/src/H5Dcontig.c:??:?
    #6 ?? in H5D__write hdf5/src/H5Dio.c:??:?
    #7 ?? in H5D__pre_write hdf5/src/H5Dio.c:??:?
    #8 ?? in H5Dwrite hdf5/src/H5Dio.c:??:?
...
...
  Uninitialized value was stored to memory at
    #0 ?? in H5T__bit_copy hdf5/src/H5Tbit.c:??:?
    #1 ?? in H5T__conv_f_f hdf5/src/H5Tconv.c:??:?
    #2 ?? in H5T_convert hdf5/src/H5T.c:??:?
    #3 ?? in H5D__scatgath_write hdf5/src/H5Dscatgath.c:??:?
    #4 ?? in H5D__contig_write hdf5/src/H5Dcontig.c:??:?
    #5 ?? in H5D__write hdf5/src/H5Dio.c:??:?
    #6 ?? in H5D__pre_write hdf5/src/H5Dio.c:??:?
    #7 ?? in H5Dwrite hdf5/src/H5Dio.c:??:?
...
...
  Uninitialized value was stored to memory at
    #0 ?? in H5T__bit_copy hdf5/src/H5Tbit.c:??:?
    #1 ?? in H5T__conv_f_f hdf5/src/H5Tconv.c:??:?
    #2 ?? in H5T_convert hdf5/src/H5T.c:??:?
    #3 ?? in H5D__scatgath_write hdf5/src/H5Dscatgath.c:??:?
    #4 ?? in H5D__contig_write hdf5/src/H5Dcontig.c:??:?
    #5 ?? in H5D__write hdf5/src/H5Dio.c:??:?
    #6 ?? in H5D__pre_write hdf5/src/H5Dio.c:??:?
    #7 ?? in H5Dwrite hdf5/src/H5Dio.c:??:?
...
...
  Uninitialized value was stored to memory at
    #0 ?? in H5T__bit_copy hdf5/src/H5Tbit.c:??:?
    #1 ?? in H5T__conv_f_f hdf5/src/H5Tconv.c:??:?
    #2 ?? in H5T_convert hdf5/src/H5T.c:??:?
    #3 ?? in H5D__scatgath_write hdf5/src/H5Dscatgath.c:??:?
    #4 ?? in H5D__contig_write hdf5/src/H5Dcontig.c:??:?
    #5 ?? in H5D__write hdf5/src/H5Dio.c:??:?
    #6 ?? in H5D__pre_write hdf5/src/H5Dio.c:??:?
    #7 ?? in H5Dwrite hdf5/src/H5Dio.c:??:?
...
...

  Uninitialized value was created by an allocation of 'dbuf' in the stack frame of function 'H5T__conv_f_f'
    #0 ?? in H5T__conv_f_f hdf5/src/H5Tconv.c:4012

SUMMARY: MemorySanitizer: use-of-uninitialized-value hdf5/src/H5FDsec2.c:??:? in H5FD_sec2_write
Exiting

@rainwoodman
Copy link
Contributor Author

On a related note, should we set up some sanitizer tests on the CI?

@byrnHDF
Copy link
Contributor

byrnHDF commented Jan 23, 2021

On a related note, should we set up some sanitizer tests on the CI?

We do run sanitizer checks on internal systems (tests are time intensive), and this has been on our list, just not enough resource available. I will try the change on a local system to verify.

@epourmal
Copy link

epourmal commented Jan 23, 2021 via email

@schwehr
Copy link

schwehr commented Jan 23, 2021

Consider applying to use Google's OSS Fuzz

https://github.com/google/oss-fuzz/tree/master/projects

Copy link
Contributor

@byrnHDF byrnHDF left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I implemented these changes and then ran a clang -fsanitize=address run and the same 74 issues showed in the log.
I think there needs to be a definitive test showing what this change affects.
Although, initializing is always a good idea in my opinion, but what is the performance hit/improvement?

@byrnHDF
Copy link
Contributor

byrnHDF commented Jan 24, 2021

I implemented these changes and then ran a clang -fsanitize=address run and the same 74 issues showed in the log.
I think there needs to be a definitive test showing what this change affects.
Although, initializing is always a good idea in my opinion, but what is the performance hit/improvement?

One of the stack traces involved:
Uninitialized bytes in __interceptor_pwrite64 at offset 0 inside [0x70e000000000, 88)
use-of-uninitialized-value ==617974==WARNING: MemorySanitizer: use-of-uninitialized-value
#0 0x7fba35ee527e in H5FD__sec2_write /home/byrn/HDF_Projects/hdf5/dev/src/H5FDsec2.c:850:27
#1 0x7fba35e9239c in H5FD_write /home/byrn/HDF_Projects/hdf5/dev/src/H5FDint.c:239:9
#2 0x7fba35cb9f8e in H5F__accum_write /home/byrn/HDF_Projects/hdf5/dev/src/H5Faccum.c:830:13
#3 0x7fba36aa2837 in H5PB_write /home/byrn/HDF_Projects/hdf5/dev/src/H5PB.c:1020:13
#4 0x7fba35d3bef9 in H5F_shared_block_write /home/byrn/HDF_Projects/hdf5/dev/src/H5Fio.c:190:9
#5 0x7fba358c913a in H5D__chunk_flush_entry /home/byrn/HDF_Projects/hdf5/dev/src/H5Dchunk.c:3417:13
#6 0x7fba358e7df7 in H5D__chunk_unlock /home/byrn/HDF_Projects/hdf5/dev/src/H5Dchunk.c:4132:17
#7 0x7fba3589cdd2 in H5D__chunk_write /home/byrn/HDF_Projects/hdf5/dev/src/H5Dchunk.c:2736:17
#8 0x7fba35a6be41 in H5D__write /home/byrn/HDF_Projects/hdf5/dev/src/H5Dio.c:531:9
#9 0x7fba3766f47f in H5VL__native_dataset_write /home/byrn/HDF_Projects/hdf5/dev/src/H5VLnative_dataset.c:206:9
#10 0x7fba3757f221 in H5VL__dataset_write /home/byrn/HDF_Projects/hdf5/dev/src/H5VLcallback.c:2082:9
#11 0x7fba3757dd80 in H5VL_dataset_write /home/byrn/HDF_Projects/hdf5/dev/src/H5VLcallback.c:2114:9
#12 0x7fba3581daea in H5D__write_api_common /home/byrn/HDF_Projects/hdf5/dev/src/H5D.c:1105:9
#13 0x7fba3581c115 in H5Dwrite /home/byrn/HDF_Projects/hdf5/dev/src/H5D.c:1154:9
#14 0x5d51a0 in test_filter_internal /home/byrn/HDF_Projects/hdf5/dev/test/dsets.c:1964:9
#15 0x4bc55f in test_filters /home/byrn/HDF_Projects/hdf5/dev/test/dsets.c:2566:9
#16 0x4a1a1f in main /home/byrn/HDF_Projects/hdf5/dev/test/dsets.c:15212:29
#17 0x7fba350f31e1 in __libc_start_main (/lib64/libc.so.6+0x281e1)
#18 0x41fd2d in _start (/home/byrn/HDF_Projects/build/hdf5/dev_gen_msan_dbg/bin/dsets+0x41fd2d)

SUMMARY: MemorySanitizer: use-of-uninitialized-value /home/byrn/HDF_Projects/hdf5/dev/src/H5FDsec2.c:850:27 in H5FD__sec2_write

@rainwoodman
Copy link
Contributor Author

@byrnHDF Could you also add track-origins to the run to see where the error is from?

Our local version is significantly behind the develop branch.
Locally I also used a hack that added zeroing in H5FL_blk_malloc. I didn't include the zeroing because before filing the PR I checked that the calling point has been modified to call the corresponding calloc function in the current develop branch.

@lrknox lrknox merged commit 1c8b3db into HDFGroup:develop Mar 19, 2021
lrknox added a commit that referenced this pull request Apr 1, 2021
* Snapshot version 1.12 release 1-3.  Update  version to 1.12.1-4.

* First cut of the H5 public API documentation. (#80)

* First cut of the H5 public API documentation.

* Added H5Z "bonus track."

* Applied Quincey's patch.

* Added the missing patches from Quincey's original patch.

* H5PL (complete) and basic H5VL API documentation.

* Added H5I API docs.

* Added H5L API docs.

* First installment from Elena's H5T batch.

* Second installment of Elena's H5T batch.

* Final installment of Elena's H5T batch.

* Full set of current H5F documentation. (#105)

* First cut of the H5 public API documentation.

* Added H5Z "bonus track."

* Applied Quincey's patch.

* Added the missing patches from Quincey's original patch.

* H5PL (complete) and basic H5VL API documentation.

* Added H5I API docs.

* Added H5L API docs.

* First installment from Elena's H5T batch.

* Second installment of Elena's H5T batch.

* Final installment of Elena's H5T batch.

* Migrated documentation for SWMR functions.

* Catching up on MDC functions.

* Integrated the H5F MDC function documentation.

* Added MDC and parallel H5F functions.

* Slightly updated main page.

* Added doxygen/dox/H5AC_cache_config_t.dox to MANIFEST.

* Doxygen - added (mostly) beginner functions (#112)

* Doxygen - added (mostly) beginner functions

* Removed duplicate H5Pset_szip function

* Add src/H5module.h to MANIFEST.

* close #195. (#196)

* Update HDF5PluginMacros.cmake

* Update HDF5PluginMacros.cmake

* Avoid aligned access for references by decoding into temporary buffer and then copying the result into the actual buffer.   Update test to be more thorough with using compound datatype fields everywhere. (#206)

* Modify temporary rpath for testing in java example scripts. (#230)

* Fix undefined left shifting of negative numbers (#338)

Undefined Bahavior Sanitizer errored here about left shifting negative numbers.

* Fixes various warnings noticed on Windows (#425)

* Fixes various warnings noticed on Windows

- Adds a prototype for our implementation of vasprintf
- Return type of H5_get_utf16_str() is now non-const
- Fixes possible uninitialized return type in Wremove_utf8
- Better isolation of fork() code in accum.c:test_swmr_write_big()
- Better isolation of non-zlib code in dsets.c:test_filter_delete()
- Removed unused variable in trefer.c:test_reference_cmpnd_obj()

* Fixes clang-format issues

* Applied clang-tidy readability-non-const-parameter warning fixes auto… (#429)

* Automatically applied clang-tidy readability-avoid-const-params-in-decls fixes

Removes useless const declarations.

* Fixed most readability-non-const-parameter warnings

These changes were made automatically by clang-tidy, but I manually reverted the changes related to the H5Z_func_t signature.

* Reformat source with clang v10.0.1.

Co-authored-by: Larry Knox <lrknox@hdfgroup.org>

* Added C++11 override keyword where appropriate (#433)

Added H5_OVERRIDE macro for compatibility with both C++11 and older.

* Various clang tidy warning fixes (#448)

* Fixed clang-tidy bugprone-reserved-identifier warnings

* Fixed clang-tidy bugprone-assert-side-effect warnings

* Fixed clang-tidy bugprone-copy-constructor-init warning

* Fixed clang-tidy readability-redundant-preprocessor warning

For error_test.c the removed code was already dead, because it was in the else of an `#if H5_USE_16_API` block.

Based on H5Location.h, I think p_get_ref_obj_type was meant to be in `#ifndef DOXYGEN_SHOULD_SKIP_THIS` and an `#endif` was missing.  Similarly, in the header, getObjTypeByIdx is only in H5_NO_DEPRECATED_SYMBOLS, not DOXYGEN_SHOULD_SKIP_THIS.

* Fixed clang-tidy readability-redundant-string-init warnings

* Fixed some clang-tidy performance-type-promotion-in-math-fn warnings

* Fixed clang-tidy performance-unnecessary-value-param warnings

* Reformat source with clang v10.0.1.

Co-authored-by: Larry Knox <lrknox@hdfgroup.org>

* Removed checks/workarounds for pre-C++89 compatibility (#449)

After 30+ years, just assume that the following exist:
- extension-less includes
- namespaces
- std::
- static_cast
- bool

* Fixed all clang-tidy bugprone-suspicious-string-compare warnings (#451)

* Fixed all clang-tidy bugprone-suspicious-string-compare warnings

This change was generated entirely by clang-tidy itself.

* Reformat code with clang v10.0.1.

Co-authored-by: Larry Knox <lrknox@hdfgroup.org>

* Remove 2 functions incorrectly merged from develop in a cherry-pick merge of PR #451.

* Purge the buffer used in type conversion. (#263)

Some of the uniniitialized bits in the buffer may get carried through
all the way to disk, creating a risk for leaks.

We observed an msan error during the floating point output conversion.
Due to the encoding certain bits could remain untouched during the conversion.

In this draft we zero initialize the dbuf used by every convertor.

* Fixed HDFFV-10480 (CVE-2018-11206) and HDFFV-11159 (CVE-2018-14033) (#405)

* Fixed HDFFV-10480 (CVE-2018-11206) and HDFFV-11159 (CVE-2018-14033)
Description
    Checked against buffer size to prevent segfault, in case of data corruption.

    + HDFFV-11159 CVE-2018-14033 Buffer over-read in H5O_layout_decode
    + HDFFV-10480 CVE-2018-11206 Buffer over-read in H5O_fill_new[/old]_decode
Platforms tested:
    Linux/64 (jelly)

* Accidentally left in another occurrence of the previous patch from user
   after a more correct fix was applied, that is the check now accounted
   for the previous advance of the buffer pointer.  Removed it.

* Typo

* Fixed format issues.

* Added test.

* Changed arguments to ADD_H5_TEST

* Fixing arguments to ADD_H5_TEST again.

* Fixing arguments again.

* Took out the CMake changes until Allen can help.

* Added files:

tCVE_2018_11206_fill_old.h5
tCVE_2018_11206_fill_new.h5

* Revert "Took out the CMake changes until Allen can help."

This reverts commit c21324d.

* Revert "Fixing arguments again."

This reverts commit 5832a70.

* Revert "Fixing arguments to ADD_H5_TEST again."

This reverts commit b45de82.

* Revert "Changed arguments to ADD_H5_TEST"

This reverts commit 1671982.

* Added first argument to ADD_H5_TEST for HDFFV-10480 fix.

* Changed argument 0 to 1

* Revert "Changed argument 0 to 1"

This reverts commit b343d66.

* Revert "Added first argument to ADD_H5_TEST for HDFFV-10480 fix."

This reverts commit b8a0f9a.

* Added first argument and corrected the second.

* Updated fixes for HDFFV-10480 and HDFFV-11159/HDFFV-11049

* Improved error messages.

* Added description of the current HDF5 branches; added a draft of contribution policy. (#445)

* Added description of the current HDF5 branches.

* Removed capitalization in from Develop, Release, Feature to reflect the real naming schema

* Added a draft of contributions guidance document.

* Fixed typos.

* Fixed section title.

* Fixed typo.

* Fixed typos and formatting.

* Fixed many typos and simplified the text (e.g., removed testing instructions and left pointers to where to find them, etc.)

* Fixed a typo.
 Please enter the commit message for your changes. Lines starting

* Added contributing.md file and rearranged doc entries in alphabetical order.

* ddressed Gerd's review comments; found and fixed more typos.

* Addressed comments from Larry and Scot.

* Fix CMake error message location. (#478)

Print error message if Perl is not found.

* Committing clang-format changes

Co-authored-by: Gerd Heber <gheber@hdfgroup.org>
Co-authored-by: bljhdf <58825073+bljhdf@users.noreply.github.com>
Co-authored-by: H. Joe Lee <hyoklee@hdfgroup.org>
Co-authored-by: Quincey Koziol <quincey@koziol.cc>
Co-authored-by: Sean McBride <sean@rogue-research.com>
Co-authored-by: Dana Robinson <43805+derobins@users.noreply.github.com>
Co-authored-by: Yu Feng <rainwoodman@gmail.com>
Co-authored-by: bmribler <39579120+bmribler@users.noreply.github.com>
Co-authored-by: epourmal <epourmal@hdfgroup.org>
Co-authored-by: github-actions <41898282+github-actions[bot]@users.noreply.github.com>
lrknox added a commit that referenced this pull request Apr 2, 2021
* close #195. (#196)

* Update HDF5PluginMacros.cmake

* Update HDF5PluginMacros.cmake

* Modify temporary rpath for testing in java example scripts. (#230)

* Fix undefined left shifting of negative numbers (#338)

Undefined Bahavior Sanitizer errored here about left shifting negative numbers.

* Update license url (#332)

* Modify temporary rpath for testing in java example scripts.

* Update URL in source file Copyright headers for web copy of COPYING
file - src and test directories.

* Cleans up a couple of MSVC warnings in testhdf5 (#475)
* Fixes a few testhdf5 warnings raised in Visual Studio

Visual Studio is grumpier about treating pointers like integers than
gcc.

* Committing clang-format changes

Co-authored-by: github-actions <41898282+github-actions[bot]@users.noreply.github.com>

* Fix typos and grammar errors. (#476)

* Suppresses the tcheck_version test's abort dialog on Windows (#477)

* Suppresses the tcheck_version test's abort dialog on Windows

Windows raises a modal abort/retry/ignore dialog box when CRT
calls abort(). This change installs a report hook that suppresses
the dialog so that the CMake tests don't time out waiting for a
nonexistent user to click a dialog box.

* Committing clang-format changes

* Removes __cdecl from callback

Co-authored-by: github-actions <41898282+github-actions[bot]@users.noreply.github.com>

* Purge the buffer used in type conversion. (#263)

Some of the uniniitialized bits in the buffer may get carried through
all the way to disk, creating a risk for leaks.

We observed an msan error during the floating point output conversion.
Due to the encoding certain bits could remain untouched during the conversion.

In this draft we zero initialize the dbuf used by every convertor.

* Fixed HDFFV-10480 (CVE-2018-11206) and HDFFV-11159 (CVE-2018-14033) (#405)

* Fixed HDFFV-10480 (CVE-2018-11206) and HDFFV-11159 (CVE-2018-14033)
Description
    Checked against buffer size to prevent segfault, in case of data corruption.

    + HDFFV-11159 CVE-2018-14033 Buffer over-read in H5O_layout_decode
    + HDFFV-10480 CVE-2018-11206 Buffer over-read in H5O_fill_new[/old]_decode
Platforms tested:
    Linux/64 (jelly)

* Accidentally left in another occurrence of the previous patch from user
   after a more correct fix was applied, that is the check now accounted
   for the previous advance of the buffer pointer.  Removed it.

* Typo

* Fixed format issues.

* Added test.

* Changed arguments to ADD_H5_TEST

* Fixing arguments to ADD_H5_TEST again.

* Fixing arguments again.

* Took out the CMake changes until Allen can help.

* Added files:

tCVE_2018_11206_fill_old.h5
tCVE_2018_11206_fill_new.h5

* Revert "Took out the CMake changes until Allen can help."

This reverts commit c21324d.

* Revert "Fixing arguments again."

This reverts commit 5832a70.

* Revert "Fixing arguments to ADD_H5_TEST again."

This reverts commit b45de82.

* Revert "Changed arguments to ADD_H5_TEST"

This reverts commit 1671982.

* Added first argument to ADD_H5_TEST for HDFFV-10480 fix.

* Changed argument 0 to 1

* Revert "Changed argument 0 to 1"

This reverts commit b343d66.

* Revert "Added first argument to ADD_H5_TEST for HDFFV-10480 fix."

This reverts commit b8a0f9a.

* Added first argument and corrected the second.

* Updated fixes for HDFFV-10480 and HDFFV-11159/HDFFV-11049

* Improved error messages.

* Added description of the current HDF5 branches; added a draft of contribution policy. (#445)

* Added description of the current HDF5 branches.

* Removed capitalization in from Develop, Release, Feature to reflect the real naming schema

* Added a draft of contributions guidance document.

* Fixed typos.

* Fixed section title.

* Fixed typo.

* Fixed typos and formatting.

* Fixed many typos and simplified the text (e.g., removed testing instructions and left pointers to where to find them, etc.)

* Fixed a typo.
 Please enter the commit message for your changes. Lines starting

* Added contributing.md file and rearranged doc entries in alphabetical order.

* ddressed Gerd's review comments; found and fixed more typos.

* Addressed comments from Larry and Scot.

* Fix CMake error message location. (#478)

Print error message if Perl is not found.

* Committing clang-format changes

* Update MANIFEST.

Co-authored-by: H. Joe Lee <hyoklee@hdfgroup.org>
Co-authored-by: Sean McBride <sean@rogue-research.com>
Co-authored-by: Dana Robinson <43805+derobins@users.noreply.github.com>
Co-authored-by: github-actions <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Yu Feng <rainwoodman@gmail.com>
Co-authored-by: bmribler <39579120+bmribler@users.noreply.github.com>
Co-authored-by: epourmal <epourmal@hdfgroup.org>
@rainwoodman rainwoodman deleted the msan branch June 6, 2021 21:51
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

7 participants