8.4.1.70 Prpl Release

This commit is contained in:
Release Engineer 2020-04-28 23:28:49 +05:30
parent 68c04460df
commit f722e13e0d
20 changed files with 2754 additions and 943 deletions

View file

@ -1,5 +1,20 @@
NEXT VERSION
V4.21.6.2 - 2019-12-30
common:
- VRX (CURTSYS-2942) [SDL] Use of vulnerable C functions - Against Safe C Pt1/2
V4.21.6.1 - 2019-12-27
common:
- VRX (CURTSYS-2779) Replace mechanism to avoid multiple instances of
dsl_cpe_control
- VRX (CURTSYS-2771) Config/status files in tmp
- VRX (CURTSYS-2695) Add documentation for config and status parameters
- VRX (CURTSYS-2913) Take care the DSL status JSON file is gathering all
parameters
- VRX (CURTSYS-2791) Bonding functionality is not working on AXEPOINT board
- VRX (CURTSYS-2670) MEI_VECTOR_FRIENDLY_CTRL_AUTO to MEI_VECTOR_CTRL_AUTO string fix
V4.21.6 - 2019-10-14
- VRX (CURTSYS-2484) Implement status JSON update for line stats
- VRX (CURTSYS-2485) Implement status JSON update for channel stats

View file

@ -5,7 +5,7 @@
#define PACKAGE "dsl_cpe_control"
/* Version number of package */
#define VERSION "4.21.6"
#define VERSION "4.21.6.2"
/* Define to the version of this package. */
#define PACKAGE_VERSION VERSION

20
configure vendored
View file

@ -1,7 +1,7 @@
#! /bin/sh
# From configure.in Revision: 1.173 .
# Guess values for system-dependent variables and create Makefiles.
# Generated by GNU Autoconf 2.69 for DSL CPE Control application 4.21.6.
# Generated by GNU Autoconf 2.69 for DSL CPE Control application 4.21.6.2.
#
#
# Copyright (C) 1992-1996, 1998-2012 Free Software Foundation, Inc.
@ -578,8 +578,8 @@ MAKEFLAGS=
# Identity of this package.
PACKAGE_NAME='DSL CPE Control application'
PACKAGE_TARNAME='dsl_cpe_control'
PACKAGE_VERSION='4.21.6'
PACKAGE_STRING='DSL CPE Control application 4.21.6'
PACKAGE_VERSION='4.21.6.2'
PACKAGE_STRING='DSL CPE Control application 4.21.6.2'
PACKAGE_BUGREPORT=''
PACKAGE_URL=''
@ -1529,7 +1529,7 @@ if test "$ac_init_help" = "long"; then
# Omit some internal or obsolete options to make the list less imposing.
# This message is too long to be a string in the A/UX 3.1 sh.
cat <<_ACEOF
\`configure' configures DSL CPE Control application 4.21.6 to adapt to many kinds of systems.
\`configure' configures DSL CPE Control application 4.21.6.2 to adapt to many kinds of systems.
Usage: $0 [OPTION]... [VAR=VALUE]...
@ -1595,7 +1595,7 @@ fi
if test -n "$ac_init_help"; then
case $ac_init_help in
short | recursive ) echo "Configuration of DSL CPE Control application 4.21.6:";;
short | recursive ) echo "Configuration of DSL CPE Control application 4.21.6.2:";;
esac
cat <<\_ACEOF
@ -1819,7 +1819,7 @@ fi
test -n "$ac_init_help" && exit $ac_status
if $ac_init_version; then
cat <<\_ACEOF
DSL CPE Control application configure 4.21.6
DSL CPE Control application configure 4.21.6.2
generated by GNU Autoconf 2.69
Copyright (C) 2012 Free Software Foundation, Inc.
@ -2171,7 +2171,7 @@ cat >config.log <<_ACEOF
This file contains any messages produced by compilers while
running configure, to aid debugging if configure makes a mistake.
It was created by DSL CPE Control application $as_me 4.21.6, which was
It was created by DSL CPE Control application $as_me 4.21.6.2, which was
generated by GNU Autoconf 2.69. Invocation command line was
$ $0 $@
@ -3036,7 +3036,7 @@ fi
# Define the identity of the package.
PACKAGE='dsl_cpe_control'
VERSION='4.21.6'
VERSION='4.21.6.2'
cat >>confdefs.h <<_ACEOF
@ -10754,7 +10754,7 @@ cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
# report actual input values of CONFIG_FILES etc. instead of their
# values after options handling.
ac_log="
This file was extended by DSL CPE Control application $as_me 4.21.6, which was
This file was extended by DSL CPE Control application $as_me 4.21.6.2, which was
generated by GNU Autoconf 2.69. Invocation command line was
CONFIG_FILES = $CONFIG_FILES
@ -10820,7 +10820,7 @@ _ACEOF
cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`"
ac_cs_version="\\
DSL CPE Control application config.status 4.21.6
DSL CPE Control application config.status 4.21.6.2
configured by $0, generated by GNU Autoconf 2.69,
with options \\"\$ac_cs_config\\"

View file

@ -1,6 +1,6 @@
AC_REVISION($Revision: 1.173 $)
AC_INIT([DSL CPE Control application],[4.21.6],[],[dsl_cpe_control])
AC_INIT([DSL CPE Control application],[4.21.6.2],[],[dsl_cpe_control])
AC_CONFIG_SRCDIR(src/Makefile.am)
AM_INIT_AUTOMAKE([tar-pax])

View file

