Commit Graph
1910 Commits
Author SHA1 Message Date
Olaf Bergmann e413fd545b coap-server.c: avoid fopen on NULL pointer in read_file_mem
As the behavior for calling fopen() on a NULL pointer is undefined in
ISO C99, a check is added before passing the file name to fopen().

This fixes CID 1495723.
2020-06-19 16:01:29 +02:00
Olaf Bergmann 1fded5dace coap-server.c: close file after reading SNI file
Add missing fclose() to cmdline_read_pki_sni_check() and
cmdline_read_psk_sni_check().

This fixes CIDs 1495719 and 1495724.
2020-06-19 16:01:09 +02:00
Olaf Bergmann 9c64e90517 net.c: fix check_return false positive from Coverity
In coap_io_do_epoll(), read() is called after timeout to clear the
file descriptor associated with the firing timer. As this function is
only called for its side effect, the result is ignored. Coverity scan
reports this as check_return event. A cast to void has been added to
document that the result is ignored on purpose.

This fixes CID 1495728.
2020-06-19 15:19:08 +02:00
Olaf Bergmann f97a7c5bde coap_session.c: avoid false positives with coverity for session release
coap_session_release() decrements a reference counter and releases
session resources when zero is reached. In certain function call
chains this leads to false positives with Coverity code analysis.
This change adds specific primitives to avoid these false positives.
This behavior is controlled by pre-processor conditionals.
2020-06-19 15:09:35 +02:00
Olaf Bergmann 7efa65077b Makefile.am: Add EXTRA_CFLAGS to AM_CFLAGS
Invoking make with EXTRA_CFLAGS allows to pass build configuration
parameters on the command line.
2020-06-19 15:09:35 +02:00
Jon Shallow e66b2aea83 DTLS: Fix identity length checking
src/coap_tinydtls.c:

Pass the correct identity size to coap_get_session_client_psk()
2020-06-19 15:09:35 +02:00
Olaf Bergmann e0cc7ebf32 net.c: fix possible derefence after null errors
Fix possible null pointer dereference in coap_get_context_server_hint()
and coap_get_context_server_psk().

These issues have been detected by Coverity scan as CIDs 1495725 and
1495729.
2020-06-19 15:09:35 +02:00
obgm 04958a1069 Merge pull request #508 from kabeer27/improving-pdu-fuzzer
[Oss-Fuzz] Improving pdu_parse_fuzzer
2020-06-15 18:24:41 +02:00
kabeer27 c5526a3652 [Oss-Fuzz] Improving pdu_parse_target.c 2020-06-15 13:41:01 +05:30
obgm 9a61290b0b Merge pull request #505 from mrdeep1/cmake_shared_lib
CMakeLists.txt: Put BUILD_SHARED_LIBS option before add_library()
2020-06-08 11:11:27 +02:00
Olaf Bergmann 6b19f19562 uri.h: improved documentation 2020-06-03 10:06:25 +02:00
Olaf Bergmann 617ac895ec Merge branch 'develop' of github.com:obgm/libcoap into develop 2020-06-03 09:48:17 +02:00
obgm a178bd15d1 Merge pull request #509 from mrdeep1/rfc_8782
RFC7872: Add in media type application/dots+cbor
2020-06-03 09:39:29 +02:00
Jon Shallow 9dd16a3260 RFC7872: Add in media type application/dots+cbor
include/coap2/pdu.h:
src/coap_debug.c:

Include in coap_show_pdu() output if appropriate.
2020-06-01 11:29:03 +01:00
Olaf Bergmann 2c7c35cf74 coap.h.in: Set LIBCOAP_VERSION 2020-05-29 08:11:44 +02:00
Olaf Bergmann 149f7cb3b1 configure.ac: Define numeric version string
The symbol LIBCOAP_VERSION is set to a decimal 9-digit sequence of
form MMMmmmuuu where MMM is the major version number, mmm the minor
version number and uuu the micro version number.
2020-05-29 08:11:44 +02:00
Olaf Bergmann ffeeee1976 pdu.h: add Content-Format number for application/cwt
RFC 8392 defines the CoAP Content-Format number 61 for application/cwt
(CBOR web tokens).
2020-05-13 16:40:58 +02:00
Olaf Bergmann 93e75e44e3 [RIOT] coap_debug.h: define missing log levels
RIOT defines a subset of the syslog levels in log.h with different
numeric values. The remaining levels are defined here. Note that
output granularity differs from what would be expected when adhering
to the syslog levels.
2020-05-10 20:18:38 +02:00
Olaf Bergmann a78c753e8c [RIOT] coap_io_riot.c: fix timeout parameter in coap_io_process() 2020-05-10 16:41:30 +02:00
Olaf Bergmann 42ae470d2d [RIOT] coap_io_riot.c: Fix data type of parameter timeout_ms
Commit afefd95ce has changed the signature of coap_io_process() to use
a uint32_t for the timeout parameter.
2020-05-10 16:41:30 +02:00
Olaf Bergmann 93c0fcd8e1 [RIOT] coap_config.h.riot: undef HAVE_STRNLEN
strnlen() is not available on all RIOT boards, therefore the
substitution in libcoap is used for now.
2020-05-10 16:41:30 +02:00
Olaf Bergmann 789202ccb8 [RIOT] net.h: exclude coap_io_process_with_fds()
RIOT supports fd_set only for BOARD=native. For now,
coap_io_process_with_fds() is completely disabled on RIOT as it is not
yet implemented in coap_io_riot.c, anyway.
2020-05-10 13:46:50 +02:00
obgm aa4d148e25 Merge pull request #468 from mrdeep1/async_crash
async: Fix session->ref assertion failure and timeout values
2020-05-07 11:50:19 +02:00
Jon Shallow 8559e40cce async: Fix session->ref assertion failure and timeout values
Calling coap_free_context() does not free off any async entries, and so
raises assertion errors when coming to freeing off sessions if any async
entries exist.

