The warning is, on FreeBSD,
CC asn1helpers.lo
asn1helpers.c:68:10: error: comparison of unsigned expression < 0 is always false [-Werror,-Wtautological-compare]
if (len < 0)
~~~ ^ ~
Change-Id: I80867da697d744d7ef4d70c8f24031f5781fb11a
libasn1c is using libm[ath] symbols from REAL.c and hence should be
linked using '-lm' to carry a dynamic linker dependency itself.
We shouldn't use a pkg-config hack to ask applications to do this on
our behalf.
Change-Id: Ie107f7252eeed90233468deaef57d3cee36abdf4
All of this code is from asn1c 0.9.28, so let's make sure
autoconf + debian packaging agree on the version numbering
Change-Id: Ie8dc8f5df7123d4bf7579f6f4e84b7cc33d49607
/usr/include/features.h:148:3: warning: #warning "_BSD_SOURCE and _SVID_SOURCE are deprecated, use _DEFAULT_SOURCE" [-Wcpp]
# warning "_BSD_SOURCE and _SVID_SOURCE are deprecated, use _DEFAULT_SOURCE"
^~~~~~~
Change-Id: I442e60413b3bee6d365cd5df672a558d68998670
In file included from asn1helpers.c:14:0:
../include/asn1c/asn1helpers.h: In function ‘OCTET_STRING_noalloc’:
../include/asn1c/asn1helpers.h:26:9: warning: assignment discards ‘const’ qualifier from pointer target type [-Wdiscarded-qualifiers]
s->buf = str;
^
Change-Id: Ie2fefe710090de779137c36b98239ef4a097b6dd
The license is not a 3-clause BSD, but a 2-clause BSD. Couldn't
find any trace to a 3rd clause anywhere.
Change-Id: I4f908ce4f670e062e6808ac7966d0e52bfe6b4f9
asn1helpers.c originally existed in the repository of an application
(osmo-hnbgw, IIRC), and hence was under AGPLv3. When moving it to
this repository, it should have been relicensed but wasn't. The
intention was never to "contaminate" (lib)asn1c with AGPLv3 code.
Change-Id: I8e714d4c51d771b1eabec7aa06e7daae73f48b15
When decoding a constrained integer with a lower boundary, we need
to make sure the lower bound is added after decoding the raw offset
inside the range.
Before this change, RANAP_CauseMisc_unspecified_failure (115) would be
encoded as 2 (115 - 113 = 2), but would be decoded as 2, rather than
113+2 = 115.
Code for this was taken from
openairinterface5g/openair3/S1AP/MESSAGES/ASN1/asn1cpatch.p0 which
unfortunately doesn't carry much of a revision history :/
The number of bytes used by an APER encoded integer depends on its
actually encoded value, not on the maximum value that could be possibly
encoded.
The old code would e.g. always use 24 bits if the maximum encoded value
would require 24 bits.
To give an example RANAP MaxBitrate (INTEER 1 .. 16000000) value 64000
was previously encoded as "80 00 f9 ff", while it is now the correct
representation "40 f9 ff".
Thanks to Dieter Spaar for detecting this problem in the Osmo-IUH
generated RANAP output, and thanks to openairinterface for fixing the
bug in their code (sadly not contributed to upstream asn1c, though).
The libosmocore depedency is used for talloc and OSMO_ASSERT.
Reduce the depedencies by using libtalloc directly and replace
the ASSERT with a local one (without backtrace support).
When encoding an INTEGER, we need to subtract the lower bound before
encoding the value. This is specified in Clause 10.5.7.x of X.691.
The decoder already does this correct, but the encoder was wrong.
... which in turn causes all the ASN_DEBUG() to be turned into
fprintf(stderr, ...) statements, once the user application decides
to set 'asn_debug = 1' somewhere in its code.
The next step would be to make _ASN_DECODE_FAILED / _ASN_ENCODE_FAILED
no longer depend on ASN_DEBUG (which it currently does)
Sometimes, if the choice is a null or integer or ...
it's not easy to know what has really been selected without
the choice member name.
Signed-off-by: Sylvain Munaut <tnt@246tNt.com>