| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
| |
simple copy into C from reversed code from www.hackingprojects.net
|
|
|
|
|
|
| |
Before the assigned value (0xFF) was truncated, reg->text[0] is of
type char. A corresponding test for the same value in openbsc could
only fail.
|
|
|
|
|
|
|
|
| |
This information element has been added to the MM Information
message in GSM24.008. This patch adds it to the tlv_definition
to keep the TLV parser from breaking.
Ticket: OW#978
|
|
|
|
|
|
| |
The number of digits is the number of used octets times two (two
digits per octet). The result has been successfully dissected by
wireshark. It has not been tested with real phones.
|
|
|
|
|
| |
The table structure is not intuitive, so this comment shall aid to
understand this.
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
The 7bit<->8bit encoding/decoding functions didn't check whether
there is still enough space in the destination buffer. Therefore a
buffer size parameter has been added to each of the functions which
is used to truncate the output if the buffer is too small.
In addition, the return value of the decoding functions has been
changed to number of characters written (excluding \0), so this
value is always equal to strlen(decoded).
The old functions are still available as wrapper functions.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
if (ptr)
msgb_free(ptr)
extends to:
if (ptr)
talloc_free(ptr)
And according to the talloc documentation a talloc_free(NULL)
will not crash: "... Likewise, if "ptr" is NULL, then the function
will make no modifications and returns -1."
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Handling 7-bit coding is a little different for USSD, as TS 03.38
states:
To avoid the situation where the receiving entity confuses 7 binary
zero pad bits as the @ character, the carriage return or <CR>
character shall be used for padding in this situation [...].
If <CR> is intended to be the last character and the message
(including the wanted <CR>) ends on an octet boundary, then another
<CR> must be added together with a padding bit 0. The receiving entity
will perform the carriage return function twice, but this will not
result in misoperation as the definition of <CR> [...] is identical to
the definition of <CR><CR>.
The receiving entity shall remove the final <CR> character where the
message ends on an octet boundary with <CR> as the last character.
Jacob has verified the fix with fakeBTS and the wireshark dissector.
Fixes: OW#947
Reviewed-by: Jacob Erlbeck <jerlbeck@sysmocom.de>
|
|
|
|
|
|
|
| |
This is required for encoding the SMS header using the alpha numeric
rules.
Reviewed-by: Jacob Erlbeck <jerlbeck@sysmocom.de>
|
|
|
|
|
| |
This is required for osmo-bsc to parse Alcatel S-12 CIPHER MODE COMMAND
in osmo-bsc.
|
|
|
|
|
|
|
|
|
| |
lapdm.c takes the re-establishment message and forwards it to lapd_core.c,
so we can assume that msgb is set at primitive. In case there is data in
the re-establishment msg, it is moved into send_buffer. In case of no
data (0 length), it must be freed.
Fixes an issue spotted by Coverity Scan.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This reverts commit f996b05dbddccb8e8788dd69777a4fedfa2373eb
and 2b0cac4ef83137ee0bdd583aee877eac467abeab. A detailed
explanation can be found here:
http://lists.osmocom.org/pipermail/openbsc/2013-July/004737.html
The short description is that:
1.) The API should return (as out parameter) the number of
octets used.
2.) The handling for the <CR> encoding only applies to USSD
and it is incomplete. On top of that it broke the SMS test.
|
| |
|
|
|
|
|
|
| |
To avoid the situation where the receiving entity confuses 7 binary zero pad
bits as the @ character, the carriage return or <CR> character shall be used
for padding in this situation.
|
|
|
|
| |
It is used to transfer PHYSICAL INFORMATION message to the MS.
|
|
|
|
|
|
|
|
|
|
| |
If the datalink fails or if handover or assignment to a new channel fails,
it is re-establised by sending SABM again. The length of establish message
is 0 in this case. The length is used to differentiate between
re-establishment and contention resolution, which has to be handled
differently.
See TS 04.06 Chapter 5.4.2.1
|
|
|
|
|
|
|
|
| |
The &buf[3] is unlikely to be aligned properly. Use memcpy instead
of an assignment. Add a small testcase that verifies that I didn't
mess up the conversion.
Alignment trap: osmo-nitb (3293) PC=0x492b7094 Instr=0xe5803003 Address=0xbeb259db FSR 0x801
|
| |
|
|
|
|
|
|
|
|
| |
When a SABM(E) frame arrives, we have to trim the L2 padding (0x2b for
gsm) before handing the data off to L3, just like we do with I frames.
Also, we should use mggb_trim() or even msgb_l3trim() instead of
manually fiddling with msgb->length and ->tail pointers.
|
| |
|
| |
|
|
|
|
|
| |
Make detecting use after free of the tx_hist easy and set the
variable to NULL after talloc_free has been freed.
|
| |
|
|
|
|
|
|
|
|
|
| |
After reception of SABM, the network responds with UA and enters the
establised multiframe state. If UA is not received by mobile, the SABM
is transmitted again, and the network must respond with UA again, unless
it is from a different mobile.
Add LAPDm collision test (contention resolution on network side).
|
| |
|
|
|
|
|
|
| |
Only the Gb library relies on having undefined references to a
symbol that needs to be provided by the host application. For
all other libraries we can link with -no-undefined.
|
|
|
|
|
| |
Doxygen generates quite a lot of warnings on libosmocore. Some of them
are obvious typos - this patch aims to fix such low-hanging fruit.
|
|
|
|
|
|
| |
this will avoid printing 'abis_nm.c' as the filename in the log, which
is pretty useless during debugging. We want to know where
abis_nm_debugp_foh() is being used from, not where it is implemented.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This was found while implementing handover on a sysmobts. When we
receive a channel release request for a channel that was never really
activated (set_lapdm_context() was not called) we segfault in
lapd_recv_dlsap().
We now return early with -EINVAL in rslms_rx_rll() if we receive a
message that assumes set_lapdm_context() was already called.
These are:
* RSL_MT_UNIT_DATA_REQ
* RSL_MT_DATA_REQ
* RSL_MT_SUSP_REQ
* RSL_MT_REL_REQ
A test case was added to trigger the issue.
|
|
|
|
| |
Signed-off-by: Sylvain Munaut <tnt@246tNt.com>
|
|
|
|
| |
Signed-off-by: Sylvain Munaut <tnt@246tNt.com>
|
| |
|
|
|
|
|
|
| |
Extracted from a patch by Max Suraev Max.Suraev@fairwaves.ru>
Signed-off-by: Sylvain Munaut <tnt@246tNt.com>
|
|
|
|
| |
Log message that are either too big or have the C/R bit set as error.
|
| |
|
|
|
|
|
|
| |
GCC 4.7.2 was already smart enough to see that the table is const
so there is no change in the generated assembly code. For some reason
the dispatch is still going through one relocation.
|
| |
|
|
|
|
|
|
|
|
|
|
| |
When OpenBSC is handling more than one message at a time it is difficult
to see which log message belongs to which SMR instance. Introduce a
uint64_t id that can be set to the row_id/message_id and prefix all
log messages with SMR(ID).
This change is ABI and API incompatible with previous versions of
libosmogsm.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
When OpenBSC is handling more than one message at a time it is difficult
to see which log message belongs to which SMC. Introduce a uint64_t id
that can be set to the row_id/message_id and prefix all log messages
with SMC(ID).
This change is ABI and API incompatible with previous versions of
libosmogsm.
Example:
SMC(100) instance created
SMC(100) message MNSMS-EST-REQ received in state IDLE
|
| |
|
|
|
|
|
|
| |
When the connection may not released print the name of the current
state to ease with debugging and verification that this is not a
valid state transition.
|
|
|
|
|
| |
This code got copied from OpenBSC and we used the network specific
and private numbering plan. Remove it as it can be easily set.
|
|
|
|
|
| |
<001c> gsm0411_smr.c:175 TX: MNSMS-REL-REQ adds little value so
I am reducing it to a debug statement.
|
|
|
|
|
| |
This avoids an unaligned access on platforms that don't support them,
such as ARMv4/ARMv5.
|
|
|
|
|
| |
Add a check to not use --version-script linker flag if compiled on OSX
since it doesn't exist there
|
|
|
|
| |
extension character before doing anything else
|
|
|
|
| |
'if' is not a function, so we have space before parenthesis.
|
| |
|
|
|
|
|
|
|
|
| |
The comment explains why we don't care about the content of z,
stop storing it.
gsm_utils.c: In function 'gsm_7bit_encode':
gsm_utils.c:253:13: warning: variable 'z' set but not used [-Wunused-but-set-variable]
|