async_data_t is a union, but the size of val and ptr are not the same - so
usage can have uninitialized data - hence bad timeout values.

Makefile.am:

Do not expose coap_delete_all*() functions.

examples/coap-server.c:

Fix async_data_t issue.

examples/etsi_iot_01.c:

Fix 32 bit compiler warnings using same logic as coap-server for holding the
async timeout value.

examples/lwip/Makefile:

Include async.c for the LwIP build.

include/coap2/async.h

Define coap_delete_all_async() function.

include/coap2/net.h
include/coap2/resource.h

Document coap_delete_all*() functions as internal.

libcoap-2.map
libcoap-2.sym

Remove non-exposed coap_delete_all*() functions.

src/async.c

Provide coap_delete_all_async() function.

src/net.c

Call coap_delete_all_async() from within coap_free_context().
2020-05-07 09:44:41 +01:00
Olaf Bergmann 43cb3c0778 README.md: Change target of build status badge link
The travis CI build status badges now point to the branches page at
travis-ci.com to provide a quick overview of the build status.
2020-05-07 07:51:41 +02:00
Jon Shallow 0bd77be830 CMakeLists.txt: Put BUILD_SHARED_LIBS option before add_library()
To build shared libraries, either the BUILD_SHARED_LIBS=ON option can be
defined globally for building, otherwise defining BUILD_SHARED_LIBS as an
OPTION in CMakeLists.txt works providing the OPTION is defined before the
add_library() call.

This fix is to move the OPTION BUILD_SHARED_LIBS to before the
add_library() call.

NOTE: Shared Library support is not currently available for Windows as the
appropriate functions are not currently exported.

BUILDING:

Document the Windows limitation and tidy up a bit.
2020-05-06 20:53:05 +01:00
obgm 06089063a1 Merge pull request #504 from mrdeep1/fix_windows_nits
Windows: Fix compiler warnings
2020-05-06 16:10:49 +02:00
Olaf Bergmann bc52b483cd CMakeLists.txt: Fix location of coap_config.h
The auto-generated file coap_config.h needs to be in the top-level
build directory.
2020-05-06 16:05:22 +02:00
obgm fdffe5387a Merge pull request #502 from mrdeep1/cmake_windows
CMakeLists.txt: Fix COAP_DISABLE_TCP
2020-05-06 16:02:16 +02:00
obgm ad6c1c23a1 Merge pull request #496 from mrdeep1/disable_tcp
TCP_DISABLE: reduce more of the dead code when --disable-tcp is in used
2020-05-06 16:01:34 +02:00
obgm 7f9315ffef Merge pull request #503 from mrdeep1/cmake_lib_name
CMakeLists.txt: Make library name libcoap-2 to match name in man pages
2020-05-06 14:55:01 +02:00
Jon Shallow 7fff53227a Windows: Fix compiler warnings
Fix size_t to int warnings by explicit casting.
Fix usage of fileno.
2020-05-06 12:38:49 +01:00
Jon Shallow 80275f6515 CMakeLists.txt: Make library name libcoap-2 to match name in man pages 2020-05-06 11:39:16 +01:00
Jon Shallow f08f9ea86e TCP_DISABLE: reduce more of the dead code when --disable-tcp is in used
src/coap_session.c:
src/net.c:

Wrap more code with #if !COAP_DISABLE_TCP

include/coap2/coap_tcp_internal.h:

Wrap function definitions with #if !COAP_DISABLE_TCP to force compiler
warnings if there still is reference to TCP functions and COAP_DISABLE_TCP
is set.
2020-05-06 10:26:37 +01:00
obgm 9040a05690 Merge pull request #501 from mrdeep1/tidy_man_pages
man pages: Tidy up
2020-05-06 10:54:01 +02:00
Jon Shallow 3b60827d9a man pages: Tidy up
man/coap_attribute.txt.in:
man/coap_context.txt.in:
man/coap_encryption.txt.in:
man/coap_handler.txt.in:
man/coap_io.txt.in:
man/coap_keepalive.txt.in:
man/coap_logging.txt.in:
man/coap_observe.txt.in:
man/coap_pdu_setup.txt.in:
man/coap_recovery.txt.in:
man/coap_resource.txt.in:
man/coap_session.txt.in:
man/coap_tls_library.txt.in:

