Commit Graph

265 Commits

Author SHA1 Message Date
Ward Fisher
967334041e Merge remote-tracking branch 'origin/urlparams.dmh' into merge_dennis_pr 2017-11-02 14:27:37 -06:00
Dennis Heimbigner
4430a7d1a9 Fix https://github.com/Unidata/netcdf-c/issues/569
Serious bad on my part. For some reason, I changed the set of
characters allowed n a DAP name. In particular, characters that
are legal according to the DAP spec were removed. So when one of
this removed characters was encountered, it produced a parse
error.

In this case, the offending character was a single quote character in the name:
Blackadar's_mixing_length_scale_hybrid

The reason it worked for java is because the escape character set
is correct and different than the one in the netcdf-c dap code.
2017-11-02 13:04:03 -06:00
Dennis Heimbigner
354f63ab42 Make work with cmake 2017-11-01 21:53:21 -06:00
Dennis Heimbigner
f827cf13f2 As a result of changes I made to
url parameter handling, the parameter
lookup code was ignoring parameters
because I was giving it a url stripped
of parameters instead of the one with
parameters.

This code change fixes the parameter processing
so it again used the correct url.

reference:
docs/OPeNDAP.dox#section Defined Client Parameters
2017-11-01 19:48:51 -06:00
Dennis Heimbigner
9935d54fdf Merge master and resolve conflicts 2017-10-28 13:57:23 -06:00
Ward Fisher
67018ecabb Merge branch 'v4.5.0-release-branch' into netrc.dmh 2017-09-25 13:46:32 -06:00
Dennis Heimbigner
d1e17b5ee7 re: pull request: https://github.com/Unidata/netcdf-c/issues/487
The use of the following version-specific curl flags
is not always properly wrapped or aliased using
config.h HAVE_CURL... ifdefs.
# CURLOPT_USERNAME is not defined until curl version 7.19.1
# CURLOPT_PASSWORD is not defined until curl version 7.19.1
# CURLOPT_KEYPASSWD is not defined until curl version 7.16.4
  -- aliased as needed to CURLOPT_SSLKEYPASSWD
# CURLINFO_RESPONSE_CODE is not defined until curl version 7.10.7
  -- aliased as needed to CURLINFO_HTTP_CODE
# CURLOPT_CHUNK_BGN_FUNCTION is not defined until curl version 7.21.0
  -- not used in our code
2017-09-18 16:44:31 -06:00
Dennis Heimbigner
b7f6941da8 It is imperative that this fix goes into
v4.5-release-candidate branch and master branch ASAP.

The bug occurs in d4rc.c where strcmp is being applied to NULL.
Also, the code in which it occurs is debugging code, so it needs
to be #ifdef'd.  This fix may cause minor conflicts with other
outstanding pull requests that fix the same bug. But the
conflicts should be minor and easy to resolve.
2017-09-08 13:54:02 -06:00
Dennis Heimbigner
ad32350355 Oops. Forgot to convert over libdap4 use of NC_mktmp
and NC_readfile and NC_combinehostport.
2017-09-03 15:09:10 -06:00
Dennis Heimbigner
a2e0f069ec This pr should probably be delayed until after Version 4.5.
Primary change is to cleanup code and remove duplicated code.

1. Unify the rc file reading into libdispatch/drc.c. Eventually extend
   if we need rc file for netcdf itself as opposed to the dap code.
2. Unify the extraction from the rc file of DAP authorization info.
3. Misc. other small unifications: make temp file, read file.
4. Avoid use of libcurl when reading file:// because
   there is some kind of problem with the Visual Studio version.
   Might be related to the winpath problem.
   In any case, do direct read instead.
5. Add new error code NC_ERCFILE for errors in reading RC file.
6. Complete documentation cleanup as indicated in this comment
   https://github.com/Unidata/netcdf-c/pull/472#issuecomment-325926426
