fix strncpy() invocation in vty_interface_layer3.c and 3 tests
Use osmo_strlcpy() to fix unsafe invocation of strncpy(), which potentially left the result unterminated. Change-Id: I1a119b1760a3e3262538b4b012d476fdce505482
This commit is contained in:
parent
f5e74b5988
commit
59504dc80f
|
@ -7,6 +7,7 @@
|
||||||
#include <osmocom/core/msgb.h>
|
#include <osmocom/core/msgb.h>
|
||||||
#include <osmocom/core/select.h>
|
#include <osmocom/core/select.h>
|
||||||
#include <osmocom/core/application.h>
|
#include <osmocom/core/application.h>
|
||||||
|
#include <osmocom/core/utils.h>
|
||||||
#include <osmocom/gsm/gsup.h>
|
#include <osmocom/gsm/gsup.h>
|
||||||
|
|
||||||
#include <openbsc/gsup_client.h>
|
#include <openbsc/gsup_client.h>
|
||||||
|
@ -108,7 +109,7 @@ int req_auth_info(const char *imsi)
|
||||||
struct osmo_gsup_message gsup = {0};
|
struct osmo_gsup_message gsup = {0};
|
||||||
struct msgb *msg = msgb_alloc_headroom(1200, 200, __func__);
|
struct msgb *msg = msgb_alloc_headroom(1200, 200, __func__);
|
||||||
|
|
||||||
strncpy(gsup.imsi, io->imsi, sizeof(gsup.imsi));
|
osmo_strlcpy(gsup.imsi, io->imsi, sizeof(gsup.imsi));
|
||||||
gsup.message_type = OSMO_GSUP_MSGT_SEND_AUTH_INFO_REQUEST;
|
gsup.message_type = OSMO_GSUP_MSGT_SEND_AUTH_INFO_REQUEST;
|
||||||
|
|
||||||
osmo_gsup_encode(msg, &gsup);
|
osmo_gsup_encode(msg, &gsup);
|
||||||
|
@ -123,7 +124,7 @@ int req_loc_upd(const char *imsi)
|
||||||
struct osmo_gsup_message gsup = {0};
|
struct osmo_gsup_message gsup = {0};
|
||||||
struct msgb *msg = msgb_alloc_headroom(1200, 200, __func__);
|
struct msgb *msg = msgb_alloc_headroom(1200, 200, __func__);
|
||||||
|
|
||||||
strncpy(gsup.imsi, io->imsi, sizeof(gsup.imsi));
|
osmo_strlcpy(gsup.imsi, io->imsi, sizeof(gsup.imsi));
|
||||||
gsup.message_type = OSMO_GSUP_MSGT_UPDATE_LOCATION_REQUEST;
|
gsup.message_type = OSMO_GSUP_MSGT_UPDATE_LOCATION_REQUEST;
|
||||||
|
|
||||||
osmo_gsup_encode(msg, &gsup);
|
osmo_gsup_encode(msg, &gsup);
|
||||||
|
@ -136,7 +137,7 @@ int resp_isd(struct imsi_op *io)
|
||||||
struct osmo_gsup_message gsup = {0};
|
struct osmo_gsup_message gsup = {0};
|
||||||
struct msgb *msg = msgb_alloc_headroom(1200, 200, __func__);
|
struct msgb *msg = msgb_alloc_headroom(1200, 200, __func__);
|
||||||
|
|
||||||
strncpy(gsup.imsi, io->imsi, sizeof(gsup.imsi));
|
osmo_strlcpy(gsup.imsi, io->imsi, sizeof(gsup.imsi));
|
||||||
gsup.message_type = OSMO_GSUP_MSGT_INSERT_DATA_RESULT;
|
gsup.message_type = OSMO_GSUP_MSGT_INSERT_DATA_RESULT;
|
||||||
|
|
||||||
osmo_gsup_encode(msg, &gsup);
|
osmo_gsup_encode(msg, &gsup);
|
||||||
|
|
|
@ -601,7 +601,7 @@ DEFUN(ena_subscr_extension,
|
||||||
return CMD_WARNING;
|
return CMD_WARNING;
|
||||||
}
|
}
|
||||||
|
|
||||||
strncpy(subscr->extension, ext, sizeof(subscr->extension));
|
osmo_strlcpy(subscr->extension, ext, sizeof(subscr->extension));
|
||||||
db_sync_subscriber(subscr);
|
db_sync_subscriber(subscr);
|
||||||
|
|
||||||
subscr_put(subscr);
|
subscr_put(subscr);
|
||||||
|
|
|
@ -25,6 +25,7 @@
|
||||||
|
|
||||||
#include <osmocom/core/application.h>
|
#include <osmocom/core/application.h>
|
||||||
#include <osmocom/core/talloc.h>
|
#include <osmocom/core/talloc.h>
|
||||||
|
#include <osmocom/core/utils.h>
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
#include <limits.h>
|
#include <limits.h>
|
||||||
#include <dlfcn.h>
|
#include <dlfcn.h>
|
||||||
|
@ -54,7 +55,7 @@ static void test_strline(void)
|
||||||
char buf[2048];
|
char buf[2048];
|
||||||
int counter = 0;
|
int counter = 0;
|
||||||
|
|
||||||
strncpy(buf, strline_test_data, sizeof(buf));
|
osmo_strlcpy(buf, strline_test_data, sizeof(buf));
|
||||||
|
|
||||||
for (line = strline_r(buf, &save); line;
|
for (line = strline_r(buf, &save); line;
|
||||||
line = strline_r(NULL, &save)) {
|
line = strline_r(NULL, &save)) {
|
||||||
|
|
|
@ -36,6 +36,7 @@
|
||||||
#include <osmocom/core/application.h>
|
#include <osmocom/core/application.h>
|
||||||
#include <osmocom/core/msgb.h>
|
#include <osmocom/core/msgb.h>
|
||||||
#include <osmocom/core/rate_ctr.h>
|
#include <osmocom/core/rate_ctr.h>
|
||||||
|
#include <osmocom/core/utils.h>
|
||||||
|
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
|
|
||||||
|
@ -1292,7 +1293,7 @@ int my_gsup_client_send(struct gsup_client *gsupc, struct msgb *msg)
|
||||||
rc = osmo_gsup_decode(msgb_data(msg), msgb_length(msg), &to_peer);
|
rc = osmo_gsup_decode(msgb_data(msg), msgb_length(msg), &to_peer);
|
||||||
OSMO_ASSERT(rc >= 0);
|
OSMO_ASSERT(rc >= 0);
|
||||||
OSMO_ASSERT(to_peer.imsi[0] != 0);
|
OSMO_ASSERT(to_peer.imsi[0] != 0);
|
||||||
strncpy(from_peer.imsi, to_peer.imsi, sizeof(from_peer.imsi));
|
osmo_strlcpy(from_peer.imsi, to_peer.imsi, sizeof(from_peer.imsi));
|
||||||
|
|
||||||
/* This invalidates the pointers in to_peer */
|
/* This invalidates the pointers in to_peer */
|
||||||
msgb_free(msg);
|
msgb_free(msg);
|
||||||
|
|
Loading…
Reference in New Issue