@ -169,7 +169,8 @@ EXTRA_DIST = \
if INCLUDE_DSL_JSON_PARSING
EXTRA_DIST += \
dsl_cpe_configuration_parser.h \
dsl_cpe_status_parser.h
dsl_cpe_status_parser.h \
dsl_cpe_interface.h
endif
if ADD_APPL_CFLAGS_SET

View file

@ -118,7 +118,8 @@ bin_PROGRAMS = dsl_cpe_control$(EXEEXT)
@INCLUDE_DSL_JSON_PARSING_TRUE@am__append_14 = \
@INCLUDE_DSL_JSON_PARSING_TRUE@ dsl_cpe_configuration_parser.h \
@INCLUDE_DSL_JSON_PARSING_TRUE@ dsl_cpe_status_parser.h
@INCLUDE_DSL_JSON_PARSING_TRUE@ dsl_cpe_status_parser.h \
@INCLUDE_DSL_JSON_PARSING_TRUE@ dsl_cpe_interface.h
@DSL_CCA_DBG_MAX_LEVEL_SET_TRUE@am__append_15 = -DDSL_CCA_DBG_MAX_LEVEL=$(DSL_CCA_DBG_MAX_LEVEL_PRE)
subdir = src

View file

@ -46,7 +46,7 @@ struct Pipe_env_s
/** number of this pipe interface */
DSL_int_t number;
/** name of event pipe */
DSL_char_t namePipeEvent[32];
DSL_char_t namePipeEvent[DSL_CPE_PIPE_NAME_STR_LEN];
/** command buffer */
DSL_char_t cmd_buffer[MAX_CLI_PIPE_CMD_LEN];
DSL_CPE_File_t *pipe_in;
@ -107,8 +107,8 @@ DSL_Error_t DSL_CPE_Pipe_CreateCliEntry(DSL_CPE_Control_Context_t *pContext,
DSL_int_t nPipeNum)
{
DSL_Error_t ret = DSL_SUCCESS;
DSL_char_t Name[32];
DSL_char_t Name[DSL_CPE_PIPE_NAME_STR_LEN];
memset(pPipeEnv, 0, sizeof(Pipe_env_t));
/* remember own number */
@ -138,7 +138,7 @@ DSL_Error_t DSL_CPE_Pipe_CreateCliEntry(DSL_CPE_Control_Context_t *pContext,
pipeNameFormat, nPipeNum, "event");
ret = DSL_CPE_PipeCreate(pPipeEnv->namePipeEvent);
if (ret < DSL_SUCCESS)
{
DSL_CCA_DEBUG(DSL_CCA_DBG_ERR, (DSL_CPE_PREFIX

View file

@ -1645,7 +1645,7 @@ static const DSL_char_t g_sDsmcg[] =
" e_MEI_VECTOR_CTRL_OFF = 0" DSL_CPE_CRLF
" e_MEI_VECTOR_CTRL_ON = 1" DSL_CPE_CRLF
" e_MEI_VECTOR_FRIENDLY_CTRL_ON = 2" DSL_CPE_CRLF
" e_MEI_VECTOR_FRIENDLY_CTRL_AUTO = 3" DSL_CPE_CRLF
" e_MEI_VECTOR_CTRL_AUTO = 3" DSL_CPE_CRLF
DSL_CPE_CRLF "";
#else
"";

View file

@ -12,6 +12,7 @@
#include "json.h"
#include "dsl_cpe_control.h"
#include "dsl_cpe_configuration_parser.h"
#include "dsl_cpe_interface.h"
#include "drv_dsl_cpe_api_ioctl.h"
#if defined(INCLUDE_DSL_CPE_API_VRX)
@ -132,7 +133,7 @@ is undefined, if so use currentParam (from DSL_xxxGet function or any other sour
#define SECTION_PATH_LENGTH 256
/* Configuration file path */
static const char *g_pJsonConfigPath = "/opt/intel/etc/dsl_cpe_control.conf";
static const char *g_pJsonConfigPath = "/tmp/dsl/dsl.conf";
static DSL_Configuration_t g_sConfiguration = { 0 };
/**********************************************/
@ -229,6 +230,7 @@ static DSL_Error_t DSL_CPE_OperatorSelectCfgValidateAndApply(
DSL_Error_t DSL_CPE_ConfigInit()
{
static DSL_boolean_t bInitDone = DSL_FALSE;
DSL_Error_t nRet = DSL_ERROR;
if (bInitDone == DSL_FALSE)
{
@ -307,15 +309,20 @@ DSL_Error_t DSL_CPE_ConfigInit()
DSL_CCA_DEBUG(DSL_CCA_DBG_WRN, (DSL_CPE_PREFIX
"WARNING - Configuration initialized with default values!" DSL_CPE_CRLF));
nRet = DSL_WRN_CONFIG_PARAM_IGNORED;
}
bInitDone = DSL_TRUE;
return DSL_TRUE;
nRet = DSL_SUCCESS;
}
else
{
return DSL_FALSE;
nRet = DSL_ERROR;
}
return nRet;
}
/*
@ -498,75 +505,75 @@ static DSL_void_t DSL_CPE_JsonParse(
/* Debugging */
PARSE_SECTION_INT(
CONFIG_DEBUGGING_SECTION_PATH, "debug_and_test_interfaces", pDebuggingConfig->nDebugAndTestInterfaces);
CONFIG_DEBUGGING_SECTION_PATH, DSL_CFG_DEBUG_AND_TEST_INTERFACES, pDebuggingConfig->nDebugAndTestInterfaces);
/* StartupInit */
PARSE_SECTION_INT(
CONFIG_STARTUPINIT_SECTION_PATH, "next_mode", pStartupInitConfig->nNextMode);
CONFIG_STARTUPINIT_SECTION_PATH, DSL_CFG_NEXT_MODE, pStartupInitConfig->nNextMode);
PARSE_SECTION_INT(
CONFIG_STARTUPINIT_SECTION_PATH, "max_device_number", pStartupInitConfig->nMaxDeviceNumber);
CONFIG_STARTUPINIT_SECTION_PATH, DSL_CFG_MAX_DEVICE_NUMBER, pStartupInitConfig->nMaxDeviceNumber);
PARSE_SECTION_INT(
CONFIG_STARTUPINIT_SECTION_PATH, "lines_per_device", pStartupInitConfig->nLinesPerDevice);
CONFIG_STARTUPINIT_SECTION_PATH, DSL_CFG_LINES_PER_DEVICE, pStartupInitConfig->nLinesPerDevice);
PARSE_SECTION_INT(
CONFIG_STARTUPINIT_SECTION_PATH, "channels_per_line", pStartupInitConfig->nChannelsPerLine);
CONFIG_STARTUPINIT_SECTION_PATH, DSL_CFG_CHANNELS_PER_LINE, pStartupInitConfig->nChannelsPerLine);
/* Bitswap */
PARSE_SECTION_INT(
CONFIG_BITSWAP_SECTION_PATH, "vdsl_us", pBitswapConfig->Us_Vdsl);
CONFIG_BITSWAP_SECTION_PATH, DSL_CFG_BITSWAP_VDSL_US, pBitswapConfig->Us_Vdsl);
PARSE_SECTION_INT(
CONFIG_BITSWAP_SECTION_PATH, "vdsl_ds", pBitswapConfig->Ds_Vdsl);
CONFIG_BITSWAP_SECTION_PATH, DSL_CFG_BITSWAP_VDSL_DS, pBitswapConfig->Ds_Vdsl);
PARSE_SECTION_INT(
CONFIG_BITSWAP_SECTION_PATH, "adsl_us", pBitswapConfig->Us_Adsl);
CONFIG_BITSWAP_SECTION_PATH, DSL_CFG_BITSWAP_ADSL_US, pBitswapConfig->Us_Adsl);
PARSE_SECTION_INT(
CONFIG_BITSWAP_SECTION_PATH, "adsl_ds", pBitswapConfig->Ds_Adsl);
CONFIG_BITSWAP_SECTION_PATH, DSL_CFG_BITSWAP_ADSL_DS, pBitswapConfig->Ds_Adsl);
/* Retransmission */
PARSE_SECTION_INT(
CONFIG_RETRANSMISSION_SECTION_PATH, "vdsl_us", pRetransmissionConfig->Us_Vdsl);
CONFIG_RETRANSMISSION_SECTION_PATH, DSL_CFG_RETX_VDSL_US, pRetransmissionConfig->Us_Vdsl);
PARSE_SECTION_INT(
CONFIG_RETRANSMISSION_SECTION_PATH, "vdsl_ds", pRetransmissionConfig->Ds_Vdsl);
CONFIG_RETRANSMISSION_SECTION_PATH, DSL_CFG_RETX_VDSL_DS, pRetransmissionConfig->Ds_Vdsl);
PARSE_SECTION_INT(
CONFIG_RETRANSMISSION_SECTION_PATH, "adsl_us", pRetransmissionConfig->Us_Adsl);
CONFIG_RETRANSMISSION_SECTION_PATH, DSL_CFG_RETX_ADSL_US, pRetransmissionConfig->Us_Adsl);
PARSE_SECTION_INT(
CONFIG_RETRANSMISSION_SECTION_PATH, "adsl_ds", pRetransmissionConfig->Ds_Adsl);
CONFIG_RETRANSMISSION_SECTION_PATH, DSL_CFG_RETX_ADSL_DS, pRetransmissionConfig->Ds_Adsl);
/* SRA */
PARSE_SECTION_INT(
CONFIG_SRA_SECTION_PATH, "vdsl_us", pSraConfig->Us_Vdsl);
CONFIG_SRA_SECTION_PATH, DSL_CFG_SRA_VDSL_US, pSraConfig->Us_Vdsl);
PARSE_SECTION_INT(
CONFIG_SRA_SECTION_PATH, "vdsl_ds", pSraConfig->Ds_Vdsl);
CONFIG_SRA_SECTION_PATH, DSL_CFG_SRA_VDSL_DS, pSraConfig->Ds_Vdsl);
PARSE_SECTION_INT(
CONFIG_SRA_SECTION_PATH, "adsl_us", pSraConfig->Us_Adsl);
CONFIG_SRA_SECTION_PATH, DSL_CFG_SRA_ADSL_US, pSraConfig->Us_Adsl);
PARSE_SECTION_INT(
CONFIG_SRA_SECTION_PATH, "adsl_ds", pSraConfig->Ds_Adsl);
CONFIG_SRA_SECTION_PATH, DSL_CFG_SRA_ADSL_DS, pSraConfig->Ds_Adsl);
/* Virtualnoise */
PARSE_SECTION_INT(
CONFIG_VIRTUALNOISE_SECTION_PATH, "us", pVirtualNoiseConfig->Us);
CONFIG_VIRTUALNOISE_SECTION_PATH, DSL_CFG_VN_US, pVirtualNoiseConfig->Us);
PARSE_SECTION_INT(
CONFIG_VIRTUALNOISE_SECTION_PATH, "ds", pVirtualNoiseConfig->Ds);
CONFIG_VIRTUALNOISE_SECTION_PATH, DSL_CFG_VN_DS, pVirtualNoiseConfig->Ds);
/* TcLayer */
PARSE_SECTION_INT(
CONFIG_TCLAYER_SECTION_PATH, "adsl", pSystemIfConfig->nTcLayer_Adsl);
CONFIG_TCLAYER_SECTION_PATH, DSL_CFG_TC_ADSL, pSystemIfConfig->nTcLayer_Adsl);
PARSE_SECTION_INT(
CONFIG_TCLAYER_SECTION_PATH, "vdsl", pSystemIfConfig->nTcLayer_Vdsl);
CONFIG_TCLAYER_SECTION_PATH, DSL_CFG_TC_VDSL, pSystemIfConfig->nTcLayer_Vdsl);
/* Common */
PARSE_SECTION_INT(
CONFIG_COMMON_SECTION_PATH, "operator_select", pCommonConfig->nOperatorSelect);
CONFIG_COMMON_SECTION_PATH, DSL_CFG_OPERATOR_SELECT, pCommonConfig->nOperatorSelect);
PARSE_SECTION_INT(
CONFIG_COMMON_SECTION_PATH, "ld_afe_shutdown", pCommonConfig->LdAfeShutdown);
CONFIG_COMMON_SECTION_PATH, DSL_CFG_LD_AFE_SHUTDOWN, pCommonConfig->LdAfeShutdown);
PARSE_SECTION_INT(
CONFIG_COMMON_SECTION_PATH, "vectoring_enable", pCommonConfig->VectoringEnable);
CONFIG_COMMON_SECTION_PATH, DSL_CFG_VECTORING_ENABLE, pCommonConfig->VectoringEnable);
PARSE_SECTION_INT(
CONFIG_COMMON_SECTION_PATH, "activation_sequence", pCommonConfig->ActSeq);
CONFIG_COMMON_SECTION_PATH, DSL_CFG_ACTIVATION_SEQUENCE, pCommonConfig->ActSeq);
PARSE_SECTION_INT(
CONFIG_COMMON_SECTION_PATH, "activation_mode", pCommonConfig->ActMode);
CONFIG_COMMON_SECTION_PATH, DSL_CFG_ACTIVATION_MODE, pCommonConfig->ActMode);
PARSE_SECTION_INT(
CONFIG_COMMON_SECTION_PATH, "remember", pCommonConfig->Remember);
CONFIG_COMMON_SECTION_PATH, DSL_CFG_REMEMBER, pCommonConfig->Remember);
PARSE_SECTION_INT(
CONFIG_COMMON_SECTION_PATH, "fw_msg_polling_only", pCommonConfig->FWMsgPollingOnly);
CONFIG_COMMON_SECTION_PATH, DSL_CFG_FW_MSG_POLLING_ONLY, pCommonConfig->FWMsgPollingOnly);
if (bFound == DSL_FALSE)
{
@ -583,17 +590,17 @@ static DSL_void_t DSL_CPE_JsonParse(
/* Reboot criteria */
PARSE_SECTION_HEX(
CONFIG_REBOOTCRITERIA_SECTION_PATH, "adsl", pRebootCriteriaConfig->Adsl);
CONFIG_REBOOTCRITERIA_SECTION_PATH, DSL_CFG_REBOOT_ADSL, pRebootCriteriaConfig->Adsl);
PARSE_SECTION_HEX(
CONFIG_REBOOTCRITERIA_SECTION_PATH, "vdsl", pRebootCriteriaConfig->Vdsl);
CONFIG_REBOOTCRITERIA_SECTION_PATH, DSL_CFG_REBOOT_VDSL, pRebootCriteriaConfig->Vdsl);
/* Common */
PARSE_SECTION_HEX(
CONFIG_COMMON_SECTION_PATH, "vdsl_profile", pCommonConfig->VdslProfileVal);
CONFIG_COMMON_SECTION_PATH, DSL_CFG_VDSL_PROFILE, pCommonConfig->VdslProfileVal);
PARSE_SECTION_HEX(
CONFIG_LOWLEVELHSTONES_SECTION_PATH, "adsl", pCommonConfig->sLowLevelHsTonesConfig.Adsl);
CONFIG_LOWLEVELHSTONES_SECTION_PATH, DSL_CFG_LOW_LEVEL_HS_TONES_ADSL, pCommonConfig->sLowLevelHsTonesConfig.Adsl);
PARSE_SECTION_HEX(
CONFIG_LOWLEVELHSTONES_SECTION_PATH, "vdsl", pCommonConfig->sLowLevelHsTonesConfig.Vdsl);
CONFIG_LOWLEVELHSTONES_SECTION_PATH, DSL_CFG_LOW_LEVEL_HS_TONES_VDSL, pCommonConfig->sLowLevelHsTonesConfig.Vdsl);
if (bFound == DSL_FALSE)
{

View file

@ -38,16 +38,16 @@ typedef struct
typedef struct
{
/** Bitswap config for US in VDSL */
bool Us_Vdsl;
DSL_boolean_t Us_Vdsl;
/** Bitswap config for DS in VDSL */
bool Ds_Vdsl;
DSL_boolean_t Ds_Vdsl;
/** Bitswap config for US in ADSL */
bool Us_Adsl;
DSL_boolean_t Us_Adsl;
/** Bitswap config for DS in ADSL */
bool Ds_Adsl;
DSL_boolean_t Ds_Adsl;
} DSL_CFG_Bitswap_t;
typedef struct
@ -83,10 +83,10 @@ typedef struct
typedef struct
{
/** Virtual Noise config for US */
bool Us;
DSL_boolean_t Us;
/** Virtual Noise config for DS */
bool Ds;
DSL_boolean_t Ds;
} DSL_CFG_VirtualNoise_t;
typedef struct
@ -258,7 +258,7 @@ typedef struct
0: Use autonomous FW message handling (instead of polling)
1: Use polling mode only - DEFAULT
*/
bool FWMsgPollingOnly;
DSL_boolean_t FWMsgPollingOnly;
DSL_CFG_LowLevelHsTones_t sLowLevelHsTonesConfig;
} DSL_CFG_Common_t;
@ -314,8 +314,9 @@ typedef struct
\remark Should be called only once and at application startup.
\return Return values are defined within the \ref DSL_Error_t definition
- DSL_SUCCESS in case of success
- DSL_ERROR if operation failed
- DSL_SUCCESS in case of taken configuration from json file
- DSL_WRN_CONFIG_PARAM_IGNORED in case of taken default configuration
- DSL_ERROR if operation already performed
*/
DSL_Error_t DSL_CPE_ConfigInit();

