| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
| |
Signed-off-by: Sylvain Munaut <tnt@246tNt.com>
|
| |
|
|
|
|
|
| |
The actual gsm_7bit_decode can still cause a buffer overrun
but at least we are safe until this point.
|
|
|
|
| |
Make sure that the mandatory and optional part fits.
|
|
|
|
|
|
| |
Use a while() {} to check offset +2 <= length on the first
iteration of the loop. Once we have the component length
check that it is going to fit into the given length.
|
|
|
|
| |
Work with uint16_t for the length all the way.
|
|
|
|
|
| |
This is fixing the current crashes. Next we will need to
manipulate the content...
|
|
|
|
|
|
| |
The current USSD code is not doing any size checks, add a test
case to find out how easily we access the data out of bounds.
Begin to use the length in some places.
|
|
|
|
|
|
|
| |
- Change u_int8 to uint8
- Change DEBUGP to LOGP
- Change fprintf(stderr, to LOGP(0, LOGL_DEBUG
- We should define log areas used inside libosmocore
|
|
|
|
|
|
| |
This file format will be used to store per country code,
per network code messages. This will be used for various
things ranging from access control, to messages...
|
|
|
|
|
|
| |
These routines come from OpenBSC, the msgb_wrap_* functions
belong to Mike Haben, the rest is mine. The msgb allocation
is compatible to the GSM48 allocation in OpenBSC.
|
|
|
|
|
|
|
|
| |
The highest bit must be set as "No extension byte" marker,
so that the next byte is considered to be the BCD number
and not some more control stuff
Signed-off-by: Sylvain Munaut <tnt@246tNt.com>
|
|
|
|
|
|
|
| |
The nat code stumbled over the CIC bug as it was detecting
timeslot 0x1 as a new CIC and we were patching the data outside
the actual packet... The TLV parser needs some better size
checking too.
|
|
|
|
|
|
| |
This is required for target build in libosmocore
Signed-off-by: Sylvain Munaut <tnt@246tNt.com>
|
|
|
|
|
|
| |
It is easier to call these two functions from bindings than
wrapping the vty structure and figuring out the alignment of
the enum on all different ABIs.
|
| |
|
|
|
|
|
| |
Use SUBDIRS to build src first and the src/vty. We will need
to find the right way add the dependencies.
|
|
|
|
|
|
|
| |
The method should be renamed to is child of config node
as it was comparing if vty->node > CONFIG_NODE. This is
fixing an assert in go_to_parent as we tried to find a
parent for the CONFIG_NODE.
|
|
|
|
| |
According to a internet search PATH_MAX is in limits.h on OSX.
|
| |
|
| |
|
|
|
|
|
|
| |
Move the assumption that something is a child of the CONFIG_NODE
into a new function. The next step will be to use something else
for that.
|
| |
|
| |
|
| |
|
|
|
|
|
|
|
| |
bsc_register_fd on an already registered fd can corrupt the list
in a heavy way and make the select end in an infinite loop, this
code will workaround the issue and provide a way to set a breakpoint
at the right position in the code.
|
| |
|
|
|
|
| |
This will enable us to use this function from OpenBSC / ipaccess-config
|
| |
|
| |
|
| |
|
| |
|
|
|
|
|
|
|
|
| |
This also includes an option for a minimal 'infinite loop' type
panic that could be required for embedded target that don't have
abort() or fprintf()
Signed-off-by: Sylvain Munaut <tnt@246tNt.com>
|
|
|
|
| |
Signed-off-by: Sylvain Munaut <tnt@246tNt.com>
|
| |
|
| |
|
| |
|
|
|
|
|
| |
I have added the + 1 as I thought rtext will hold a terminating
null byte but it will not.
|
|
|
|
|
|
|
|
|
| |
make sure to return the number of actually written bytes gsm_7bit_decode:
calculate length of resulting septets from input length before decoding
The input length to gsm_7bit_decode reflects the number of encoded bytes
to be decoded. As the decoding is done on the input in septetes we need
to take this into account and recalculate the length.
|
|
|
|
|
| |
If i + 1 == length and it is an escape charachter we would try
to read rtext[length] which is one after the field we have allocated.
|
|
|
|
| |
previous code produced wrong encodings for certain characters.
|
| |
|
|
|
|
| |
This enables us to do something like <-128-127> as a numeric range.
|
|
|
|
|
| |
This allows us to generate RSLms messages that have some non-standard
IEs between the RSL/RLL common header and the L3 INFO IE.
|
| |
|
|
|
|
|
|
| |
Also added RR and MM TLV tables to gsm48.c
[import from accidential commit to osmocom-bb.git]
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
In case of a single octet, the upper nibble is the type, the lower nibble
carries the value.
[import from accidentially committed changes to osmocom-bb.git]
diff --git a/src/shared/libosmocore/include/osmocore/tlv.h b/src/shared/libosmocore/include/osmocore/tlv.h
index c733dbc..4cfce87 100644
--- a/src/shared/libosmocore/include/osmocore/tlv.h
+++ b/src/shared/libosmocore/include/osmocore/tlv.h
@@ -212,6 +212,7 @@ enum tlv_type {
TLV_TYPE_TLV,
TLV_TYPE_TL16V,
TLV_TYPE_TvLV,
+ TLV_TYPE_SINGLE_TV
};
struct tlv_def {
diff --git a/src/shared/libosmocore/src/tlv_parser.c b/src/shared/libosmocore/src/tlv_parser.c
index 407e57a..bbef7a9 100644
--- a/src/shared/libosmocore/src/tlv_parser.c
+++ b/src/shared/libosmocore/src/tlv_parser.c
@@ -36,6 +36,14 @@ int tlv_parse_one(uint8_t *o_tag, uint16_t *o_len, const uint8_t **o_val,
tag = *buf;
*o_tag = tag;
+ /* single octet TV IE */
+ if (def->def[tag & 0xf0].type == TLV_TYPE_SINGLE_TV) {
+ *o_tag = tag & 0xf0;
+ *o_val = buf;
+ *o_len = 1;
+ return 1;
+ }
+
/* FIXME: use tables for knwon IEI */
switch (def->def[tag].type) {
case TLV_TYPE_T:
|
|
|
|
|
|
| |
thanks to horizon for noticing :p
Signed-off-by: Sylvain Munaut <tnt@246tNt.com>
|
| |
|
| |
|