7. Convert some occurrences of #ifdef _WIN32 to #ifdef _MSC_VER
2017-09-02 18:09:36 -06:00
Dennis Heimbigner
3a99220789 Make branch compile under cmake 2017-08-31 15:32:41 -06:00
Dennis Heimbigner
8e2abdeed8 Initial version 2017-08-31 14:19:56 -06:00
Dennis Heimbigner
61d2b38c8e Final fixes 2017-08-30 19:13:52 -06:00
Dennis Heimbigner
7c592cfb2a 1. Unify the rc file reading into libdispatch/drc.c. Eventually extend
if we need rc file for netcdf itself as opposed to the dap code.
2017-08-30 17:44:57 -06:00
Dennis Heimbigner
15db0f15ea Clarify rc documentation 2017-08-30 12:05:04 -06:00
Dennis Heimbigner
80dbc7fb6c Undo DECODE_IDENTIFIER change 2017-08-29 18:01:26 -06:00
Dennis Heimbigner
bc9e41ae2b 1. Fix bug in ocrc.c#combinecredentials where a null user+pwd
generates garbage. This in turn interferes with using .netrc
because the garbage user+pwd can will override the
.netrc. Note that this may work ok sometimes
if the garbage happens to start with a nul character.

2. It turns out that the user:pwd combination needs to support
character escaping. One reason is the user may contain an '@' character.
The other is that modern password rules make it not unlikely that
the password will contain characters that interfere with url parsing.
So, the rule I have implemented is that all occurrences of the user:pwd
format must escape any dodgy characters. The escape format is URL escaping
of the form %XX. This applies both to user:pwd
embedded in a URL as well as the use of HTTP.CREDENTIALS.USERPASSWORD
in a .dodsrc/.daprc file. The user and password in .netrc must not
be escaped. This is now documented in docs/auth.md

The fix for #2 actually obviated #1. Now, internally, the user and pwd
are stored separately and not in the user:pwd format. They are combined
(and escaped) only when needed.
2017-08-29 14:11:15 -06:00
Dennis Heimbigner
442f4d9bc9 Fix bug in ocrc.c#combinecredentials
where a null user+pwd generates
garbage. This in turn interferes
with using .netrc because the garbage
user+pwd can (sometimes) override
the .netrc.
Not entirely sure what is going on
because it works as is under e.g. cygwin.
In any case it needs fixing.
2017-08-25 14:42:22 -06:00
Ward Fisher
9e7a902dcf Merge branch 'issue435.dmh' into multi-pull 2017-07-27 12:20:11 -06:00
Dennis Heimbigner
5e96b0c42e Force binary mode in oc2/ocread.c 2017-07-18 12:44:39 -06:00
Dennis Heimbigner
715a6fe5eb The files libdispatch/dwinpath.c and include/ncwinpath.h
were added to provide a path name converter from e.g. cygwin
paths to e.g. windows paths. This is necessary because
the shell scripts may produce cygwin paths, but the code
may have been compiled with Visual Studio. Similar issues
arise with Mingw.

At appropriate places, and if using Visual Studio or Mingw,
I added calls to the path conversion code.
Apparently I forgot to find all the places where this
conversion was needed. So this pr does the following:
1. Push the calls to the converter to the various libXXX
   directories and out of libdispatch/dfile.c.
2. Add conversion calls to other parts of the code like oc2.

I also turns out that conversion code in dapcvt.c
had a bug when handling DAP Byte type under visual studio.

Notes:
1. there may still be places I missed that need to do path conversion.
2. need to make sure that calls to e.g. H5open also use converted path.
2017-07-13 10:40:07 -06:00
Dennis Heimbigner
9719fbfbad re: hithub issue https://github.com/Unidata/netcdf-c/issues/435
Some temporary files are being left in a tempdir (e.g. /tmp
under *nix*).

The situation is described tersely in
netcdf-c/docs/auth.html#REDIR Basically, when a url is used that
requires redirection, a physical cookiejar file is required
to exist in the file system in order for this to work.

Since it was difficult to figure out when redirection was
being used (it was internal to libcurl) I needed to be prepared for that
eventuality. The result was that I always created a cookiejar file if one
was not specified in the rc file. This actually occurs in two places:
one inside oc2 and one inside libdap4.

The solution was two-fold:
1. do not use a cookiejar directory -- create cookiejar file directly
2. ensure that all cookiejar related files are reclaimed by nc_close().
Note that if nc_close (or nc_abort) is not called for whatever reason,
then reclamation will not occur.
2017-07-05 10:03:48 -06:00
Dennis Heimbigner
dc9e31df68 Fix for github issue https://github.com/Unidata/netcdf-c/issues/310.
The problem was that for opendap, it is possible to use keywords
as identifiers
 when there is no ambiguity. However, the DAP2