File diff suppressed because it is too large Load diff

View file

@ -184,6 +184,14 @@ DSL_void_t DSL_CPE_ScriptRun(DSL_void_t);
#define _MKSTR(x) _MKSTR_1(x)
#endif
#define DSL_CPE_ARGS_EXTRACT_STRING_LEN 30
/* IPv4 string max len eg. "201.202.203.204" */
#define DSL_CPE_ARG_IP_V4_LEN 15
/* G997 XTU octet bits eg. "04_00_04_00_0C_01_00_07" */
#define DSL_CPE_ARG_G997_XTU_LEN 23
#define DSL_CPE_ARG_SYSTEM_FILE_PATH_LEN 99
#define DSL_CPE_LINE_IDENTIFIERS_NUM 3
#define DSL_CPE_LINE_IDENTIFIER_LEN 9
typedef unsigned int DSL_size_t;

View file

@ -77,6 +77,9 @@ static DSL_CmvGroupEntry_t DSL_CmvGroups[] =
{ "dsl", DSL_CMV_GROUP_DSL },
{ "", 0 }
};
static DSL_size_t DSL_CmvGroupNameLen = 4;
#endif /* #if defined (INCLUDE_DSL_CPE_API_DANUBE)*/
DSL_Error_t DSL_strlwr(DSL_char_t *psStr)
@ -146,7 +149,9 @@ DSL_Error_t DSL_CMV_Read (
DSL_strlwr(str_group);
for (;(pGroups->nGroupId != 0) && (strlen(pGroups->psGroupName) > 0); pGroups++)
for (;(pGroups->nGroupId != 0) &&
(cpe_control_strnlen_s(
pGroups->psGroupName, DSL_CmvGroupNameLen) > 0); pGroups++)
{
if (strcmp (str_group, pGroups->psGroupName) == 0)
{
@ -204,7 +209,9 @@ DSL_Error_t DSL_CMV_Write (
DSL_strlwr(str_group);
for (;(pGroups->nGroupId != 0) && (strlen(pGroups->psGroupName) > 0); pGroups++)
for (;(pGroups->nGroupId != 0) &&
(cpe_control_strnlen_s(
pGroups->psGroupName, DSL_CmvGroupNameLen) > 0); pGroups++)
{
if (strcmp (str_group, pGroups->psGroupName) == 0)
{
@ -622,12 +629,14 @@ DSL_Error_t DSL_CPE_TcpDebugMessageIntfStart (
{
DSL_CPE_Free(g_sTcpMessagesSocketAddr);
}
g_sTcpMessagesSocketAddr = DSL_CPE_Malloc(strlen (sTcpServerIp) + 1);
DSL_size_t nIpSize = cpe_control_strnlen_s(sTcpServerIp, DSL_CPE_ARG_IP_V4_LEN);
g_sTcpMessagesSocketAddr = DSL_CPE_Malloc(nIpSize + 1);
if (g_sTcpMessagesSocketAddr)
{
memset(g_sTcpMessagesSocketAddr, 0, strlen (sTcpServerIp) + 1);
cpe_control_strncpy_s(g_sTcpMessagesSocketAddr, strlen (sTcpServerIp) + 1,
sTcpServerIp, strlen (sTcpServerIp));
memset(g_sTcpMessagesSocketAddr, 0, nIpSize + 1);
cpe_control_strncpy_s(g_sTcpMessagesSocketAddr, nIpSize + 1,
sTcpServerIp, nIpSize);
}
}

View file

@ -360,12 +360,14 @@ DSL_int_t DSL_CPE_VRX_Reboot(
DSL_CPE_VRX_ResponseMessage(pCmvMsg);
if (strlen(g_sFirmwareName1) > 0)
if (cpe_control_strnlen_s(
g_sFirmwareName1, DSL_CPE_ARG_SYSTEM_FILE_PATH_LEN) > 0)
{
pcFw = g_sFirmwareName1;
}
if (strlen(g_sFirmwareName2) > 0)
if (cpe_control_strnlen_s(
g_sFirmwareName2, DSL_CPE_ARG_SYSTEM_FILE_PATH_LEN) > 0)
{
pcFw2 = g_sFirmwareName2;
}
@ -1461,7 +1463,7 @@ DSL_int_t DSL_CPE_DEV_DeviceOpen(DSL_char_t *pDevName, DSL_uint32_t dev_num)
return -1;
}
snprintf(text, sizeof(text), "%s/%d", pDevName, dev_num);
cpe_control_snprintf_s(text, sizeof(text), "%s/%d", pDevName, dev_num);
mei_fd = DSL_CPE_Open(text);
/*mei_fd = open(text, O_RDWR);*/

1147
src/dsl_cpe_interface.h Normal file

File diff suppressed because it is too large Load diff

View file

@ -36,6 +36,8 @@
#define SYS_NAME_PREFIX PRJ_NAME_PREFIX"/tmp"
#define SYS_PIPE_PREFIX SYS_NAME_PREFIX"/pipe"
/* length of "/tmp/pipe" */
#define DSL_CPE_SYS_PIPE_PREFIX_STR_LEN 9
#endif /* #ifndef INCLUDE_DSL_CPE_IFXOS_SUPPORT*/
@ -247,23 +249,24 @@ DSL_Error_t DSL_CPE_PipeCreate(DSL_char_t *pName)
/* Used to generate the pipe path */
DSL_char_t *pipepath = NULL;
DSL_Error_t ret = DSL_SUCCESS;
DSL_size_t nPipepathSize =
cpe_control_strnlen_s(SYS_PIPE_PREFIX"/", DSL_CPE_SYS_PIPE_PREFIX_STR_LEN + 1) +
cpe_control_strnlen_s(pName, DSL_CPE_PIPE_NAME_STR_LEN) + 1;
DSL_CCA_DEBUG(DSL_CCA_DBG_MSG, (DSL_CPE_PREFIX "create pipe %s" DSL_CPE_CRLF, pName));
pipepath = DSL_CPE_Malloc(strlen(SYS_PIPE_PREFIX"/") + strlen(pName) + 1);
pipepath = DSL_CPE_Malloc(nPipepathSize);
if ( !pipepath )
{
return DSL_ERR_MEMORY;
}
memset(pipepath, 0, strlen(SYS_PIPE_PREFIX"/") + strlen(pName) + 1);
cpe_control_strncpy_s(pipepath,
strlen(SYS_PIPE_PREFIX"/") + strlen(pName) + 1,
SYS_PIPE_PREFIX"/",
strlen(SYS_PIPE_PREFIX"/"));
memset(pipepath, 0, nPipepathSize);
cpe_control_strncpy_s(pipepath, nPipepathSize, SYS_PIPE_PREFIX"/",
cpe_control_strnlen_s(SYS_PIPE_PREFIX"/", DSL_CPE_SYS_PIPE_PREFIX_STR_LEN + 1));
/* try to create directory, ignore error designedly */
mkdir(pipepath, S_IFDIR | 0777);
strcat(pipepath, pName);
(void)cpe_control_pipe_strcat_s(pipepath, nPipepathSize, pName);
/*create a named pipe and check errors*/
if ((mkfifo(pipepath, 0777) == -1) && (errno != EEXIST))
@ -292,7 +295,7 @@ DSL_CPE_File_t *DSL_CPE_PipeOpen(DSL_char_t *pName, DSL_boolean_t reading, DSL_b
DSL_CCA_DEBUG(DSL_CCA_DBG_MSG, (DSL_CPE_PREFIX "open pipe %s" DSL_CPE_CRLF, pName));
DSL_CPE_snprintf(pipepath, sizeof(pipepath), SYS_PIPE_PREFIX"/%s", pName);
cpe_control_snprintf_s(pipepath, sizeof(pipepath), SYS_PIPE_PREFIX"/%s", pName);
/* only open allows the flag "O_NONBLOCK",
so first open a fd and change it to a DSL_CPE_File_t* with fdopen() */
if (reading == DSL_TRUE)
@ -780,8 +783,8 @@ DSL_int32_t DSL_CPE_ThreadInit(
memset(pThrCntrl, 0x00, sizeof(DSL_CPE_ThreadCtrl_t));
/* set thread function arguments */
cpe_control_strncpy_s(pThrCntrl->thrParams.pName,
DSL_CPE_THREAD_NAME_LEN, pName, strlen(pName));
cpe_control_strncpy_s(pThrCntrl->thrParams.pName, DSL_CPE_THREAD_NAME_LEN,
pName, cpe_control_strnlen_s(pName, DSL_CPE_THREAD_NAME_LEN));
pThrCntrl->thrParams.pName[DSL_CPE_THREAD_NAME_LEN-1] = 0;
pThrCntrl->nPriority = nPriority;
pThrCntrl->thrParams.nArg1 = nArg1;
@ -1297,8 +1300,11 @@ DSL_Error_t DSL_CPE_SetEnv(const DSL_char_t *sName, const DSL_char_t *sValue)
#else
DSL_Error_t nRet = DSL_SUCCESS;
DSL_CPE_EnvList_t *pEnvList = &g_EnvList, *pEnvListPrev = &g_EnvList;
const DSL_uint16_t namelen = strlen (sName);
const DSL_uint16_t vallen = sValue != DSL_NULL ? strlen (sValue) : 0;
const DSL_size_t nNameLenMax = 30;
const DSL_uint16_t namelen = cpe_control_strnlen_s (sName, nNameLenMax);
const DSL_uint16_t vallen =
sValue != DSL_NULL ?
cpe_control_strnlen_s (sValue, DSL_CPE_MAX_ENV_VAR_LENGTH) : 0;
DSL_CCA_DEBUG(DSL_CCA_DBG_MSG, (DSL_CPE_PREFIX
"SNH - Set %s to %s" DSL_CPE_CRLF, sName, sValue));
@ -1366,7 +1372,8 @@ DSL_Error_t DSL_CPE_SetEnv(const DSL_char_t *sName, const DSL_char_t *sValue)
}
}
snprintf(pEnvList->pEnvEntry, namelen + DSL_CPE_MAX_ENV_VAR_LENGTH + 2, "%s=%s", sName, sValue != DSL_NULL ? sValue : "");
cpe_control_snprintf_s(pEnvList->pEnvEntry, namelen + DSL_CPE_MAX_ENV_VAR_LENGTH + 2,
"%s=%s", sName, sValue != DSL_NULL ? sValue : "");
putenv(pEnvList->pEnvEntry);
#endif
@ -1483,7 +1490,7 @@ int DSL_CPE_debug_printf(DSL_char_t *fmt, ...)
/* add the debug string itself */
va_start(ap, fmt); /* set ap pointer to 1st unnamed arg */
nRet = vsnprintf(&debugString[0], DSL_DBG_MAX_DEBUG_PRINT_CHAR, fmt, ap);
nRet = cpe_control_vsnprintf_s(&debugString[0], DSL_DBG_MAX_DEBUG_PRINT_CHAR, fmt, ap);
va_end(ap);
if (DSL_CCA_g_dbgDestination == DSL_CCA_DBG_DST_CONSOLE)
@ -1518,7 +1525,7 @@ static void DSL_CPE_NlSendMsg(DSL_char_t* pMsg)
struct iovec iov;
nSockFd = socket(AF_NETLINK, SOCK_RAW, DSL_DBG_MSG_NETLINK_ID);
if(nSockFd == -1)
if(nSockFd == -1)
{
printf("could not open netlink socket");
DSL_CCA_DEBUG(DSL_CCA_DBG_MSG, (DSL_CPE_PREFIX
@ -1553,7 +1560,8 @@ static void DSL_CPE_NlSendMsg(DSL_char_t* pMsg)
pNlMsgHdr->nlmsg_flags = 1;
pNlMsgHdr->nlmsg_type = 0;
cpe_control_strncpy_s(NLMSG_DATA(pNlMsgHdr), NLMSG_SPACE(MAX_MSG_SIZE_BYTES), pMsg, strlen(pMsg));
cpe_control_strncpy_s(NLMSG_DATA(pNlMsgHdr), NLMSG_SPACE(MAX_MSG_SIZE_BYTES),
pMsg, cpe_control_strnlen_s(pMsg, MAX_MSG_SIZE_BYTES + 1));
iov.iov_base = (void*) pNlMsgHdr;
iov.iov_len = pNlMsgHdr->nlmsg_len;
@ -1609,6 +1617,8 @@ DSL_char_t* DSL_CPE_OwnAddrStringGet(DSL_void_t)
DSL_int_t nFd,nErrCode;
struct ifreq ifr;
DSL_char_t *pString = DSL_NULL;
const DSL_size_t nIPv4LenMax = 15;
char *pIP = DSL_NULL;
/* obtain ip-address automatically */
nFd = socket(AF_INET, SOCK_DGRAM, 0);
@ -1617,28 +1627,26 @@ DSL_char_t* DSL_CPE_OwnAddrStringGet(DSL_void_t)
memset(&ifr, 0x0, sizeof(struct ifreq));
ifr.ifr_addr.sa_family = AF_INET;
cpe_control_strncpy_s(ifr.ifr_name, IFNAMSIZ-1,
DSL_DEBUG_TOOL_INTERFACE_DEFAULT_IFACE, strlen(DSL_DEBUG_TOOL_INTERFACE_DEFAULT_IFACE));
cpe_control_strncpy_s(ifr.ifr_name, IFNAMSIZ-1,
DSL_DEBUG_TOOL_INTERFACE_DEFAULT_IFACE,
cpe_control_strnlen_s(DSL_DEBUG_TOOL_INTERFACE_DEFAULT_IFACE,
sizeof DSL_DEBUG_TOOL_INTERFACE_DEFAULT_IFACE));
nErrCode = DSL_CPE_Ioctl(nFd, SIOCGIFADDR, (DSL_int_t) &ifr);
close(nFd);
if (nErrCode == 0)
{
pString =
DSL_CPE_Malloc( strlen(inet_ntoa(
((struct sockaddr_in *)&ifr.ifr_addr)->sin_addr)) + 1);
pIP = inet_ntoa(((struct sockaddr_in *)&ifr.ifr_addr)->sin_addr);
pString = DSL_CPE_Malloc(cpe_control_strnlen_s(pIP, nIPv4LenMax) + 1);
}
}
if (pString != DSL_NULL)
{
memset(pString, 0,
strlen(inet_ntoa(((struct sockaddr_in *)&ifr.ifr_addr)->sin_addr)) + 1);
memset(pString, 0, cpe_control_strnlen_s(pIP, nIPv4LenMax) + 1);
cpe_control_strncpy_s(pString,
strlen(inet_ntoa(((struct sockaddr_in *)&ifr.ifr_addr)->sin_addr)) + 1,
inet_ntoa(((struct sockaddr_in *)&ifr.ifr_addr)->sin_addr),
strlen(inet_ntoa(((struct sockaddr_in *)&ifr.ifr_addr)->sin_addr)));
cpe_control_strncpy_s(pString, cpe_control_strnlen_s(pIP, nIPv4LenMax) + 1,
pIP, cpe_control_strnlen_s(pIP, nIPv4LenMax));
}
return pString;

View file

@ -58,7 +58,6 @@
#include <stdlib.h>
#include <getopt.h>
#include <stdio.h> /* fdopen */
#include <string.h> /* memset, strstr, strlen */
#include <stdlib.h> /* strtoul */
#include <sys/time.h> /* fd_set */
#include <ctype.h>
@ -181,6 +180,8 @@ DSL_int_t DSL_CPE_FPrintf(DSL_CPE_File_t *stream, const DSL_char_t *format, ...)
#endif
;
#define DSL_CPE_PIPE_NAME_STR_LEN 32
/*
***************** IFXOS dependent definitions **************************
*/

View file

@ -194,7 +194,7 @@ typedef IFX_ulong_t IFX_addr_t;
#define DSL_CPE_FGets IFXOS_FGets
/*#define DSL_CPE_FPrintf IFXOS_FPrintf*/
#define DSL_CPE_snprintf IFXOS_SNPrintf
#define DSL_vsnprintf IFXOS_VSNPrintf
#define DSL_CPE_vsnprintf IFXOS_VSNPrintf
/*
Function map - Memory Functions.

View file

@ -17,12 +17,35 @@
#define cpe_control_memcpy_s memcpy_s
#define cpe_control_memset_s memset_s
#define cpe_control_strncpy_s strncpy_s
#define cpe_control_strnlen_s strnlen_s
#define cpe_control_strtok_s strtok_s
#define cpe_control_strcat_s strcat_s
#define cpe_control_vsnprintf_s vsnprintf_s
/* snprintf_s symbol is not exported in SafeC lib */
static int cpe_control_snprintf_s(char *dest,
size_t dmax,
const char *fmt,
...)
{
va_list arg;
int retVal;
va_start(arg, fmt);
retVal = vsnprintf_s(dest, dmax, fmt, arg);
va_end(arg);
return retVal;
}
#else
#warning "Safe C library is not available!"
#include <stddef.h> /* size_t */
#include <stddef.h> /* size_t */
#include <stdarg.h> /* va_list */
#include "drv_dsl_cpe_api_error.h"
static __inline__ size_t safec_wrapper_min(size_t a, size_t b)
{
return a > b ? b : a;
@ -32,6 +55,149 @@ static __inline__ size_t safec_wrapper_min(size_t a, size_t b)
#define cpe_control_memset_s(dest, destsz, src, srcsz) memset(dest, src, safec_wrapper_min(destsz,srcsz))
#define cpe_control_strncpy_s(dest, destsz, src, srcsz) strncpy(dest, src, safec_wrapper_min(destsz,srcsz))
static size_t cpe_control_strnlen_s(const char *str,
size_t smax)
{
/* preconditions */
if ((str == NULL) ||
(smax == 0))
{
return 0;
}
/* main algorithm */
size_t size = 0;
for (const char *tmp = str; size < smax && *tmp != '\0'; ++size, ++tmp)
;
return size;
}
static char *cpe_control_strtok_s(char *dest,
size_t *dmax,
const char *delim,
char **ptr)
{
/* preconditions */
if ((delim == NULL) ||
(ptr == NULL) ||
(dmax == NULL) ||
(*dmax == 0))
{
return NULL;
}
if ((dest == NULL) &&
(*ptr == NULL))
{
return NULL;
}
/* special handling of function init call */
if (dest != NULL)
{
*ptr = dest;
}
/* checking declared string length */
if (cpe_control_strnlen_s(*ptr, (1 + *dmax)) >= *dmax)
{
return NULL;
}
/* main algorithm */
char *pTmp;
size_t nTmpSize = 0;
pTmp = strtok(*ptr, delim);
nTmpSize = cpe_control_strnlen_s(pTmp, *dmax);
/* "+1" constant size of found delimiter */
*dmax -= (nTmpSize+1);
/* move after found delimitier */
for (size_t i = 0; i <= nTmpSize; ++i, ++(*ptr))
;
return pTmp;
}
static int cpe_control_pipe_strcat_s(char *dest,
size_t destsz,
char *src)
{
/* preconditions */
if ((dest == NULL) ||
(src == NULL) ||
(destsz == 0))
{
return -1;
}
if ((dest < src) &&
(dest + destsz > src))
{
return -1;
}
const char* tmp = dest;
for (; tmp <= (dest + destsz) && *tmp != '\0'; ++tmp)
;
if (tmp >= (dest + destsz))
{
return -1;
}
/* main algorithm */
strcat(dest, src);
return 0;
}
static int cpe_control_snprintf_s(char *dest,
size_t dmax,
const char *fmt,
...)
{
/* preconditions */
if ((dest == NULL) ||
(fmt == NULL) ||
(dmax == 0))
{
return -1;
}
/* main algorithm */
va_list arg;
int retVal;
va_start(arg, fmt);
retVal = DSL_CPE_vsnprintf(dest, dmax, fmt, arg);
va_end(arg);
return retVal;
}
static int cpe_control_vsnprintf_s(char *dest,
size_t dmax,
const char *fmt,
va_list vlist)
{
/* preconditions */
if ((dest == NULL) ||
(fmt == NULL) ||
(dmax == 0))
{
return -1;
}
/* main algorithm */
return DSL_CPE_vsnprintf(dest, dmax, fmt, vlist);
}
#endif /* defined (SAFEC_SUPPORT) && (SAFEC_SUPPORT == 3) */
#endif /* _SAFEC_WRAPPER_H */

File diff suppressed because it is too large Load diff