DBG("[CISS-ENGINE] sia = %s, sib = %s, sic = %s", sia, sib, sic);
}
- strncpy(mmi_ctx->ss_code, ss_code, MAX_SC_LEN);
+ strncpy(mmi_ctx->ss_code, ss_code, MAX_SC_LEN + 1);
+ mmi_ctx->ss_code[MAX_SC_LEN] = '\0';
if ((ss_operation != registerPassword) &&
(ss_operation != NULL_SS_OPERATION)) {
if (!_ciss_convert_sc_to_tapi_flavor(ss_code, &tapi_flavor, &ss_type)) {
}
if (ss_operation != NULL_SS_OPERATION) {
- if ((ss_operation != registerPassword) &&
+ if ((ss_operation != registerPassword) &&
((ss_type == CISS_SERVICE_FORWARDING) ||
(ss_type == CISS_SERVICE_BARRING))) {
- strncpy(bsg, sib, MAX_SIB_LEN);
+ strncpy(bsg, sib, MAX_SIA_LEN + 1);
+ bsg[MAX_SIA_LEN] = '\0';
} else if (ss_type == CISS_SERVICE_WAITING) {
if ((sib[0] != 0) || (sic[0] != 0)) {
ss_operation = NULL_SS_OPERATION;
} else {
- strncpy(bsg, sia, MAX_SIA_LEN);
+ strncpy(bsg, sia, MAX_SIA_LEN + 1);
+ bsg[MAX_SIA_LEN] = '\0';
}
} else {
bsg[0] = '\0';
if (ss_operation != NULL_SS_OPERATION) {
if (ss_type == CISS_SERVICE_FORWARDING) {
if (sia[0] != '\0') {
- memset(mmi_ctx->forward_number, 0, CISS_NUMBER_LEN_MAX+1);
- strncpy(mmi_ctx->forward_number, sia, CISS_NUMBER_LEN_MAX);
+ memset(mmi_ctx->forward_number, 0, CISS_NUMBER_LEN_MAX + 1);
+ strncpy(mmi_ctx->forward_number, sia, CISS_NUMBER_LEN_MAX + 1);
+ mmi_ctx->forward_number[CISS_NUMBER_LEN_MAX] = '\0';
}
}
}
DBG("Enter");
ret_if(pSSResult == NULL);
ret_if(result_string == NULL);
- char mszBuffer[CISS_TEXT_LEN_MAX*5];
- char szBuffer[CISS_TEXT_LEN_MAX];
+ int ret;
+ char mszBuffer[CISS_TEXT_LEN_MAX * 5];
+ char szBuffer[CISS_TEXT_LEN_MAX + 16];
char service[CISS_TEXT_LEN_MAX];
char teleservice[CISS_TEXT_LEN_MAX];
char flavor[CISS_TEXT_LEN_MAX];
mszBuffer[CISS_TEXT_LEN_MAX - 1] = '\0';
if (strlen(teleservice)) {
- strncat(mszBuffer, "<br>", strlen("<br>"));
- strncat(mszBuffer, " -", strlen(" -"));
- strncat(mszBuffer, teleservice, strlen(teleservice));
+ strncat(mszBuffer, "<br>", sizeof(mszBuffer) - strlen(mszBuffer) - 1);
+ strncat(mszBuffer, " -", sizeof(mszBuffer) - strlen(mszBuffer) - 1);
+ strncat(mszBuffer, teleservice, sizeof(mszBuffer) - strlen(mszBuffer) - 1);
}
DBG("create_result_string: Label Text(telecommSvc) = %d\n", pSSResult->szBearer[index]);
if (pSSResult->szSsType == CISS_SERVICE_FORWARDING) {
if ((strcmp(flavor, CISS_STR_CALL_FORWARDING_ACTIVE_C_WHEN_NOREPLY) == 0) &&
(pSSResult->nForwardWaitingTime[index] != 0)) {
- snprintf(szBuffer, CISS_TEXT_LEN_MAX, "%s %02ds", flavor, pSSResult->nForwardWaitingTime[index]);
+ snprintf(szBuffer, sizeof(szBuffer), "%s %02ds", flavor, pSSResult->nForwardWaitingTime[index]);
} else {
strncpy(szBuffer, flavor, CISS_TEXT_LEN_MAX - 1);
szBuffer[CISS_TEXT_LEN_MAX - 1] = '\0';
}
if (strlen(flavor) > 1) {
- strncat(mszBuffer, "<br>", strlen("<br>"));
- strncat(mszBuffer, " -", strlen(" -"));
- strncat(mszBuffer, szBuffer, strlen(szBuffer));
+ strncat(mszBuffer, "<br>", sizeof(mszBuffer) - strlen(mszBuffer) - 1);
+ strncat(mszBuffer, " -", sizeof(mszBuffer) - strlen(mszBuffer) - 1);
+ strncat(mszBuffer, szBuffer, sizeof(mszBuffer) - strlen(mszBuffer) - 1);
}
DBG("\n [CISS-MMI] create_result_string: Label Text(flavor) = %s\n", flavor);
- strncat(mszBuffer, "<br>", strlen("<br>"));
- strncat(mszBuffer, " -", strlen(" -"));
- strncat(mszBuffer, status, strlen(status));
+ strncat(mszBuffer, "<br>", sizeof(mszBuffer) - strlen(mszBuffer) - 1);
+ strncat(mszBuffer, " -", sizeof(mszBuffer) - strlen(mszBuffer) - 1);
+ strncat(mszBuffer, status, sizeof(mszBuffer) - strlen(mszBuffer) - 1);
if (strlen(pSSResult->szForwardedToNumber[index]) &&
(strcmp(status, CISS_STR_ACTIVATED) == 0)) {
DBG("\n [CISS-MMI] create_result_string: Forwarded to number = %s\n",
pSSResult->szForwardedToNumber[index]);
- strncat(mszBuffer, "<br>", strlen("<br>"));
- strncat(mszBuffer, " ", strlen(" "));
- strncat(mszBuffer, pSSResult->szForwardedToNumber[index], strlen(pSSResult->szForwardedToNumber[index]));
+ strncat(mszBuffer, "<br>", sizeof(mszBuffer) - strlen(mszBuffer) - 1);
+ strncat(mszBuffer, " ", sizeof(mszBuffer) - strlen(mszBuffer) -1);
+ strncat(mszBuffer, pSSResult->szForwardedToNumber[index], sizeof(mszBuffer) - strlen(mszBuffer) - 1);
} else {
DBG("\n [CISS-MMI] create_result_string: Forwarded to number is not need");
}
} else if (pSSResult->szSsType == CISS_SERVICE_BARRING) {
if (strlen(flavor) > 1) {
- strncat(mszBuffer, "<br>", strlen("<br>"));
- strncat(mszBuffer, " -", strlen(" -"));
- strncat(mszBuffer, flavor, strlen(flavor));
+ strncat(mszBuffer, "<br>", sizeof(mszBuffer) - strlen(mszBuffer) - 1);
+ strncat(mszBuffer, " -", sizeof(mszBuffer) - strlen(mszBuffer) - 1);
+ strncat(mszBuffer, flavor, sizeof(mszBuffer) - strlen(mszBuffer) - 1);
}
- strncat(mszBuffer, "<br>", strlen("<br>"));
- strncat(mszBuffer, " -", strlen(" -"));
- strncat(mszBuffer, status, strlen(status));
+ strncat(mszBuffer, "<br>", sizeof(mszBuffer) - strlen(mszBuffer) - 1);
+ strncat(mszBuffer, " -", sizeof(mszBuffer) - strlen(mszBuffer) - 1);
+ strncat(mszBuffer, status, sizeof(mszBuffer) - strlen(mszBuffer) - 1);
} else if (pSSResult->szSsType == CISS_SERVICE_WAITING) {
- strncat(mszBuffer, "<br>", strlen("<br>"));
- strncat(mszBuffer, " -", strlen("< ->"));
- strncat(mszBuffer, status, strlen(status));
+ strncat(mszBuffer, "<br>", sizeof(mszBuffer) - strlen(mszBuffer) - 1);
+ strncat(mszBuffer, " -", sizeof(mszBuffer) - strlen(mszBuffer) - 1);
+ strncat(mszBuffer, status, sizeof(mszBuffer) - strlen(mszBuffer) - 1);
}
- strncpy(result_string, mszBuffer, sizeof(mszBuffer) - 1);
+ ret = snprintf(result_string, CISS_USSD_DATA_SIZE_MAX, "%s", mszBuffer);
+ if (ret >= CISS_USSD_DATA_SIZE_MAX)
+ WARN("result_string is truncated");
DBG("Result String:%s\n", result_string);
DBG("Leave");
__ciss_ui_mmi_create_cnap_result_string(ciss_result, resultstring[0], ad);
} else if (ciss_result->nRecordNum == 0) {
DBG("\n [CISS-MMI] result.nRecordNum == 0 \n");
- strncpy(resultstring[0], CISS_STR_SUCCESS, CISS_TEXT_LEN_MAX - 1);
- strncat(ss_result_string, "<br> ", strlen("<br> "));
- strncat(ss_result_string, resultstring[0], CISS_USSD_DATA_SIZE_MAX);
- strncat(ss_result_string, "<br> ", strlen("<br> "));
+ strncpy(resultstring[0], CISS_STR_SUCCESS, CISS_TEXT_LEN_MAX);
+ resultstring[0][CISS_TEXT_LEN_MAX - 1] = '\0';
+ strncat(ss_result_string, "<br> ", CISS_MMI_MAX_SS_RESP_STRING - strlen(ss_result_string) - 1);
+ strncat(ss_result_string, resultstring[0], CISS_MMI_MAX_SS_RESP_STRING - strlen(ss_result_string) - 1);
+ strncat(ss_result_string, "<br> ", CISS_MMI_MAX_SS_RESP_STRING - strlen(ss_result_string) - 1);
} else {
int g_count = 0;
for (g_count = 0; g_count < ciss_result->nRecordNum; g_count++) {
}
for (count = 0; count < ciss_result->nRecordNum; count++) {
- strncat(ss_result_string, "<br> ", strlen("<br> "));
- strncat(ss_result_string, resultstring[count], CISS_USSD_DATA_SIZE_MAX);
- strncat(ss_result_string, "<br> ", strlen("<br> "));
+ strncat(ss_result_string, "<br> ", CISS_MMI_MAX_SS_RESP_STRING - strlen(ss_result_string) - 1);
+ strncat(ss_result_string, resultstring[count], CISS_MMI_MAX_SS_RESP_STRING - strlen(ss_result_string) - 1);
+ strncat(ss_result_string, "<br> ", CISS_MMI_MAX_SS_RESP_STRING - strlen(ss_result_string) - 1);
}
DBG("Final Result string : %s ", ss_result_string);
DBG("Leave");