parser lost the case of the identifier used the lower case version.
Fix is to use the actual text of the symbol when it is used as an identifier.
Also added a test case for this (kwcase.*).

Additionally cleaned up some misc. dap2 testing problems.
1. ncdap_test/tst_ncdap3.sh was using an empty test set.
   restored the testing of datasets.
2. as a consequence of #1, some tests needed to be updated with minor
   tweeks.
3. fix dapmerge to handle multiple DODS_EXTRAS attributes.
4. modify buildattribute to suppress nul characters and terminate
   the name at the first nul.
5. clean up various test scripts to remove residual, unused
   references to obsolete netcdf-4 translation.
6. export e.g. NCDUMP from test_common.in so that non-top-level
   shell scripts can access it.
2017-06-28 13:51:01 -06:00
Dennis Heimbigner
6d8809100f Fix pull request https://github.com/Unidata/netcdf-c/pull/374 (dap4.dmh)
1. When running under windows (as opposed to cygwin)
   we need to make sure to not user /cygdrive/ file paths.
   This was ocurring in libdap4/d4read.c, but may occur
   elsewhere.
2. Shell scripts in the git repo are not being checked-out
   with the executable mode set. Had core.filemode set to false.
   Was a major hassle to fix.
2017-04-03 21:39:44 -06:00
Dennis Heimbigner
031ae14842 upgrade new oc files to nclist/ncbytes 2017-03-17 17:20:02 -06:00
Dennis Heimbigner
be6e1b65dc Fix conflicts with master 2017-03-17 14:58:38 -06:00
Dennis Heimbigner
3213705205 Re: github issue https://github.com/Unidata/netcdf-c/issues/373
Github issue https://github.com/Unidata/netcdf-c/issues/152
requested that "orphaned" DAS attributes be included in the netcdf
metadata as global variables. The term orphaned here meant that
they were not connected to any variable in the DDS.
This was done in pull request https://github.com/Unidata/netcdf-c/pull/164

However, some servers (e.g. Thredds) include attributes for variables not
specified in a constraint expression, but which exist in the full DDS.
So I was adding these to the set of global attributes, but in retrospect
this should not have been done: they should have been elided.

Solution: modify oc2 code to be more distriminatory about
which orphaned attributes to include.
2017-03-11 16:17:20 -07:00
Dennis Heimbigner
1aab7556cf ckp 2017-03-11 15:20:20 -07:00
Dennis Heimbigner
3db4f013bf Primary change: add dap4 support
Specific changes:
1. Add dap4 code: libdap4 and dap4_test.
   Note that until the d4ts server problem is solved, dap4 is turned off.
2. Modify various files to support dap4 flags:
	configure.ac, Makefile.am, CMakeLists.txt, etc.
3. Add nc_test/test_common.sh. This centralizes
   the handling of the locations of various
   things in the build tree: e.g. where is
   ncgen.exe located. See nc_test/test_common.sh
   for details.
4. Modify .sh files to use test_common.sh
5. Obsolete separate oc2 by moving it to be part of
   netcdf-c. This means replacing code with netcdf-c
   equivalents.
5. Add --with-testserver to configure.ac to allow
   override of the servers to be used for --enable-dap-remote-tests.
6. There were multiple versions of nctypealignment code. Try to
   centralize in libdispatch/doffset.c and include/ncoffsets.h
7. Add a unit test for the ncuri code because of its complexity.
8. Move the findserver code out of libdispatch and into
   a separate, self contained program in ncdap_test and dap4_test.
9. Move the dispatch header files (nc{3,4}dispatch.h) to
   .../include because they are now shared by modules.
10. Revamp the handling of TOPSRCDIR and TOPBUILDDIR for shell scripts.
11. Make use of MREMAP if available
12. Misc. minor changes e.g.
	- #include <config.h> -> #include "config.h"
	- Add some no-install headers to /include
	- extern -> EXTERNL and vice versa as needed
	- misc header cleanup
	- clean up checking for misc. unix vs microsoft functions
