Commit Graph

8181 Commits

Author SHA1 Message Date
Ward Fisher
c0a6acaf5a
Merge branch 'main' into gh2135.wif 2021-11-04 13:56:05 -06:00
Ward Fisher
b69163a387 Preprocessing for generated ezxml files. 2021-11-04 13:46:07 -06:00
Ward Fisher
33e4ec4675
Merge pull request #2138 from DennisHeimbigner/fixosbugs.dmh
Fix a number of OS specific bugs
2021-11-04 13:36:49 -06:00
Ward Fisher
0e336208da Addressed an issue in ncbytes where long unsigned ~= size_t 2021-11-04 10:10:28 -06:00
Ward Fisher
25d3d008f6 Added missing include for read() function. 2021-11-04 10:01:27 -06:00
Ward Fisher
0471869f58 Merge remote-tracking branch 'upstream/main' into gh2135.wif 2021-11-03 13:47:35 -06:00
Ward Fisher
8f648252ee Adding control block, --enable and disable option for libxml2 to configure.ac 2021-11-03 13:40:47 -06:00
Ward Fisher
0e205f9513
Merge pull request #2137 from DennisHeimbigner/typo.dmh
Typo in previous PR
2021-11-03 13:34:47 -06:00
Ward Fisher
516a9c35d3 Updated .gitignore to ignore .vscode directory. 2021-11-03 13:14:02 -06:00
Ward Fisher
73c4cc3883 Updated release notes. 2021-11-03 13:13:25 -06:00
Dennis Heimbigner
6bd289d655 Update release notes 2021-11-03 12:52:42 -06:00
Dennis Heimbigner
55a2643cac Fix a number of OS specific bugs
1. Issue https://github.com/Unidata/netcdf-c/issues/2043
   * FreeBSD build fails because of conflicts in defining the fileno() function. So removed all extern declarations of fileno.

2. Issue https://github.com/Unidata/netcdf-c/issues/2124
   * There were a couple of problems here.
     * I was conflating msys with mingw and they need separate handling of paths. So treat mingw like windows.
     * memio.c was not always writing the full content of the memory to file. Untested fix by properly accounting for zero size writes.
     * Fix bug when skipping white space in tst_xcache.c

3. Issue https://github.com/Unidata/netcdf-c/pull/2105
   * On MINGW, bash and other POSIX utilities use a mounted root directory,
     but executables compiled for Windows do not recognise the mount point.
     Ensure that Windows paths are used in tests of Windows executables.

4. Issue https://github.com/Unidata/netcdf-c/issues/2132
   * Apparently the Intel C compiler on OSX defines isnan etc.
     So disable declaration in dutil.c under that condition.

5. Fix and re-enable test_rcmerge.sh by allowing override of where to
   look for .rc files

6. CMakeLists.txt suppresses certain ncdump directory tests because of differences in printing floats/doubles.
   * Extend the list to include those that also fail under mingw.
   * Suppress the mingw tests in ncdump/Makefile.am
2021-11-03 12:49:54 -06:00
Dennis Heimbigner
e14c17fd08 Typo in previous PR
re: https://github.com/Unidata/netcdf-c/issues/2136

Patch for: https://github.com/Unidata/netcdf-c/pull/2134/

Inadvertent error changing ->info to ->s3.
2021-11-03 12:06:50 -06:00
Ward Fisher
eead7fa6d2 Begin wiring in option to toggle automatic search for libxml2 in support of https://github.com/Unidata/netcdf-c/pulls/2135 2021-11-02 15:35:04 -06:00
Dennis Heimbigner
cf903a678a Update release notes 2021-11-01 22:40:08 -06:00
Dennis Heimbigner
53464e8963 Allow optional use of libxml2
re: https://github.com/Unidata/netcdf-c/issues/2119