Make sure the full list is defined in the NAME section
[Gives a2x warnings that there are more than 10 entries, but this is OK]

Update where BUGS can be reported to.

man/Makefile.am:

Remove EXTRA_PAGES as all the names are now defined A2X_EXTRA_PAGES.
2020-05-06 09:33:31 +01:00
Jon Shallow 59b7843b9a CMakeLists.txt: Fix COAP_DISABLE_TCP
Windows testing highlighted that COAP_DISABLED_TCP was not being correctly
set from ENABLE_TCP.

Also sorted some of the lists for ease of maintenance.
2020-05-05 21:27:44 +01:00
Olaf Bergmann 81d41b88e8 mem.c: fix compiler warning for re-definition of assert
Commit 8faa8c28f has moved the inclusion of assert.h to
coap_internal.h. This change therefore removes the definition of
assert to avoid warnings due to multiple definitions.
2020-05-05 19:19:44 +02:00
Olaf Bergmann 0e55b42fd3 [RIOT] coap_io_riot.c: Update to coap_io_ functions
This change replaces calls to the deprecated functions coap_write()
and coap_read() with coap_io_prepare_io() and coap_io_do_io().
2020-05-05 14:25:40 +02:00
obgm 8b31d1415a Merge pull request #488 from mrdeep1/riot_base
Merge in riot/posix_sockets branch
2020-05-05 14:25:07 +02:00
obgm 2d2c14d061 Merge pull request #454 from biodranik/custom-dtls-algorithms-and-groups
Support custom (D)TLS signature_algorithms and supported_groups
2020-05-04 18:33:19 +02:00
obgm 4c299ddc95 Merge pull request #444 from mrdeep1/sign-conversion
Windows C4267 errors: Fix size_t conversion warnings in windows builds
2020-05-04 17:49:45 +02:00
obgm 3758a424bd Merge pull request #498 from mrdeep1/observe_delete_404
resource.c: Send out a 4.04 to any observer when deleting resource
2020-05-04 17:48:35 +02:00
Jon Shallow 3989ca5dba resource.c: Send out a 4.04 to any observer when deleting resource
As per RFC7641:

However, in the event that the state of a resource changes in
a way that would cause a normal GET request at that time to return a
non-2.xx response (for example, when the resource is deleted), the
server SHOULD notify the client by sending a notification with an
appropriate response code (such as 4.04 Not Found) and subsequently
MUST remove the associated entry from the list of observers of the
resource.

src/resource.c:

Send out a 4.04 response to all observers of a resource when deleting it.
2020-05-04 16:24:36 +01:00
obgm 708b577e5c Merge pull request #480 from mrdeep1/get_observe
net.c: Restrict subscriptions to only GET/FETCH requests
2020-05-04 16:53:31 +02:00
Olaf Bergmann 4d7f047f29 configure.ac: increase micro version to beta
In preparation of release 4.3.0, the micro version suffix has been
changed from alpha to beta.
2020-05-04 16:49:37 +02:00
obgm 6212bd3c7f Merge pull request #442 from mrdeep1/examples_code_check
Man examples: Add in support to check that the man example's code compiles
2020-05-04 16:48:06 +02:00
Jon Shallow 7812efb1eb Man examples: Add in support to check that the man example's code compiles
There needs to be an easy way to validate that the examples provided in the
man pages compile without errors.

This PR provides a new executable examples-code-check that can be run against
the .txt.in files that are in the man directory.  It abstracts the code for
each example and then runs the compiler against that stub code reporting errors
and warnings as appropriate for subsequent fixing in the man page.

.gitignore:

Ignore the new executable and the files it generates.

Makefile.am:
configure.ac:

Remove MAN_DIR and hard code in the man directory so that examples-code-check
is always built.

autogen.sh:

Make sure that all the temporary stub code files are cleaned up.

man/Makefile.am:

Support building and clean-up of the new examples-code-check.

man/examples-code-check.c: (new)

The code that parses the man pages, looking for examples and the gets
the examples compiled, testing for errors.
The function definitions in the SYNOPSIS section are also included in the
compilation of the examples.

scripts/build.sh:

If WITH_TESTS is set, check that the man page examples compile.

man/coap_encryption.txt.in:
man/coap_io.txt.in:
man/coap_observe.txt.in:
man/coap_pdu_setup.txt.in:
man/coap_resource.txt.in:
man/coap_session.txt.in:

Correct the SYNOPSIS function definitions.
2020-05-04 14:47:36 +01:00
obgm 1e9900de60 Merge pull request #443 from mrdeep1/man_fix
Remove man page coap_session_str definition duplications
2020-05-04 13:40:30 +02:00
Olaf Bergmann 35b16cef5a README: added CMake status badge
The status badge refers to the default branch (= develop).
2020-05-04 12:41:54 +02:00