13. Change copyright decls in some files to point to LICENSE file.
14. Add notes to RELEASENOTES.md
2017-03-08 17:01:10 -07:00
Dennis Heimbigner
e2967bb622 Fix for Github issue 314.
Problem was in oc2/dap.y.
In definition of errormsg:, change WORD_WORD to WORD_STRING
since the msg field of an opendap error response is a quoted
string.

Also took the opportunity to modify ncgen to
transfer the logging level (-L flag) into the c-code
generated using -lc.
2016-09-01 22:06:07 -06:00
Ward Fisher
ad201da5f1 Addressed coverity issue 1256385, potential resource leak. 2016-07-06 15:06:06 -06:00
Ward Fisher
d8e86219b5 Corrected coverity issue 1264401, buffer not null terminated. 2016-07-06 14:49:15 -06:00
Ward Fisher
78b43dbfdb Addressed a memory leak identified by Coverity. See Coverity #1256386 2016-03-11 11:03:01 -07:00
Ward Fisher
f12daedeb3 Corrected a coverity issue with a potential negative argument. Coverity 711780 2016-03-08 13:48:30 -07:00
Robert T. McGibbon
3303ccd519 Fix preprocessor for mingw 2015-12-07 18:08:13 -08:00
dmh
cbb6df3232 Github issue 152: https://github.com/Unidata/netcdf-c/issues/152
User request to have all orphaned DAP2 attributes kept as netcdf
global attributes. This is primarily a change in the oc code
nplus testcase dataset changes.

Result may be inconsistent with netcdf-Java output.
2015-11-29 20:38:12 -07:00
Bas Couwenberg
b8e4161baf Fix inconsistent return type. 2015-11-10 00:19:33 +01:00
Ward Fisher
612b35a84c Merge branch 'master' into cdf-5, in preparation for merging the CDF-5 functionality into the master branch. This will be the key new feature for netcdf 4.4.0. 2015-11-05 13:40:35 -07:00
dmh
7480d7d97d - clean up the dfile.c confusion about NC_64_BIT_OFFSET
- sync oc2 with  master for https://DennisHeimbigner@github.com/Unidata/oc.git
- Cleanup auth.html documentation.
- Cleanup obsolete documentation.
2015-10-24 21:45:13 -06:00
dmh
0f59785f37 sync with base oc library 2015-10-22 15:34:56 -06:00
dmh
a5c8f7c7e3 synch with base oc 2015-10-21 14:53:30 -06:00
dmh
370bd15166 Github issue 134:
Their is an ambiguity in the DAP2 spec.  Section A.2 of the
dap2 spec says:
  "...The backslash character (.\.) MAY be used as
   a single-character quoting mechanism only within
   quoted-string and comment constructs.
      quoted-pair = "\" CHAR
   ..."
The underlying problem was to allow for " chars inside
strings by using \". However, this definition is overbroad.
It is not stated:
1. if the backslash is to be left in the string or not.
2. There is also an unstated, but related issue of what
   to do about e.g. '\n';convert to newline or not.

This change is to conform to libdap and it does the following:
1. The backslash is left in the string
2. Things like \n are left as is and it is assumed that
   higher level code will decide what to do with e.g. \n.
2015-10-20 15:44:26 -06:00
tbeu
e2820e4d8a Fix common typos
Detected by https://github.com/vlajos/misspell_fixer
2015-08-20 11:42:05 +02:00
dmh
859f105005 merge-squash 2015-08-15 16:26:35 -06:00
xantares
c1b56c3f3a fix mingw build
that code path is common to all win32 platforms: msvc & mingw/cygwin
2015-08-03 23:27:41 +02:00
dmh
29386aae47 Synch with base oc 2015-07-15 16:19:14 -06:00
Ward Fisher
7bb61718bf Corrected a couple of minor issues reported by static analysis. 2015-07-10 15:09:14 -06:00
dmh
830f82138a Merge branch 'master' of http://github.com/Unidata/netcdf-c 2015-07-05 19:26:27 -06:00
dmh
c5fe913d54 re: https://github.com/Unidata/netcdf-c/issues/117
It appears the problem is that synth9 was erroneously
included in testing. It involves a nested sequence which
is not translatable. Not sure why it was still there,
but fix is to suppress the test.
2015-07-05 19:26:01 -06:00
Ward Fisher
5721dd302b Corrected a potential null dereference caused by passing '0' to calloc. 2015-06-17 15:42:45 -06:00
Dennis Heimbigner
0d082d79ea synch oc 2015-05-29 17:31:42 -06:00
Ward Fisher
6ed4770e0a Added a typedef int pid_t for Windows platforms, solves a unix compatibility issue. 2015-05-28 10:14:45 -06:00
dmh
be5e3cd606 1. Allow for the user specified rc file via the env variable
DAPRCFILE.  Note that the value of this environment
   variable should be the absolute path of the rc file, not
   the path to its containing directory.