H/T to [Egbert Eich](https://github.com/e4t) and [Bas Couwenberg](https://github.com/sebastic) for this PR.

It is undesirable to make netcdf be dependent on the availability
of libxml2, but it is desirable to allow its use if available.

In order to do this, a wrapper API (include/ncxml.h) was constructed
that supports either ezxml or libxml2 as the implementation.
Additionally, the xml support code was moved to a new directory
netcdf-c/libncxml.

Primary changes:
* Create a new sub-directory named netcdf-c/libncxml to hold all the xml implementation code.
* Move ezxml.c and ezxml.h to libncxml
* Create a wrapper API -- include/ncxml.h
* Create an implementation, ncxml_ezxml.c to support use of ezxml.
* Create an implementation, ncxml_xml2.c to support use of libxml2.
* Add a check for libxml2 in configure.ac and CMakeLists.txt
* Modify libdap to use the wrapper API instead of ezxml directly.

Misc. Other Changes:
* Change include/netcdf_json.h from built source to be part of the distribution.
2021-11-01 22:37:05 -06:00
Ward Fisher
fcf0fa7dbd
Merge pull request #2134 from DennisHeimbigner/zarrs3part2.dmh 2021-11-01 16:00:39 -06:00
Dennis Heimbigner
6f3bfde222 Update release notes 2021-10-29 20:35:13 -06:00
Dennis Heimbigner
f6e25b695e Fix additional S3 support issues
re: https://github.com/Unidata/netcdf-c/issues/2117
re: https://github.com/Unidata/netcdf-c/issues/2119

* Modify libsrc to allow byte-range reading of netcdf-3 files in private S3 buckets; this required using the aws sdk. Also add a test case.
* The aws sdk can sometimes cause problems if the Awd::ShutdownAPI function is not called. So at optional atexit() support to ensure it is called. This is disabled for Windows.
* Add documentation to nczarr.md on how to build and use the aws sdk under windows. Currently it builds, but testing fails.
* Switch testing from stratus to the Unidata bucket on S3.
* Improve support for the s3: url protocol.
* Add a s3 specific utility code file: ds3util.c
* Modify NC_infermodel to attempt to read the magic number of byte-ranged files in S3.

## Misc.

* Move and rename the core S3 SDK wrapper code (libnczarr/zs3sdk.cpp) to libdispatch since it now used in libsrc as well as libnczarr.
* Add calls to nc_finalize in the utilities in case atexit is disabled.
* Add header only json parser to the distribution rather than as a built source.
2021-10-29 20:06:37 -06:00
Ward Fisher
228e7f5b5c
Merge pull request #2114 from DennisHeimbigner/zarrs3.dmh
Significantly Improve Amazon S3 Cloud Storage Support
2021-10-28 14:22:56 -06:00
Dennis Heimbigner
2da684fc37 ckp 2021-10-26 22:52:23 -06:00
Dennis Heimbigner
58ba84de0b update merge 2021-10-26 20:53:05 -06:00
Ward Fisher
783dc54d12
Merge pull request #2131 from gsjaardema/patch-49
Remove duplicate line
2021-10-26 09:48:28 -06:00
Greg Sjaardema
9c6181da09
Remove duplicate line
Remove a duplicate line...
2021-10-25 17:09:17 -06:00
Ward Fisher
19828e137d
Merge pull request #2127 from DennisHeimbigner/byterangefix.dmh
Fix bug in the default HDF5 byte-range reader
2021-10-19 10:35:05 -06:00
Dennis Heimbigner
3d6ab95dea Update Release Notes 2021-10-17 13:57:07 -06:00
Dennis Heimbigner
2d08c64290 Fix bug in the default HDF5 byte-range reader
re: https://github.com/Unidata/netcdf-c/issues/2122

There was a string allocation error in H5FDhttp.c
2021-10-17 13:55:03 -06:00
Ward Fisher
9116700eaf
Merge pull request #2126 from gsjaardema/patch-49
Avoid infinite loop for finding large prime values
2021-10-14 16:31:32 -06:00
Greg Sjaardema
6f65754357
Avoid infinite loop for finding large prime values
If the `val` passed to `findPrimeGreaterThan` is greater than the largest value (not the sentinel) in the `NC_primes`, then the routine will fall into an infinite loop.   Modified to call an external routine that brute forces the finding of a prime larger than the value in this case.  

The brute force routine uses the primes in `NC_primes` table in the prime test, so this will fail if given a `value > 180503 * 180503`.   The `isPrime` function could be rewritten to avoid this, but assuming this won't happen for the forseeable future.  If it does happen, `isPrime` will return that any value larger than this is prime...
2021-10-14 15:55:04 -06:00
Ward Fisher
4086bbd887
Merge pull request #2056 from gsjaardema/WIP-attribute-creation-order-tracking-option
Attribute creation order on/off
2021-10-13 10:18:36 -06:00
Ward Fisher
4c2adb5ff0
Merge pull request #2125 from DennisHeimbigner/dmh-patches1.dmh
Patch errors
2021-10-12 14:57:23 -06:00
Dennis Heimbigner
8bbdee157f Fix memory leak 2021-10-12 14:20:37 -06:00
Dennis Heimbigner
bf593248b3 Update release notes 2021-10-12 14:06:18 -06:00
Dennis Heimbigner
b5d4afd1d5 Patch errors
## Examine and fix ezxml errors

re: Issue https://github.com/Unidata/netcdf-c/issues/2119

Multiple security issues were found in ezxml (see above Issue).

* CVE-2021-31598
* CVE-2021-31348 / CVE-2021-31347
* CVE-2021-31229
* CVE-2021-30485
* CVE-2021-26222
* CVE-2021-26221
* CVE-2021-26220
* CVE-2019-20202
* CVE-2019-20201
* CVE-2019-20200
* CVE-2019-20199
* CVE-2019-20198
* CVE-2019-20007
* CVE-2019-20006
* CVE-2019-20005

In addition, moved ezxml to libdispatch.

## Examine and fix selected  oss-fuzz detected errors

Note that most of these errors are in the libsrc .m4 generated
code so fixing them is difficult. It would nice if we could tell
oss-fuzz to skip those files. They are old and crufty and
probably need a complete refactor.

Issue|Status
-----|------
35382|Fixed; old bug
35398|Closed by OSS-Fuzz
35442|Guarantee alloc > 0 or error; Old bug
35721|Assert failure; ok
35992|Fixed; old bug
36038|Fixed; old bug
36129|Unfixed; old bug
36229|Fixed by adding assert; old bug
37476|Unfixed; old bug
37824|Assert Failure; ok
38300|Closed by OSS-Fuzz
38537|Unfixed; old bug
38658|Unfixed; old bug
38699|Fixed maybe; old bug
38772|Nature of error is unclear, suspect that it results from using too large a type.
39248|Need more information
39394|Unfixed; old bug
2021-10-12 14:03:48 -06:00
Dennis Heimbigner
289103d2b1 Merge branch 'master' into zarrs3.dmh 2021-10-07 15:10:03 -06:00
Ward Fisher
5cd17ba059
Merge pull request #2113 from rouault/fix_stack_read_overflow_ncindexlookup
Fix a stack-read-overflow in ncindexlookup()
2021-10-01 17:09:49 -05:00
Ward Fisher
e763e6caf1
Merge pull request #2109 from DennisHeimbigner/ncgenenum.dmh
Fix handling of enum constants nested in compound types.
2021-10-01 17:08:45 -05:00
Ward Fisher
437060b69a
Merge pull request #2088 from edwardhartnett/ejh_quantize_2
Adding nc_def_var_quantize()/nc_inq_var_quantize() - second attempt
2021-10-01 17:06:05 -05:00
Ward Fisher
69ff6fbe78
Merge pull request #2116 from gsjaardema/patch-48
Make sure HDF5_C_LIBRARY and HDF5_HL_LIBRARY set
2021-10-01 17:04:11 -05:00
Greg Sjaardema
6b8a940ab2
Make sure HDF5_C_LIBRARY and HDF5_HL_LIBRARY set
On some versions of the HDF5 find_package call, it sets `HDF5_C_LIBRARIES` and `HDF5_HL_LIBRARIES`, but does not set the `HDF5_C_LIBRARY` or `HDF5_HL_LIBRARY` to anything.  Control then falls out of the if block with these unset and it falls into the default setting at line 792.  This does not include the path, so then when the later `CHECK_LIBRARY_EXISTS` calls are run, they do not have the full path to the library and will not link correctly.  Since the link fails, the code defaults to thinking that none of the symbols are defined.

I don't think this change will have any affect since it only sets the symbols if they are unset.
2021-10-01 13:34:58 -06:00
Dennis Heimbigner
dc2ecc74ac (1) improve INI parser (2) Fix make discheck 2021-09-30 13:45:09 -06:00
Dennis Heimbigner
0f93766599 One additional lgtm fix 2021-09-28 14:37:32 -06:00
Dennis Heimbigner
56f1f595b8 Fix new lgtm alerts 2021-09-28 14:19:07 -06:00
Dennis Heimbigner
e89187d2c2 remove actions debug 2021-09-28 14:09:38 -06:00
Dennis Heimbigner
ca3dfe43b7 Fix FreeBSD fileno problem in the ncgen parsers 2021-09-28 14:03:19 -06:00
Dennis Heimbigner
b970e81e27 Update release notes 2021-09-27 18:44:48 -06:00
Dennis Heimbigner
6b69b9c52c Significantly Improve Amazon S3 Cloud Storage Support
## S3 Related Fixes

* Add comprehensive support for specifying AWS profiles to provide access credentials.
* Parse the files "~/.aws/config" and "~/.aws/credentials to provide credentials for the HDF5 ROS3 driver and to locate default region.
* Add a function to obtain the currently active S3 credentials. The search rules are defined in docs/nczarr.md.
* Provide documentation for the new features.
* Modify the struct NCauth (in include/ncauth.h) to replace specific S3 credentials with a profile name.
* Add a unit test to test the operation of profile and credentials management.
* Add support for URLS of the form "s3://<bucket>/<key>"; this requires obtaining a default region.
* Allows the specification of profile and/or region in a URL of the form "#mode=nczarr,...&aws.region=...&aws.profile=..."

## Misc. Fixes

* Move the ezxml code to libdispatch so that it can be used both by DAP4 and nczarr.
* Modify nclist to provide a deep clone operation.
* Modify ncuri to provide a deep clone operation.
* Modify the .rc file format to allow the specification of a path to be tested when looking for an entry in the .rc file.
* Ensure that the NC_rcload function is called.
* Modify nchttp to support setting request headers.
2021-09-27 18:36:33 -06:00
Even Rouault
0582c2044a
Fix a stack-read-overflow in ncindexlookup()
Fixes an issue with strlen() reading outside the stack allocated buffer
by NC4_HDF5_inq_att, when reading a name whose length is NC_MAX_NAME.

Fixes https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=39189 found
on GDAL

==1895951== Conditional jump or move depends on uninitialised value(s)
==1895951==    at 0x483EF58: strlen (in /usr/lib/x86_64-linux-gnu/valgrind/vgpreload_memcheck-amd64-linux.so)
==1895951==    by 0x48EF73E: ncindexlookup (ncindex.c:60)
==1895951==    by 0x48E81DF: nc4_find_grp_att (nc4internal.c:587)
==1895951==    by 0x48E5B39: nc4_get_att_ptrs (nc4attr.c:72)
==1895951==    by 0x48F98A0: NC4_HDF5_inq_att (hdf5attr.c:818)
==1895951==    by 0x48847F7: nc_inq_att (dattinq.c:91)
==1895951==    by 0x10D693: pr_att (ncdump.c:767)
==1895951==    by 0x110ADB: do_ncdump_rec (ncdump.c:1887)
==1895951==    by 0x1112F1: do_ncdump (ncdump.c:2038)
==1895951==    by 0x11248B: main (ncdump.c:2478)
==1895951==
==1895951== Use of uninitialised value of size 8
==1895951==    at 0x48A24E4: crc64_little (dcrc64.c:173)
==1895951==    by 0x48A27F4: NC_crc64 (dcrc64.c:229)
==1895951==    by 0x4892D49: NC_hashmapkey (nchashmap.c:159)
==1895951==    by 0x489314B: NC_hashmapget (nchashmap.c:263)
==1895951==    by 0x48EF75F: ncindexlookup (ncindex.c:60)
==1895951==    by 0x48E81DF: nc4_find_grp_att (nc4internal.c:587)
==1895951==    by 0x48E5B39: nc4_get_att_ptrs (nc4attr.c:72)
==1895951==    by 0x48F98A0: NC4_HDF5_inq_att (hdf5attr.c:818)
==1895951==    by 0x48847F7: nc_inq_att (dattinq.c:91)
==1895951==    by 0x10D693: pr_att (ncdump.c:767)
==1895951==    by 0x110ADB: do_ncdump_rec (ncdump.c:1887)
==1895951==    by 0x1112F1: do_ncdump (ncdump.c:2038)
==1895951==
2021-09-24 11:59:48 +02:00
Dennis Heimbigner
72d6894b80 Fix handling of enum constants nested in compound types.
re: Issue https://github.com/Unidata/netcdf-c/issues/2108

Fix ncgen to properly locate a matching enum type when it encounters
a reference to an enum constant. Add test cases.
2021-09-12 18:03:57 -06:00
Edward Hartnett
5200477de1 now nsd of 0 is NC_EINVAL for nc_def_var_quantize() 2021-09-10 06:10:20 -06:00