2. fixup testauth.sh and add some new tests
3. synch oc
2015-05-24 17:31:39 -06:00
Ward Fisher
3d9725f7df Corrected a libcurl issue as reported in https://github.com/Unidata/netcdf-c/issues/110 2015-03-17 12:42:14 -06:00
dmh
06a11e51df 1. Allow for the user specified rc file via the env variable
NCRCFILE.  Note that the value of this environment
   variable should be the absolute path of the rc file, not
   the path to its containing directory.
2015-03-03 20:17:27 -07:00
dmh
88f1ac820c 1. synch with oc lib
2. update to add docs/auth.md
2015-03-02 20:26:39 -07:00
Ward Fisher
e6faf3969c Coverity: 1265325, Pointer comparison with string literal. 2015-02-24 10:14:52 -07:00
Ward Fisher
cc260fc9aa Fixed a minor static-analysis reported warning. 2015-02-23 13:25:35 -07:00
Ward Fisher
473163c41a Corrected a couple of static analysis-detected warnings. 2015-02-10 13:04:37 -07:00
Ward Fisher
c659a0e353 Coverity 1264403, Explicit null dereferenced. 2015-01-20 12:44:28 -07:00
Ward Fisher
30149d5e6e Coverity 1264404, missing break in switch. Logically this appears to not be intentional, will revert if this turns out to be incorrect. 2015-01-20 12:40:25 -07:00
Ward Fisher
9cc5898931 Coverity 1264406; char array being compared against NULL. Replaced with a strlen check for the value. 2015-01-20 12:37:57 -07:00
Ward Fisher
f1dcdde045 Coverity 1264401, Buffer not null terminated. 2015-01-20 11:18:27 -07:00
Ward Fisher
35df3d3c95 Coverity 1264407, out-of-bounds access. 2015-01-20 11:12:51 -07:00
Ward Fisher
75c6670416 Resource Leak, Coverity 1264408 2015-01-20 11:09:03 -07:00
Ward Fisher
cb0cb6f674 Resource leak, Coverity 1264409 2015-01-20 11:04:58 -07:00
Ward Fisher
59f8cf19f1 Corrected resource leak, Coverity 1264412 2015-01-20 10:53:42 -07:00
Ward Fisher
69b6935ca5 Removed OCASSERT sizeof(void*) == sizeof(off_t), to see what repercussions are for other tests on 32-bit machines. 2015-01-16 09:18:39 -07:00
dmh
65f78d6a8b 1. synch with oc
2. replace all occurrences of
   'template' with 'pattern'
   since template is reserved in windows.
2015-01-15 14:19:51 -07:00
Ward Fisher
393db0018e Addressed an issue causing MSVC-based builds to fail. See https://github.com/Unidata/netcdf-c/issues/96 2015-01-13 12:44:28 -07:00
Ward Fisher
8487f28277 Removed a stale (potentially) assertion on Dennis' advice to debug an issue. 2015-01-12 12:09:34 -07:00
Ward Fisher
4ecbbe64d5 Fixed a few issues preventing the build from working on MSVC. 2015-01-12 11:05:45 -07:00
dmh
e35a14a85d 1. synch with oc
2. modify oc2/ocrc.c rcfilenames to look for .ocrc before .dodsrc.
3. Modify testauth.sh to avoid using names that might already
   exist for cookies file and netrc file. Still must use .ocrc
   to test for local/home search.
4. Modify testauth.sh to save and restore any file it creates
   that already exists.
2014-12-31 22:29:36 -07:00
dmh
3a559d3f1d Fix occurlflags bug 2014-12-28 15:54:02 -07:00
Ward Fisher
3aa6c969e2 Added an explicit check for CURLOPT_CHUNK_BGN_FUNCTION, otherwise we break the build on systems with libcurl older than version 7.21.0 2014-12-27 22:59:06 -08:00
dmh
20720199c8 1. synch with oc
2. fix ocuri parameter handling
3. add ncdap_test/testuri.sh to test parameter handling.
2014-12-27 20:42:01 -07:00
dmh
c4bc1569f6 Update CMakelist to match Makefile.am in oc2 2014-12-26 13:08:41 -07:00
dmh
7a0a10ec7b add occurlfunctions.[ch] to the dist. 2014-12-26 12:27:54 -07:00
dmh
f423f27693 Sync with oc project.
This supports better authorization
handling for DAP requests, especially redirection
based authorization. I also added a new test case
ncdap_tests/testauth.sh.

Specifically, suppose I have a netrc file /tmp/netrc
containing this.
    machine uat.urs.earthdata.nasa.gov login xxxxxx password yyyyyy
Also suppose I have a .ocrc file containing these lines
    HTTP.COOKIEJAR=/tmp/cookies
    HTTP.NETRC=/tmp/netrc
Assume that .ocrc is in the local directory or HOME.

Then this command should work (assuming a valid login and password).
    ncdump -h "https://54.86.135.31/opendap/data/nc/fnoc1.nc"
2014-12-24 10:22:47 -07:00
dmh
7de1f7bef8 oc synch 2014-11-30 20:30:23 -07:00
dmh
a2e9fb854b synch with base oc library 2014-11-21 16:20:44 -07:00
Ward Fisher
3fadeb8ff1 Fixed several memory leaks reported by static analysis. 2014-10-29 16:09:54 -06:00
Martin Steghöfer
a9012c7bfe Fix segmentation fault when parsing malformed URLs (e.g. "http:/"). 2014-10-05 19:28:03 +02:00
Ward Fisher
c60b45394f Coverity: 711882, leaked storage bug. 2014-10-03 12:57:02 -06:00
Ward Fisher
b43813d821 When using the '-ansi' flag with gcc, netcdf would fail to build because of the use of '//' for one-line comments. I've addressed this by replacing instances of // with enclosing comment blocks. 2014-08-26 11:19:32 -06:00
Ward Fisher
e6a78c7a0b Coverity: 711710 2014-08-25 10:34:06 -06:00
Ward Fisher
c9580fa109 Coverity: 711709 2014-08-25 10:26:57 -06:00
Ward Fisher
ee6f0f00f3 Coverity: 711873 2014-08-22 15:33:45 -06:00
Ward Fisher
6b34c2ab74 Coverity 711708, second instance. 2014-08-22 15:26:54 -06:00
Ward Fisher
8c91f7e57c Coverity 711708, first instance. 2014-08-22 15:25:27 -06:00
Ward Fisher
a28b123ca4 Coverity: 1198196 2014-08-08 15:22:46 -06:00
Ward Fisher
6c071be031 Corrected issues where functions were not available in Windows. Specifically strndup. Also accomodated an included needed for getcwd. 2014-08-07 17:03:27 -06:00
Ward Fisher
948eb1f357 Coverity: 1204252 2014-08-01 10:55:34 -06:00
Ward Fisher
db67d9a6f6 Coverity 1152156 2014-07-31 16:42:28 -06:00
Ward Fisher
02a7d451bc Coverity 711880 Case #2 2014-07-29 11:28:44 -06:00
Ward Fisher
171dd2fc8e Coverity issue 711880 2014-07-29 11:24:25 -06:00
Ward Fisher
2cce056ce9 Addressed coverity issue 711901 2014-07-29 10:50:01 -06:00
Ward Fisher
37c5338a86 Fixed a static-analysis identified issue related to a variable without a value. 2014-07-09 13:08:14 -06:00
Dennis Heimbigner
39a5bf5efa Modify ncdap_test/test_nstride_cached.c
to use a dataset on remotetest instead
of an external server.
2014-07-01 10:39:18 -06:00
Dennis Heimbigner
645da599da conflicts 2014-06-26 16:42:13 -06:00