Merge "qcom: softap: Fix potential string null termination and buffer overflow"
This commit is contained in:
committed by
Gerrit - the friendly Code Review server
commit
fc7138812d
0
softap/sdk/qsap.c
Executable file → Normal file
0
softap/sdk/qsap.c
Executable file → Normal file
311
softap/sdk/qsap_api.c
Executable file → Normal file
311
softap/sdk/qsap_api.c
Executable file → Normal file
@@ -186,6 +186,19 @@ char *pconffile = CONFIG_FILE;
|
|||||||
char *fIni = WIFI_DRIVER_CONF_FILE;
|
char *fIni = WIFI_DRIVER_CONF_FILE;
|
||||||
s8 ini_file[PROPERTY_VALUE_MAX] = {0};
|
s8 ini_file[PROPERTY_VALUE_MAX] = {0};
|
||||||
|
|
||||||
|
static int qsap_scnprintf(char *str, size_t size, const char *format, ...)
|
||||||
|
{
|
||||||
|
va_list arg_ptr;
|
||||||
|
int ret = 0;
|
||||||
|
|
||||||
|
if (size < 1)
|
||||||
|
return 0;
|
||||||
|
va_start(arg_ptr, format);
|
||||||
|
ret = vsnprintf(str, size, format, arg_ptr);
|
||||||
|
va_end(arg_ptr);
|
||||||
|
return (ret < (int)size) ? ret : (int)(size - 1);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief
|
* @brief
|
||||||
* For a give configuration parameter, read the configuration value from the file.
|
* For a give configuration parameter, read the configuration value from the file.
|
||||||
@@ -210,7 +223,7 @@ static s32 qsap_read_cfg(s8 *pfile, struct Command * pcmd, s8 *presp, u32 *plen,
|
|||||||
|
|
||||||
if(NULL == fcfg) {
|
if(NULL == fcfg) {
|
||||||
ALOGE("%s : unable to open file \n", __func__);
|
ALOGE("%s : unable to open file \n", __func__);
|
||||||
*plen = snprintf(presp, *plen, "%s", ERR_RES_UNAVAILABLE);
|
*plen = qsap_scnprintf(presp, *plen, "%s", ERR_RES_UNAVAILABLE);
|
||||||
return eERR_FILE_OPEN;
|
return eERR_FILE_OPEN;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -223,7 +236,7 @@ static s32 qsap_read_cfg(s8 *pfile, struct Command * pcmd, s8 *presp, u32 *plen,
|
|||||||
if(buf[0] == '#') {
|
if(buf[0] == '#') {
|
||||||
if (ignore_comment) {
|
if (ignore_comment) {
|
||||||
pline++;
|
pline++;
|
||||||
}
|
}
|
||||||
else continue;
|
else continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -241,10 +254,10 @@ static s32 qsap_read_cfg(s8 *pfile, struct Command * pcmd, s8 *presp, u32 *plen,
|
|||||||
val = strchr(pline, '=');
|
val = strchr(pline, '=');
|
||||||
if(NULL == val)
|
if(NULL == val)
|
||||||
break;
|
break;
|
||||||
*plen = snprintf(presp, *plen, "%s %s%s", SUCCESS, var, val);
|
*plen = qsap_scnprintf(presp, *plen, "%s %s%s", SUCCESS, var, val);
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
*plen = snprintf(presp, *plen, "%s %s", SUCCESS, pline);
|
*plen = qsap_scnprintf(presp, *plen, "%s %s", SUCCESS, pline);
|
||||||
}
|
}
|
||||||
fclose(fcfg);
|
fclose(fcfg);
|
||||||
return eSUCCESS;
|
return eSUCCESS;
|
||||||
@@ -253,18 +266,18 @@ static s32 qsap_read_cfg(s8 *pfile, struct Command * pcmd, s8 *presp, u32 *plen,
|
|||||||
|
|
||||||
#if 0
|
#if 0
|
||||||
/** Configuration parameter is absent in the file */
|
/** Configuration parameter is absent in the file */
|
||||||
*plen = snprintf(presp, *plen, "%s", ERR_FEATURE_NOT_ENABLED);
|
*plen = qsap_scnprintf(presp, *plen, "%s", ERR_FEATURE_NOT_ENABLED);
|
||||||
#else
|
#else
|
||||||
/** Value not found in the configuration file */
|
/** Value not found in the configuration file */
|
||||||
/** Send the default value, if we are reading from ini file */
|
/** Send the default value, if we are reading from ini file */
|
||||||
if ( pcmd->default_value ) {
|
if ( pcmd->default_value ) {
|
||||||
*plen = snprintf(presp, *plen, "%s %s=%s", SUCCESS, var?var:pcmd->name, pcmd->default_value);
|
*plen = qsap_scnprintf(presp, *plen, "%s %s=%s", SUCCESS, var?var:pcmd->name, pcmd->default_value);
|
||||||
fclose(fcfg);
|
fclose(fcfg);
|
||||||
return eSUCCESS;
|
return eSUCCESS;
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
/** Configuration parameter is absent in the file */
|
/** Configuration parameter is absent in the file */
|
||||||
*plen = snprintf(presp, *plen, "%s", ERR_FEATURE_NOT_ENABLED);
|
*plen = qsap_scnprintf(presp, *plen, "%s", ERR_FEATURE_NOT_ENABLED);
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
@@ -297,19 +310,17 @@ static s32 qsap_write_cfg(s8 *pfile, struct Command * pcmd, s8 *pVal, s8 *presp,
|
|||||||
fcfg = fopen(pfile, "r");
|
fcfg = fopen(pfile, "r");
|
||||||
if(NULL == fcfg) {
|
if(NULL == fcfg) {
|
||||||
ALOGE("%s : unable to open file \n", __func__);
|
ALOGE("%s : unable to open file \n", __func__);
|
||||||
*plen = snprintf(presp, *plen, "%s", ERR_RES_UNAVAILABLE);
|
*plen = qsap_scnprintf(presp, *plen, "%s", ERR_RES_UNAVAILABLE);
|
||||||
return eERR_FILE_OPEN;
|
return eERR_FILE_OPEN;
|
||||||
}
|
}
|
||||||
|
|
||||||
if(MAX_CONF_LINE_LEN == snprintf(buf, MAX_CONF_LINE_LEN, "%s~", pfile)) {
|
qsap_scnprintf(buf, sizeof(buf), "%s~", pfile);
|
||||||
buf[MAX_CONF_LINE_LEN] = '\0';
|
|
||||||
}
|
|
||||||
|
|
||||||
/** Open a temporary file */
|
/** Open a temporary file */
|
||||||
ftmp = fopen(buf, "w+");
|
ftmp = fopen(buf, "w+");
|
||||||
if(NULL == ftmp) {
|
if(NULL == ftmp) {
|
||||||
ALOGE("%s : unable to open tmp file \n", __func__);
|
ALOGE("%s : unable to open tmp file \n", __func__);
|
||||||
*plen = snprintf(presp, *plen, "%s", ERR_RES_UNAVAILABLE);
|
*plen = qsap_scnprintf(presp, *plen, "%s", ERR_RES_UNAVAILABLE);
|
||||||
fclose(fcfg);
|
fclose(fcfg);
|
||||||
return eERR_FILE_OPEN;
|
return eERR_FILE_OPEN;
|
||||||
}
|
}
|
||||||
@@ -326,7 +337,7 @@ static s32 qsap_write_cfg(s8 *pfile, struct Command * pcmd, s8 *pVal, s8 *presp,
|
|||||||
/** Identify the configuration parameter to be updated */
|
/** Identify the configuration parameter to be updated */
|
||||||
if((!strncmp(pline, pcmd->name, len)) && (result == FALSE)) {
|
if((!strncmp(pline, pcmd->name, len)) && (result == FALSE)) {
|
||||||
if(pline[len] == '=') {
|
if(pline[len] == '=') {
|
||||||
snprintf(buf, MAX_CONF_LINE_LEN, "%s=%s\n", pcmd->name, pVal);
|
qsap_scnprintf(buf, sizeof(buf), "%s=%s\n", pcmd->name, pVal);
|
||||||
result = TRUE;
|
result = TRUE;
|
||||||
ALOGD("Updated:%s\n", buf);
|
ALOGD("Updated:%s\n", buf);
|
||||||
}
|
}
|
||||||
@@ -341,7 +352,7 @@ static s32 qsap_write_cfg(s8 *pfile, struct Command * pcmd, s8 *pVal, s8 *presp,
|
|||||||
if (result == FALSE) {
|
if (result == FALSE) {
|
||||||
/* Configuration line not found */
|
/* Configuration line not found */
|
||||||
/* Add the new line at the end of file */
|
/* Add the new line at the end of file */
|
||||||
snprintf(buf, MAX_CONF_LINE_LEN, "%s=%s\n", pcmd->name, pVal);
|
qsap_scnprintf(buf, sizeof(buf), "%s=%s\n", pcmd->name, pVal);
|
||||||
fprintf(ftmp, "%s", buf);
|
fprintf(ftmp, "%s", buf);
|
||||||
ALOGD("Adding a new line in %s file: [%s] \n", inifile ? "inifile" : "hostapd.conf", buf);
|
ALOGD("Adding a new line in %s file: [%s] \n", inifile ? "inifile" : "hostapd.conf", buf);
|
||||||
}
|
}
|
||||||
@@ -356,14 +367,12 @@ static s32 qsap_write_cfg(s8 *pfile, struct Command * pcmd, s8 *pVal, s8 *presp,
|
|||||||
fclose(fcfg);
|
fclose(fcfg);
|
||||||
fclose(ftmp);
|
fclose(ftmp);
|
||||||
|
|
||||||
if(MAX_CONF_LINE_LEN == snprintf(buf, MAX_CONF_LINE_LEN, "%s~", pfile)) {
|
qsap_scnprintf(buf, sizeof(buf), "%s~", pfile);
|
||||||
buf[MAX_CONF_LINE_LEN] = '\0';
|
|
||||||
}
|
|
||||||
|
|
||||||
/** Restore the updated configuration file */
|
/** Restore the updated configuration file */
|
||||||
result = rename(buf, pfile);
|
result = rename(buf, pfile);
|
||||||
|
|
||||||
*plen = snprintf(presp, *plen, "%s", (result == eERR_UNKNOWN) ? ERR_FEATURE_NOT_ENABLED : SUCCESS);
|
*plen = qsap_scnprintf(presp, *plen, "%s", (result == eERR_UNKNOWN) ? ERR_FEATURE_NOT_ENABLED : SUCCESS);
|
||||||
|
|
||||||
/** Remove the temporary file. Dont care the return value */
|
/** Remove the temporary file. Dont care the return value */
|
||||||
unlink(buf);
|
unlink(buf);
|
||||||
@@ -436,16 +445,16 @@ static sec_mode_t qsap_read_security_mode(s8 *pfile, s8 *presp, u32 *plen)
|
|||||||
mode = SEC_MODE_WEP;
|
mode = SEC_MODE_WEP;
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
*plen = snprintf(presp, *plen, "%s", ERR_UNKNOWN);
|
*plen = qsap_scnprintf(presp, temp, "%s", ERR_UNKNOWN);
|
||||||
return SEC_MODE_INVALID;
|
return SEC_MODE_INVALID;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if(mode != SEC_MODE_INVALID) {
|
if(mode != SEC_MODE_INVALID) {
|
||||||
*plen = snprintf(presp, temp,"%s %s=%d", SUCCESS, cmd_list[eCMD_SEC_MODE].name, mode);
|
*plen = qsap_scnprintf(presp, temp,"%s %s=%d", SUCCESS, cmd_list[eCMD_SEC_MODE].name, mode);
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
*plen = snprintf(presp, temp,"%s", ERR_NOT_SUPPORTED);
|
*plen = qsap_scnprintf(presp, temp,"%s", ERR_NOT_SUPPORTED);
|
||||||
}
|
}
|
||||||
|
|
||||||
return mode;
|
return mode;
|
||||||
@@ -473,9 +482,7 @@ static s32 qsap_change_cfg(s8 *pfile, struct Command * pcmd, u32 status)
|
|||||||
return eERR_UNKNOWN;
|
return eERR_UNKNOWN;
|
||||||
}
|
}
|
||||||
|
|
||||||
if(MAX_CONF_LINE_LEN == snprintf(buf, MAX_CONF_LINE_LEN, "%s~", pfile)) {
|
qsap_scnprintf(buf, sizeof(buf), "%s~", pfile);
|
||||||
buf[MAX_CONF_LINE_LEN] = '\0';
|
|
||||||
}
|
|
||||||
|
|
||||||
/** Open a temporary file */
|
/** Open a temporary file */
|
||||||
ftmp = fopen(buf, "w");
|
ftmp = fopen(buf, "w");
|
||||||
@@ -512,9 +519,7 @@ static s32 qsap_change_cfg(s8 *pfile, struct Command * pcmd, u32 status)
|
|||||||
fclose(fcfg);
|
fclose(fcfg);
|
||||||
fclose(ftmp);
|
fclose(ftmp);
|
||||||
|
|
||||||
if(MAX_CONF_LINE_LEN == snprintf(buf, MAX_CONF_LINE_LEN, "%s~", pfile)) {
|
qsap_scnprintf(buf, sizeof(buf), "%s~", pfile);
|
||||||
buf[MAX_CONF_LINE_LEN] = '\0';
|
|
||||||
}
|
|
||||||
|
|
||||||
/** Restore the new configuration file */
|
/** Restore the new configuration file */
|
||||||
if(eERR_UNKNOWN == rename(buf, pfile)) {
|
if(eERR_UNKNOWN == rename(buf, pfile)) {
|
||||||
@@ -573,7 +578,7 @@ static void qsap_set_security_mode(s8 *pfile, u32 sec_mode, s8 *presp, u32 *plen
|
|||||||
|
|
||||||
/** Is valid security mode ? */
|
/** Is valid security mode ? */
|
||||||
if(sec_mode >= SEC_MODE_INVALID) {
|
if(sec_mode >= SEC_MODE_INVALID) {
|
||||||
*plen = snprintf(presp, *plen, "%s", ERR_UNKNOWN);
|
*plen = qsap_scnprintf(presp, *plen, "%s", ERR_UNKNOWN);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -608,7 +613,7 @@ static void qsap_set_security_mode(s8 *pfile, u32 sec_mode, s8 *presp, u32 *plen
|
|||||||
rsn_status = ENABLE;
|
rsn_status = ENABLE;
|
||||||
}
|
}
|
||||||
|
|
||||||
snprintf(sec, MAX_INT_STR, "%u", wpa_val);
|
qsap_scnprintf(sec, sizeof(sec), "%u", wpa_val);
|
||||||
qsap_write_cfg(pfile, &qsap_str[STR_WPA], sec, presp, plen, HOSTAPD_CONF_QCOM_FILE);
|
qsap_write_cfg(pfile, &qsap_str[STR_WPA], sec, presp, plen, HOSTAPD_CONF_QCOM_FILE);
|
||||||
*plen = tmp;
|
*plen = tmp;
|
||||||
}
|
}
|
||||||
@@ -671,7 +676,7 @@ static void qsap_set_security_mode(s8 *pfile, u32 sec_mode, s8 *presp, u32 *plen
|
|||||||
ret = eSUCCESS;
|
ret = eSUCCESS;
|
||||||
|
|
||||||
end:
|
end:
|
||||||
*plen = snprintf(presp, *plen, "%s", (ret == eSUCCESS) ? SUCCESS : ERR_UNKNOWN);
|
*plen = qsap_scnprintf(presp, *plen, "%s", (ret == eSUCCESS) ? SUCCESS : ERR_UNKNOWN);
|
||||||
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@@ -759,7 +764,7 @@ static void qsap_add_mac_to_file(s8 *pfile, s8 *pVal, s8 *presp, u32 *plen)
|
|||||||
|
|
||||||
if(NULL == fp) {
|
if(NULL == fp) {
|
||||||
ALOGE("%s : unable to open the file \n", __func__);
|
ALOGE("%s : unable to open the file \n", __func__);
|
||||||
*plen = snprintf(presp, *plen, "%s", ERR_RES_UNAVAILABLE);
|
*plen = qsap_scnprintf(presp, *plen, "%s", ERR_RES_UNAVAILABLE);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -771,7 +776,7 @@ static void qsap_add_mac_to_file(s8 *pfile, s8 *pVal, s8 *presp, u32 *plen)
|
|||||||
/** Evaluate the allowed limit */
|
/** Evaluate the allowed limit */
|
||||||
if(num_macs >= MAX_ALLOWED_MAC) {
|
if(num_macs >= MAX_ALLOWED_MAC) {
|
||||||
ALOGE("%s : File is full\n", __func__);
|
ALOGE("%s : File is full\n", __func__);
|
||||||
*plen = snprintf(presp, *plen, "%s", ERR_UNKNOWN);
|
*plen = qsap_scnprintf(presp, *plen, "%s", ERR_UNKNOWN);
|
||||||
fclose(fp);
|
fclose(fp);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@@ -814,7 +819,7 @@ static void qsap_add_mac_to_file(s8 *pfile, s8 *pVal, s8 *presp, u32 *plen)
|
|||||||
|
|
||||||
fclose(fp);
|
fclose(fp);
|
||||||
|
|
||||||
*plen = snprintf(presp, *plen, "%s", SUCCESS);
|
*plen = qsap_scnprintf(presp, *plen, "%s", SUCCESS);
|
||||||
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@@ -842,20 +847,18 @@ static void qsap_remove_from_file(s8 *pfile, s8 *pVal, s8 *presp, u32 *plen)
|
|||||||
|
|
||||||
if(NULL == fp) {
|
if(NULL == fp) {
|
||||||
ALOGE("%s : unable to open the file \n", __func__);
|
ALOGE("%s : unable to open the file \n", __func__);
|
||||||
*plen = snprintf(presp, *plen, "%s", ERR_RES_UNAVAILABLE);
|
*plen = qsap_scnprintf(presp, *plen, "%s", ERR_RES_UNAVAILABLE);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if(MAX_CONF_LINE_LEN == snprintf(buf, MAX_CONF_LINE_LEN, "%s~", pfile)) {
|
qsap_scnprintf(buf, sizeof(buf), "%s~", pfile);
|
||||||
buf[MAX_CONF_LINE_LEN-1] = '\0';
|
|
||||||
}
|
|
||||||
|
|
||||||
/** Open a temporary file */
|
/** Open a temporary file */
|
||||||
ftmp = fopen(buf, "w");
|
ftmp = fopen(buf, "w");
|
||||||
|
|
||||||
if(ftmp == NULL) {
|
if(ftmp == NULL) {
|
||||||
ALOGE("%s : unable to open the file \n", __func__);
|
ALOGE("%s : unable to open the file \n", __func__);
|
||||||
*plen = snprintf(presp, *plen, "%s", ERR_RES_UNAVAILABLE);
|
*plen = qsap_scnprintf(presp, *plen, "%s", ERR_RES_UNAVAILABLE);
|
||||||
fclose(fp);
|
fclose(fp);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@@ -898,14 +901,12 @@ static void qsap_remove_from_file(s8 *pfile, s8 *pVal, s8 *presp, u32 *plen)
|
|||||||
fclose(fp);
|
fclose(fp);
|
||||||
fclose(ftmp);
|
fclose(ftmp);
|
||||||
|
|
||||||
if(MAX_CONF_LINE_LEN == snprintf(buf, MAX_CONF_LINE_LEN, "%s~", pfile)) {
|
qsap_scnprintf(buf, sizeof(buf), "%s~", pfile);
|
||||||
buf[MAX_CONF_LINE_LEN-1] = '\0';
|
|
||||||
}
|
|
||||||
|
|
||||||
/** Restore the configuration file */
|
/** Restore the configuration file */
|
||||||
status = rename(buf, pfile);
|
status = rename(buf, pfile);
|
||||||
|
|
||||||
snprintf(presp, *plen, "%s", (status == eERR_UNKNOWN) ? ERR_FEATURE_NOT_ENABLED : SUCCESS);
|
qsap_scnprintf(presp, *plen, "%s", (status == eERR_UNKNOWN) ? ERR_FEATURE_NOT_ENABLED : SUCCESS);
|
||||||
|
|
||||||
unlink(buf);
|
unlink(buf);
|
||||||
|
|
||||||
@@ -945,7 +946,7 @@ static void qsap_update_mac_list(s8 *pfile, esap_cmd_t cNum, s8 *pVal, s8 *presp
|
|||||||
break;
|
break;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
*plen = snprintf(presp, *plen, "%s", ERR_UNKNOWN);
|
*plen = qsap_scnprintf(presp, *plen, "%s", ERR_UNKNOWN);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -986,7 +987,7 @@ static void qsap_get_mac_list(s8 *fconfile, esap_cmd_t cNum, s8 *presp, u32 *ple
|
|||||||
sNum = STR_DENY_MAC_FILE;
|
sNum = STR_DENY_MAC_FILE;
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
*plen = snprintf(presp, *plen, "%s", ERR_UNKNOWN);
|
*plen = qsap_scnprintf(presp, *plen, "%s", ERR_UNKNOWN);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -994,7 +995,7 @@ static void qsap_get_mac_list(s8 *fconfile, esap_cmd_t cNum, s8 *presp, u32 *ple
|
|||||||
len_remain = MAX_CONF_LINE_LEN;
|
len_remain = MAX_CONF_LINE_LEN;
|
||||||
if(NULL == (pfile = qsap_get_allow_deny_file_name(fconfile, &qsap_str[sNum], buf, &len_remain))) {
|
if(NULL == (pfile = qsap_get_allow_deny_file_name(fconfile, &qsap_str[sNum], buf, &len_remain))) {
|
||||||
ALOGE("%s:Unknown error\n", __func__);
|
ALOGE("%s:Unknown error\n", __func__);
|
||||||
*plen = snprintf(presp, *plen, "%s", ERR_RES_UNAVAILABLE);
|
*plen = qsap_scnprintf(presp, *plen, "%s", ERR_RES_UNAVAILABLE);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1002,16 +1003,11 @@ static void qsap_get_mac_list(s8 *fconfile, esap_cmd_t cNum, s8 *presp, u32 *ple
|
|||||||
fp = fopen(pfile, "r");
|
fp = fopen(pfile, "r");
|
||||||
if(NULL == fp) {
|
if(NULL == fp) {
|
||||||
ALOGE("%s: file open error\n",__func__);
|
ALOGE("%s: file open error\n",__func__);
|
||||||
*plen = snprintf(presp, *plen, "%s", ERR_RES_UNAVAILABLE);
|
*plen = qsap_scnprintf(presp, *plen, "%s", ERR_RES_UNAVAILABLE);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Keep the NULL at the end of the buffer */
|
*plen -= qsap_scnprintf(presp, *plen, "%s %s=", SUCCESS, cmd_list[cNum].name);
|
||||||
presp[*plen-1] = '\0';
|
|
||||||
*plen -= snprintf(presp, *plen, "%s %s=", SUCCESS, cmd_list[cNum].name);
|
|
||||||
|
|
||||||
/* Reserving the space for last null character in case of over flow */
|
|
||||||
(u32)(*plen)--;
|
|
||||||
|
|
||||||
pOut = presp + strlen(presp);
|
pOut = presp + strlen(presp);
|
||||||
|
|
||||||
@@ -1033,7 +1029,7 @@ static void qsap_get_mac_list(s8 *fconfile, esap_cmd_t cNum, s8 *presp, u32 *ple
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
len = snprintf(pOut, *plen, "%s ", buf);
|
len = qsap_scnprintf(pOut, *plen, "%s ", buf);
|
||||||
cnt++;
|
cnt++;
|
||||||
|
|
||||||
if (cnt >= MAX_ALLOWED_MAC) {
|
if (cnt >= MAX_ALLOWED_MAC) {
|
||||||
@@ -1070,15 +1066,17 @@ static int qsap_read_mac_address(s8 *presp, u32 *plen)
|
|||||||
goto end;
|
goto end;
|
||||||
|
|
||||||
strncpy(mac, ptr+1, MAC_ADDR_LEN);
|
strncpy(mac, ptr+1, MAC_ADDR_LEN);
|
||||||
*plen = snprintf(presp, len, "%s %s=", SUCCESS, cmd_list[eCMD_MAC_ADDR].name);
|
*plen = qsap_scnprintf(presp, len, "%s %s=", SUCCESS, cmd_list[eCMD_MAC_ADDR].name);
|
||||||
ptr = presp + strlen(presp);
|
ptr = presp + strlen(presp);
|
||||||
|
len -= strlen(presp); /* decrease the total available buf length */
|
||||||
|
|
||||||
for(i=0; i<MAC_ADDR_LEN-5; i+=2) {
|
for(i=0; i<MAC_ADDR_LEN-5; i+=2) {
|
||||||
u32 tlen;
|
u32 tlen;
|
||||||
|
|
||||||
tlen = snprintf(ptr, len, "%c%c:", mac[i], mac[i+1]);
|
tlen = qsap_scnprintf(ptr, len, "%c%c:", mac[i], mac[i+1]);
|
||||||
*plen += tlen;
|
*plen += tlen;
|
||||||
ptr += tlen;
|
ptr += tlen;
|
||||||
|
len -= tlen; /* decrease the available len of ptr */
|
||||||
}
|
}
|
||||||
presp[*plen-1] = '\0';
|
presp[*plen-1] = '\0';
|
||||||
(*plen)--;
|
(*plen)--;
|
||||||
@@ -1132,7 +1130,7 @@ static void qsap_read_wps_state(s8 *presp, u32 *plen)
|
|||||||
status = (atoi(pstate) == WPS_STATE_ENABLE) ? ENABLE : DISABLE;
|
status = (atoi(pstate) == WPS_STATE_ENABLE) ? ENABLE : DISABLE;
|
||||||
}
|
}
|
||||||
|
|
||||||
*plen = snprintf(presp, *plen, "success %s=%ld", cmd_list[eCMD_WPS_STATE].name, status);
|
*plen = qsap_scnprintf(presp, *plen, "success %s=%ld", cmd_list[eCMD_WPS_STATE].name, status);
|
||||||
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@@ -1297,13 +1295,13 @@ int qsap_get_mode(s32 *pmode)
|
|||||||
}
|
}
|
||||||
|
|
||||||
*pmode = *(s32 *)(&wrq.u.mode);
|
*pmode = *(s32 *)(&wrq.u.mode);
|
||||||
ALOGE("%s: ioctl Get Mode = %d \n",__func__, *pmode);
|
ALOGE("%s: ioctl Get Mode = %d \n",__func__, (int)*pmode);
|
||||||
close(sock);
|
close(sock);
|
||||||
return eSUCCESS;
|
return eSUCCESS;
|
||||||
|
|
||||||
error:
|
error:
|
||||||
*pmode = -1;
|
*pmode = -1;
|
||||||
ALOGE("%s: (Failure) ioctl Get Mode = %d \n",__func__, *pmode);
|
ALOGE("%s: (Failure) ioctl Get Mode = %d \n",__func__, (int)*pmode);
|
||||||
return eERR_UNKNOWN;
|
return eERR_UNKNOWN;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1403,10 +1401,10 @@ int qsap_read_channel(s8 *pfile, struct Command *pcmd, s8 *presp, u32 *plen, s8
|
|||||||
u32 len = *plen;
|
u32 len = *plen;
|
||||||
|
|
||||||
if(eSUCCESS == qsap_get_operating_channel(&chan)) {
|
if(eSUCCESS == qsap_get_operating_channel(&chan)) {
|
||||||
*plen = snprintf(presp, len, "%s %s=%lu", SUCCESS, pcmd->name, chan);
|
*plen = qsap_scnprintf(presp, len, "%s %s=%lu", SUCCESS, pcmd->name, chan);
|
||||||
ALOGD("presp :%s\n", presp);
|
ALOGD("presp :%s\n", presp);
|
||||||
} else {
|
} else {
|
||||||
*plen = snprintf(presp, len, "%s", ERR_UNKNOWN);
|
*plen = qsap_scnprintf(presp, len, "%s", ERR_UNKNOWN);
|
||||||
}
|
}
|
||||||
|
|
||||||
return eSUCCESS;
|
return eSUCCESS;
|
||||||
@@ -1422,10 +1420,10 @@ int qsap_read_auto_channel(struct Command *pcmd, s8 *presp, u32 *plen)
|
|||||||
ALOGE("%s :\n", __func__);
|
ALOGE("%s :\n", __func__);
|
||||||
|
|
||||||
if (eSUCCESS == qsap_get_sap_auto_channel_selection(&pautochan)) {
|
if (eSUCCESS == qsap_get_sap_auto_channel_selection(&pautochan)) {
|
||||||
*plen = snprintf(presp, len, "%s autochannel=%lu", SUCCESS, pautochan);
|
*plen = qsap_scnprintf(presp, len, "%s autochannel=%lu", SUCCESS, pautochan);
|
||||||
ALOGE("presp :%s\n", presp);
|
ALOGE("presp :%s\n", presp);
|
||||||
} else {
|
} else {
|
||||||
*plen = snprintf(presp, len, "%s", ERR_UNKNOWN);
|
*plen = qsap_scnprintf(presp, len, "%s", ERR_UNKNOWN);
|
||||||
}
|
}
|
||||||
|
|
||||||
return eSUCCESS;
|
return eSUCCESS;
|
||||||
@@ -1437,7 +1435,7 @@ static int qsap_mac_to_macstr(s8 *pmac, u32 slen, s8 *pmstr, u32 *plen)
|
|||||||
int totlen = 0;
|
int totlen = 0;
|
||||||
|
|
||||||
while((slen > 0) && (*plen > 0)) {
|
while((slen > 0) && (*plen > 0)) {
|
||||||
len = snprintf(pmstr, *plen, "%.2X:%.2X:%.2X:%.2X:%.2X:%.2X ", (int)pmac[0], (int)pmac[1], (int)pmac[2],
|
len = qsap_scnprintf(pmstr, *plen, "%.2X:%.2X:%.2X:%.2X:%.2X:%.2X ", (int)pmac[0], (int)pmac[1], (int)pmac[2],
|
||||||
(int)pmac[3], (int)pmac[4], (int)pmac[5]);
|
(int)pmac[3], (int)pmac[4], (int)pmac[5]);
|
||||||
pmac += 6;
|
pmac += 6;
|
||||||
slen -= 6;
|
slen -= 6;
|
||||||
@@ -1508,7 +1506,7 @@ void qsap_get_associated_sta_mac(s8 *presp, u32 *plen)
|
|||||||
|
|
||||||
recvLen = *(unsigned long int *)(wrq.u.data.pointer);
|
recvLen = *(unsigned long int *)(wrq.u.data.pointer);
|
||||||
|
|
||||||
len = snprintf(presp, *plen, "%s %s=", SUCCESS, cmd_list[eCMD_ASSOC_STA_MACS].name);
|
len = qsap_scnprintf(presp, *plen, "%s %s=", SUCCESS, cmd_list[eCMD_ASSOC_STA_MACS].name);
|
||||||
pout = presp + len;
|
pout = presp + len;
|
||||||
tlen = *plen - len;
|
tlen = *plen - len;
|
||||||
|
|
||||||
@@ -1521,7 +1519,7 @@ void qsap_get_associated_sta_mac(s8 *presp, u32 *plen)
|
|||||||
|
|
||||||
return;
|
return;
|
||||||
error:
|
error:
|
||||||
*plen = snprintf(presp, *plen, "%s", ERR_UNKNOWN);
|
*plen = qsap_scnprintf(presp, *plen, "%s", ERR_UNKNOWN);
|
||||||
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@@ -1564,11 +1562,10 @@ void qsap_read_ap_stats(s8 *presp, u32 *plen)
|
|||||||
u32 len = MAX_CONF_LINE_LEN;
|
u32 len = MAX_CONF_LINE_LEN;
|
||||||
s8 *pif;
|
s8 *pif;
|
||||||
s8 *pbuf, *pout;
|
s8 *pbuf, *pout;
|
||||||
u32 recvLen;
|
|
||||||
u32 tlen;
|
u32 tlen;
|
||||||
|
|
||||||
if(ENABLE != is_softap_enabled()) {
|
if(ENABLE != is_softap_enabled()) {
|
||||||
*plen = snprintf(presp, *plen, "%s", ERR_SOFTAP_NOT_STARTED);
|
*plen = qsap_scnprintf(presp, *plen, "%s", ERR_SOFTAP_NOT_STARTED);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1604,18 +1601,14 @@ void qsap_read_ap_stats(s8 *presp, u32 *plen)
|
|||||||
goto error;
|
goto error;
|
||||||
}
|
}
|
||||||
|
|
||||||
if(*plen == (recvLen = snprintf(presp, *plen, "%s %s=%s", SUCCESS, cmd_list[eCMD_AP_STATISTICS].name, pbuf))){
|
*plen = qsap_scnprintf(presp, *plen, "%s %s=%s", SUCCESS, cmd_list[eCMD_AP_STATISTICS].name, pbuf);
|
||||||
presp[recvLen-1] = '\0';
|
|
||||||
}
|
|
||||||
|
|
||||||
*plen = recvLen;
|
|
||||||
|
|
||||||
free(pbuf);
|
free(pbuf);
|
||||||
close(sock);
|
close(sock);
|
||||||
return;
|
return;
|
||||||
|
|
||||||
error:
|
error:
|
||||||
*plen = snprintf(presp, *plen, "%s", ERR_UNKNOWN);
|
*plen = qsap_scnprintf(presp, *plen, "%s", ERR_UNKNOWN);
|
||||||
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@@ -1636,7 +1629,7 @@ void qsap_read_autoshutoff(s8 *presp, u32 *plen)
|
|||||||
time = time / 60; /** Convert seconds to minutes */
|
time = time / 60; /** Convert seconds to minutes */
|
||||||
}
|
}
|
||||||
|
|
||||||
*plen = snprintf(presp, *plen, "success %s=%ld", cmd_list[eCMD_AP_AUTOSHUTOFF].name, time);
|
*plen = qsap_scnprintf(presp, *plen, "success %s=%ld", cmd_list[eCMD_AP_AUTOSHUTOFF].name, time);
|
||||||
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@@ -1666,7 +1659,7 @@ static void qsap_get_from_config(esap_cmd_t cNum, s8 *presp, u32 *plen)
|
|||||||
switch(cNum) {
|
switch(cNum) {
|
||||||
case eCMD_ENABLE_SOFTAP:
|
case eCMD_ENABLE_SOFTAP:
|
||||||
status = is_softap_enabled();
|
status = is_softap_enabled();
|
||||||
*plen = snprintf(presp, *plen, "%s %s=%d", SUCCESS, cmd_list[cNum].name, status);
|
*plen = qsap_scnprintf(presp, *plen, "%s %s=%d", SUCCESS, cmd_list[cNum].name, status);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case eCMD_WPA_PAIRWISE:
|
case eCMD_WPA_PAIRWISE:
|
||||||
@@ -1737,7 +1730,7 @@ static void qsap_get_from_config(esap_cmd_t cNum, s8 *presp, u32 *plen)
|
|||||||
|
|
||||||
case eCMD_MAC_ADDR:
|
case eCMD_MAC_ADDR:
|
||||||
if(eSUCCESS != qsap_read_mac_address(presp, plen)) {
|
if(eSUCCESS != qsap_read_mac_address(presp, plen)) {
|
||||||
*plen = snprintf(presp, *plen, "%s", ERR_NOT_SUPPORTED);
|
*plen = qsap_scnprintf(presp, *plen, "%s", ERR_NOT_SUPPORTED);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
@@ -1774,7 +1767,7 @@ static void qsap_get_from_config(esap_cmd_t cNum, s8 *presp, u32 *plen)
|
|||||||
break;
|
break;
|
||||||
|
|
||||||
case eCMD_AP_AUTOSHUTOFF:
|
case eCMD_AP_AUTOSHUTOFF:
|
||||||
qsap_read_autoshutoff(presp, plen);
|
qsap_read_autoshutoff(presp, plen);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case eCMD_AP_ENERGY_DETECT_TH:
|
case eCMD_AP_ENERGY_DETECT_TH:
|
||||||
@@ -1785,7 +1778,7 @@ static void qsap_get_from_config(esap_cmd_t cNum, s8 *presp, u32 *plen)
|
|||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
/** Error case */
|
/** Error case */
|
||||||
*plen = snprintf(presp, *plen, "%s", ERR_INVALID_ARG);
|
*plen = qsap_scnprintf(presp, *plen, "%s", ERR_INVALID_ARG);
|
||||||
}
|
}
|
||||||
|
|
||||||
len = *plen-1;
|
len = *plen-1;
|
||||||
@@ -1858,7 +1851,7 @@ static void qsap_handle_get_request(s8 *pcmd, s8 *presp, u32 *plen)
|
|||||||
cNum = qsap_get_cmd_num(pcmd);
|
cNum = qsap_get_cmd_num(pcmd);
|
||||||
|
|
||||||
if(cNum == eCMD_INVALID) {
|
if(cNum == eCMD_INVALID) {
|
||||||
*plen = snprintf(presp, *plen, "%s", ERR_INVALID_PARAM);
|
*plen = qsap_scnprintf(presp, *plen, "%s", ERR_INVALID_PARAM);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1911,7 +1904,7 @@ static s16 is_valid_wep_key(s8 *pwep, s8 *pkey, s16 len)
|
|||||||
ret = FALSE;
|
ret = FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
snprintf(pkey, len, (ascii == TRUE) ? "\"%s\"" : "%s", pwep);
|
qsap_scnprintf(pkey, len, (ascii == TRUE) ? "\"%s\"" : "%s", pwep);
|
||||||
|
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
@@ -1929,9 +1922,7 @@ s16 wifi_qsap_reset_to_default(s8 *pcfgfile, s8 *pdefault)
|
|||||||
return eERR_FILE_OPEN;
|
return eERR_FILE_OPEN;
|
||||||
}
|
}
|
||||||
|
|
||||||
if(MAX_CONF_LINE_LEN == snprintf(buf, MAX_CONF_LINE_LEN, "%s~", pcfgfile)) {
|
qsap_scnprintf(buf, sizeof(buf), "%s~", pcfgfile);
|
||||||
buf[MAX_CONF_LINE_LEN-1] = '\0';
|
|
||||||
}
|
|
||||||
|
|
||||||
ftmp = fopen(buf, "w+");
|
ftmp = fopen(buf, "w+");
|
||||||
if(NULL == ftmp) {
|
if(NULL == ftmp) {
|
||||||
@@ -1947,9 +1938,7 @@ s16 wifi_qsap_reset_to_default(s8 *pcfgfile, s8 *pdefault)
|
|||||||
fclose(fcfg);
|
fclose(fcfg);
|
||||||
fclose(ftmp);
|
fclose(ftmp);
|
||||||
|
|
||||||
if(MAX_CONF_LINE_LEN == snprintf(buf, MAX_CONF_LINE_LEN, "%s~", pcfgfile)) {
|
qsap_scnprintf(buf, sizeof(buf), "%s~", pcfgfile);
|
||||||
buf[MAX_CONF_LINE_LEN-1] = '\0';
|
|
||||||
}
|
|
||||||
|
|
||||||
if(eERR_UNKNOWN == rename(buf, pcfgfile))
|
if(eERR_UNKNOWN == rename(buf, pcfgfile))
|
||||||
status = eERR_CONF_FILE;
|
status = eERR_CONF_FILE;
|
||||||
@@ -1983,8 +1972,8 @@ void qsap_del_ctrl_iface(void)
|
|||||||
goto error;
|
goto error;
|
||||||
}
|
}
|
||||||
|
|
||||||
if((int)sizeof(path) <= snprintf(path, sizeof(path)-1, "%s/%s", pcif, pif)) {
|
if ((int)sizeof(path) <= snprintf(path, sizeof(path), "%s/%s", pcif, pif)) {
|
||||||
ALOGE("Iface path : error, %s \n", path);
|
ALOGE("Iface path : truncating error, %s \n", path);
|
||||||
goto error;
|
goto error;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -2007,11 +1996,12 @@ static int qsap_send_cmd_to_hostapd(s8 *pcmd)
|
|||||||
s8 interface[64];
|
s8 interface[64];
|
||||||
s8 *ptr;
|
s8 *ptr;
|
||||||
u32 retry_cnt = 3;
|
u32 retry_cnt = 3;
|
||||||
|
size_t ptr_size;
|
||||||
|
|
||||||
len = CTRL_IFACE_PATH_LEN;
|
len = CTRL_IFACE_PATH_LEN;
|
||||||
|
ptr_size = (sizeof(ser.sun_path) < CTRL_IFACE_PATH_LEN)?
|
||||||
#define RESP_BUF_SIZE (80)
|
CTRL_IFACE_PATH_LEN : sizeof(ser.sun_path);
|
||||||
ptr = malloc(RESP_BUF_SIZE);
|
ptr = malloc(ptr_size);
|
||||||
if(NULL == ptr) {
|
if(NULL == ptr) {
|
||||||
ALOGE("%s :No memory \n", __func__);
|
ALOGE("%s :No memory \n", __func__);
|
||||||
return ret;
|
return ret;
|
||||||
@@ -2029,8 +2019,9 @@ static int qsap_send_cmd_to_hostapd(s8 *pcmd)
|
|||||||
goto error;
|
goto error;
|
||||||
}
|
}
|
||||||
|
|
||||||
if(CTRL_IFACE_PATH_LEN <= snprintf(ptr, CTRL_IFACE_PATH_LEN-1, "%s/%s", pcif, pif)) {
|
if ((int)sizeof(ser.sun_path) <= snprintf(ptr, sizeof(ser.sun_path), "%s/%s", pcif, pif)) {
|
||||||
ALOGE("Iface path : error, %s \n", ptr);
|
/* the sun_path is truncated. */
|
||||||
|
ALOGE("Iface path : truncating error, %s \n", ptr);
|
||||||
goto error;
|
goto error;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -2043,7 +2034,7 @@ static int qsap_send_cmd_to_hostapd(s8 *pcmd)
|
|||||||
}
|
}
|
||||||
|
|
||||||
cli.sun_family = AF_UNIX;
|
cli.sun_family = AF_UNIX;
|
||||||
snprintf(cli.sun_path, sizeof(cli.sun_path), SDK_CTRL_IF);
|
qsap_scnprintf(cli.sun_path, sizeof(cli.sun_path), SDK_CTRL_IF);
|
||||||
|
|
||||||
ret = bind(sock, (struct sockaddr *)&cli, sizeof(cli));
|
ret = bind(sock, (struct sockaddr *)&cli, sizeof(cli));
|
||||||
|
|
||||||
@@ -2053,7 +2044,7 @@ static int qsap_send_cmd_to_hostapd(s8 *pcmd)
|
|||||||
}
|
}
|
||||||
|
|
||||||
ser.sun_family = AF_UNIX;
|
ser.sun_family = AF_UNIX;
|
||||||
snprintf(ser.sun_path, sizeof(ser.sun_path), "%s", ptr);
|
qsap_scnprintf(ser.sun_path, sizeof(ser.sun_path), "%s", ptr);
|
||||||
ALOGD("Connect to: %s,(%d)\n", ser.sun_path, sock);
|
ALOGD("Connect to: %s,(%d)\n", ser.sun_path, sock);
|
||||||
|
|
||||||
ret = connect(sock, (struct sockaddr *)&ser, sizeof(ser));
|
ret = connect(sock, (struct sockaddr *)&ser, sizeof(ser));
|
||||||
@@ -2067,8 +2058,8 @@ static int qsap_send_cmd_to_hostapd(s8 *pcmd)
|
|||||||
ALOGE("Unable to send cmd to hostapd \n");
|
ALOGE("Unable to send cmd to hostapd \n");
|
||||||
goto close_ret;
|
goto close_ret;
|
||||||
}
|
}
|
||||||
|
/* reset the ptr buffer size for recv */
|
||||||
len = RESP_BUF_SIZE;
|
len = ptr_size;
|
||||||
|
|
||||||
#define HOSTAPD_RECV_TIMEOUT (2)
|
#define HOSTAPD_RECV_TIMEOUT (2)
|
||||||
while(1) {
|
while(1) {
|
||||||
@@ -2089,8 +2080,12 @@ static int qsap_send_cmd_to_hostapd(s8 *pcmd)
|
|||||||
goto close_ret;
|
goto close_ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
if((ret > 0) && (ptr[0] == '<')) {
|
if ((u32)ret >= len)
|
||||||
|
ptr[len-1] = 0;
|
||||||
|
else
|
||||||
ptr[ret] = 0;
|
ptr[ret] = 0;
|
||||||
|
|
||||||
|
if((ret > 0) && (ptr[0] == '<')) {
|
||||||
ALOGE("Not the expected response...\n: %s", ptr);
|
ALOGE("Not the expected response...\n: %s", ptr);
|
||||||
retry_cnt--;
|
retry_cnt--;
|
||||||
if(retry_cnt)
|
if(retry_cnt)
|
||||||
@@ -2098,7 +2093,6 @@ static int qsap_send_cmd_to_hostapd(s8 *pcmd)
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
ptr[len] = '\0';
|
|
||||||
if(!strncmp(ptr, "FAIL", 4)) {
|
if(!strncmp(ptr, "FAIL", 4)) {
|
||||||
ALOGE("Command failed in hostapd \n");
|
ALOGE("Command failed in hostapd \n");
|
||||||
goto close_ret;
|
goto close_ret;
|
||||||
@@ -2138,7 +2132,7 @@ static void qsap_update_wps_config(s8 *pVal, s8 *presp, u32 *plen)
|
|||||||
*/
|
*/
|
||||||
status = atoi(pVal);
|
status = atoi(pVal);
|
||||||
|
|
||||||
snprintf(pwps_state, MAX_INT_STR, "%d", (status == ENABLE) ? WPS_STATE_ENABLE : WPS_STATE_DISABLE);
|
qsap_scnprintf(pwps_state, sizeof(pwps_state), "%d", (status == ENABLE) ? WPS_STATE_ENABLE : WPS_STATE_DISABLE);
|
||||||
|
|
||||||
qsap_write_cfg(pconffile, &cmd_list[eCMD_WPS_STATE], pwps_state, presp, &tlen, HOSTAPD_CONF_QCOM_FILE);
|
qsap_write_cfg(pconffile, &cmd_list[eCMD_WPS_STATE], pwps_state, presp, &tlen, HOSTAPD_CONF_QCOM_FILE);
|
||||||
|
|
||||||
@@ -2147,7 +2141,7 @@ static void qsap_update_wps_config(s8 *pVal, s8 *presp, u32 *plen)
|
|||||||
goto error;
|
goto error;
|
||||||
}
|
}
|
||||||
|
|
||||||
snprintf(pwps_state, 8, "%d", ENABLE);
|
qsap_scnprintf(pwps_state, sizeof(pwps_state), "%d", ENABLE);
|
||||||
|
|
||||||
/** update the eap_server=1 */
|
/** update the eap_server=1 */
|
||||||
qsap_write_cfg(pconffile, &qsap_str[STR_EAP_SERVER], pwps_state, presp, plen, HOSTAPD_CONF_QCOM_FILE);
|
qsap_write_cfg(pconffile, &qsap_str[STR_EAP_SERVER], pwps_state, presp, plen, HOSTAPD_CONF_QCOM_FILE);
|
||||||
@@ -2161,7 +2155,7 @@ static void qsap_update_wps_config(s8 *pVal, s8 *presp, u32 *plen)
|
|||||||
|
|
||||||
return;
|
return;
|
||||||
error:
|
error:
|
||||||
*plen = snprintf(presp, *plen, "%s", ERR_UNKNOWN);
|
*plen = qsap_scnprintf(presp, *plen, "%s", ERR_UNKNOWN);
|
||||||
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@@ -2190,7 +2184,7 @@ static void qsap_config_wps_method(s8 *pVal, s8 *presp, u32 *plen)
|
|||||||
/** Identify the WPS method */
|
/** Identify the WPS method */
|
||||||
value = atoi(buf);
|
value = atoi(buf);
|
||||||
if(TRUE != IS_VALID_WPS_CONFIG(value)) {
|
if(TRUE != IS_VALID_WPS_CONFIG(value)) {
|
||||||
*plen = snprintf(presp, *plen, "%s", ERR_INVALID_PARAM);
|
*plen = qsap_scnprintf(presp, *plen, "%s", ERR_INVALID_PARAM);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -2198,24 +2192,24 @@ static void qsap_config_wps_method(s8 *pVal, s8 *presp, u32 *plen)
|
|||||||
|
|
||||||
if( (value == WPS_CONFIG_PIN) && (*ptr == '\0') ){
|
if( (value == WPS_CONFIG_PIN) && (*ptr == '\0') ){
|
||||||
ALOGE("%s :Invalid command \n", __func__);
|
ALOGE("%s :Invalid command \n", __func__);
|
||||||
*plen = snprintf(presp, *plen, "%s", ERR_INVALID_PARAM);
|
*plen = qsap_scnprintf(presp, *plen, "%s", ERR_INVALID_PARAM);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if(value == WPS_CONFIG_PBC)
|
if(value == WPS_CONFIG_PBC)
|
||||||
snprintf(buf, 64, "WPS_PBC");
|
qsap_scnprintf(buf, sizeof(buf), "WPS_PBC");
|
||||||
else {
|
else {
|
||||||
if(strlen(ptr) < WPS_KEY_LEN) {
|
if(strlen(ptr) < WPS_KEY_LEN) {
|
||||||
ALOGD("%s :Invalid WPS key length\n", __func__);
|
ALOGD("%s :Invalid WPS key length\n", __func__);
|
||||||
*plen = snprintf(presp, *plen, "%s", ERR_INVALID_PARAM);
|
*plen = qsap_scnprintf(presp, *plen, "%s", ERR_INVALID_PARAM);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
snprintf(buf, 64, "WPS_PIN any %s", ptr);
|
qsap_scnprintf(buf, sizeof(buf), "WPS_PIN any %s", ptr);
|
||||||
}
|
}
|
||||||
|
|
||||||
value = qsap_send_cmd_to_hostapd(buf);
|
value = qsap_send_cmd_to_hostapd(buf);
|
||||||
|
|
||||||
*plen = snprintf(presp, *plen, "%s", (value == eSUCCESS) ? SUCCESS: ERR_UNKNOWN);
|
*plen = qsap_scnprintf(presp, *plen, "%s", (value == eSUCCESS) ? SUCCESS: ERR_UNKNOWN);
|
||||||
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@@ -2317,7 +2311,7 @@ void qsap_disassociate_sta(s8 *pVal, s8 *presp, u32 *plen)
|
|||||||
close(sock);
|
close(sock);
|
||||||
|
|
||||||
end:
|
end:
|
||||||
*plen = snprintf(presp, *plen, "%s", (ret == eSUCCESS) ? SUCCESS : ERR_UNKNOWN);
|
*plen = qsap_scnprintf(presp, *plen, "%s", (ret == eSUCCESS) ? SUCCESS : ERR_UNKNOWN);
|
||||||
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@@ -2367,12 +2361,12 @@ static int qsap_set_channel(s32 channel, s8 *tbuf, u32 *tlen)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
snprintf(schan, MAX_INT_STR, "%ld", channel);
|
qsap_scnprintf(schan, sizeof(schan), "%ld", channel);
|
||||||
|
|
||||||
return qsap_write_cfg(pcfg, &cmd_list[eCMD_CHAN], schan, tbuf, tlen, HOSTAPD_CONF_QCOM_FILE);
|
return qsap_write_cfg(pcfg, &cmd_list[eCMD_CHAN], schan, tbuf, tlen, HOSTAPD_CONF_QCOM_FILE);
|
||||||
}
|
}
|
||||||
|
|
||||||
static int qsap_set_operating_mode(s32 mode, s8 *pmode, s8 *tbuf, u32 *tlen)
|
static int qsap_set_operating_mode(s32 mode, s8 *pmode, int pmode_len, s8 *tbuf, u32 *tlen)
|
||||||
{
|
{
|
||||||
u32 ulen;
|
u32 ulen;
|
||||||
s8 *pcfgval;
|
s8 *pcfgval;
|
||||||
@@ -2399,16 +2393,16 @@ static int qsap_set_operating_mode(s32 mode, s8 *pmode, s8 *tbuf, u32 *tlen)
|
|||||||
/* fall through */
|
/* fall through */
|
||||||
case HW_MODE_N:
|
case HW_MODE_N:
|
||||||
case HW_MODE_A:
|
case HW_MODE_A:
|
||||||
ulen = *tlen;
|
ulen = *tlen;
|
||||||
qsap_write_cfg(pcfg, &cmd_list[eCMD_IEEE80211N],ieee11n_enable, tbuf, &ulen, HOSTAPD_CONF_QCOM_FILE);
|
qsap_write_cfg(pcfg, &cmd_list[eCMD_IEEE80211N],ieee11n_enable, tbuf, &ulen, HOSTAPD_CONF_QCOM_FILE);
|
||||||
break;
|
break;
|
||||||
case HW_MODE_B:
|
case HW_MODE_B:
|
||||||
ulen = *tlen;
|
ulen = *tlen;
|
||||||
qsap_write_cfg(pcfg, &cmd_list[eCMD_IEEE80211N],ieee11n_disable, tbuf, &ulen, HOSTAPD_CONF_QCOM_FILE);
|
qsap_write_cfg(pcfg, &cmd_list[eCMD_IEEE80211N],ieee11n_disable, tbuf, &ulen, HOSTAPD_CONF_QCOM_FILE);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
if(mode == HW_MODE_G_ONLY || mode == HW_MODE_N_ONLY || mode == HW_MODE_N ) {
|
if(mode == HW_MODE_G_ONLY || mode == HW_MODE_N_ONLY || mode == HW_MODE_N ) {
|
||||||
snprintf(pmode, sizeof(u32), "%s",hw_mode[HW_MODE_G]);
|
qsap_scnprintf(pmode, pmode_len, "%s",hw_mode[HW_MODE_G]);
|
||||||
}
|
}
|
||||||
return qsap_write_cfg(pcfg, &cmd_list[eCMD_HW_MODE], pmode, tbuf, tlen, HOSTAPD_CONF_QCOM_FILE);
|
return qsap_write_cfg(pcfg, &cmd_list[eCMD_HW_MODE], pmode, tbuf, tlen, HOSTAPD_CONF_QCOM_FILE);
|
||||||
}
|
}
|
||||||
@@ -2440,13 +2434,13 @@ static int qsap_set_data_rate(s32 drate_idx, s8 *presp, u32 *plen)
|
|||||||
goto end;
|
goto end;
|
||||||
}
|
}
|
||||||
|
|
||||||
snprintf(sconf, MAX_INT_STR, "%ld", drate_idx);
|
qsap_scnprintf(sconf, sizeof(sconf), "%ld", drate_idx);
|
||||||
|
|
||||||
/** Update the rate index in the configuration */
|
/** Update the rate index in the configuration */
|
||||||
return qsap_write_cfg(fIni, &qsap_str[STR_DATA_RATE_IN_INI], sconf, presp, plen, INI_CONF_FILE);
|
return qsap_write_cfg(fIni, &qsap_str[STR_DATA_RATE_IN_INI], sconf, presp, plen, INI_CONF_FILE);
|
||||||
|
|
||||||
end:
|
end:
|
||||||
*plen = snprintf(presp, *plen, "%s", ERR_UNKNOWN);
|
*plen = qsap_scnprintf(presp, *plen, "%s", ERR_UNKNOWN);
|
||||||
|
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
@@ -2489,24 +2483,23 @@ static void qsap_handle_set_request(s8 *pcmd, s8 *presp, u32 *plen)
|
|||||||
|
|
||||||
cNum = qsap_get_cmd_num(pcmd);
|
cNum = qsap_get_cmd_num(pcmd);
|
||||||
if(cNum == eCMD_INVALID) {
|
if(cNum == eCMD_INVALID) {
|
||||||
*plen = snprintf(presp, *plen, "%s", ERR_INVALID_ARG);
|
*plen = qsap_scnprintf(presp, *plen, "%s", ERR_INVALID_ARG);
|
||||||
ALOGE("Invalid command number :%d\n", cNum);
|
ALOGE("Invalid command number :%d\n", cNum);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
pVal = pcmd + strlen(cmd_list[cNum].name);
|
pVal = pcmd + strlen(cmd_list[cNum].name);
|
||||||
if( (cNum != eCMD_COMMIT) &&
|
if( (cNum != eCMD_COMMIT) &&
|
||||||
(cNum != eCMD_RESET_TO_DEFAULT) &&
|
(cNum != eCMD_RESET_TO_DEFAULT) &&
|
||||||
((*pVal != '=') || (strlen(pVal) < 2)) ) {
|
((*pVal != '=') || (strlen(pVal) < 2)) ) {
|
||||||
*plen = snprintf(presp, *plen, "%s", ERR_INVALID_ARG);
|
*plen = qsap_scnprintf(presp, *plen, "%s", ERR_INVALID_ARG);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
pVal++;
|
pVal++;
|
||||||
|
|
||||||
if((cNum != eCMD_COMMIT) && (cNum != eCMD_RESET_TO_DEFAULT)) {
|
if((cNum != eCMD_COMMIT) && (cNum != eCMD_RESET_TO_DEFAULT)) {
|
||||||
ALOGE("Cmd: %s Argument :%s \n", cmd_list[cNum].name, pVal);
|
ALOGE("Cmd: %s Argument :%s \n", cmd_list[cNum].name, pVal);
|
||||||
}
|
}
|
||||||
|
|
||||||
switch(cNum) {
|
switch(cNum) {
|
||||||
case eCMD_ADD_TO_ALLOW:
|
case eCMD_ADD_TO_ALLOW:
|
||||||
case eCMD_REMOVE_FROM_ALLOW:
|
case eCMD_REMOVE_FROM_ALLOW:
|
||||||
@@ -2520,7 +2513,7 @@ static void qsap_handle_set_request(s8 *pcmd, s8 *presp, u32 *plen)
|
|||||||
qsap_update_mac_list(pfile, cNum, pVal, presp, plen);
|
qsap_update_mac_list(pfile, cNum, pVal, presp, plen);
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
*plen = snprintf(presp, *plen, "%s", ERR_RES_UNAVAILABLE);
|
*plen = qsap_scnprintf(presp, *plen, "%s", ERR_RES_UNAVAILABLE);
|
||||||
}
|
}
|
||||||
return;
|
return;
|
||||||
|
|
||||||
@@ -2529,9 +2522,9 @@ static void qsap_handle_set_request(s8 *pcmd, s8 *presp, u32 *plen)
|
|||||||
if(FALSE == IS_VALID_SEC_MODE(value))
|
if(FALSE == IS_VALID_SEC_MODE(value))
|
||||||
goto error;
|
goto error;
|
||||||
/** Write back the integer value. This is to avoid values like 01, 001, 0001
|
/** Write back the integer value. This is to avoid values like 01, 001, 0001
|
||||||
* being written to the configuration
|
* being written to the configuration.
|
||||||
*/
|
*/
|
||||||
snprintf(pVal, sizeof(u32), "%ld", value);
|
qsap_scnprintf(pVal, strlen(pVal)+1, "%ld", value);
|
||||||
qsap_set_security_mode(pconffile, value, presp, plen);
|
qsap_set_security_mode(pconffile, value, presp, plen);
|
||||||
return;
|
return;
|
||||||
|
|
||||||
@@ -2543,7 +2536,7 @@ static void qsap_handle_set_request(s8 *pcmd, s8 *presp, u32 *plen)
|
|||||||
/** Write back the integer value. This is to avoid values like 01, 001, 0001
|
/** Write back the integer value. This is to avoid values like 01, 001, 0001
|
||||||
* being written to the configuration
|
* being written to the configuration
|
||||||
*/
|
*/
|
||||||
snprintf(pVal, sizeof(u32), "%ld", value);
|
qsap_scnprintf(pVal, strlen(pVal)+1, "%ld", value);
|
||||||
|
|
||||||
if(ACL_ALLOW_LIST == value) {
|
if(ACL_ALLOW_LIST == value) {
|
||||||
value = ENABLE;
|
value = ENABLE;
|
||||||
@@ -2582,9 +2575,9 @@ static void qsap_handle_set_request(s8 *pcmd, s8 *presp, u32 *plen)
|
|||||||
else {
|
else {
|
||||||
status = commit();
|
status = commit();
|
||||||
}
|
}
|
||||||
*plen = snprintf(presp, *plen, "%s", (status == eSUCCESS)? SUCCESS : ERR_UNKNOWN);
|
*plen = qsap_scnprintf(presp, *plen, "%s", (status == eSUCCESS)? SUCCESS : ERR_UNKNOWN);
|
||||||
#endif
|
#endif
|
||||||
*plen = snprintf(presp, *plen, "%s", SUCCESS);
|
*plen = qsap_scnprintf(presp, *plen, "%s", SUCCESS);
|
||||||
return;
|
return;
|
||||||
|
|
||||||
case eCMD_ENABLE_SOFTAP:
|
case eCMD_ENABLE_SOFTAP:
|
||||||
@@ -2599,7 +2592,7 @@ static void qsap_handle_set_request(s8 *pcmd, s8 *presp, u32 *plen)
|
|||||||
else {
|
else {
|
||||||
status = wifi_qsap_load_driver();
|
status = wifi_qsap_load_driver();
|
||||||
}
|
}
|
||||||
*plen = snprintf(presp, *plen, "%s", (status==eSUCCESS) ? SUCCESS : "failure Could not enable softap");
|
*plen = qsap_scnprintf(presp, *plen, "%s", (status==eSUCCESS) ? SUCCESS : "failure Could not enable softap");
|
||||||
return;
|
return;
|
||||||
case eCMD_SSID:
|
case eCMD_SSID:
|
||||||
value = strlen(pVal);
|
value = strlen(pVal);
|
||||||
@@ -2614,7 +2607,7 @@ static void qsap_handle_set_request(s8 *pcmd, s8 *presp, u32 *plen)
|
|||||||
/** Write back the integer value. This is to avoid values like 01, 001, 0001
|
/** Write back the integer value. This is to avoid values like 01, 001, 0001
|
||||||
* being written to the configuration
|
* being written to the configuration
|
||||||
*/
|
*/
|
||||||
snprintf(pVal, MAX_INT_STR, "%ld", value);
|
qsap_scnprintf(pVal, strlen(pVal)+1, "%ld", value);
|
||||||
break;
|
break;
|
||||||
case eCMD_PASSPHRASE:
|
case eCMD_PASSPHRASE:
|
||||||
value = strlen(pVal);
|
value = strlen(pVal);
|
||||||
@@ -2628,7 +2621,7 @@ static void qsap_handle_set_request(s8 *pcmd, s8 *presp, u32 *plen)
|
|||||||
ulen = MAX_FILE_PATH_LEN;
|
ulen = MAX_FILE_PATH_LEN;
|
||||||
value = qsap_set_channel(value, filename, &ulen);
|
value = qsap_set_channel(value, filename, &ulen);
|
||||||
|
|
||||||
*plen = snprintf(presp, *plen, "%s", (value == eSUCCESS) ? SUCCESS : ERR_UNKNOWN);
|
*plen = qsap_scnprintf(presp, *plen, "%s", (value == eSUCCESS) ? SUCCESS : ERR_UNKNOWN);
|
||||||
return;
|
return;
|
||||||
|
|
||||||
case eCMD_BCN_INTERVAL:
|
case eCMD_BCN_INTERVAL:
|
||||||
@@ -2638,7 +2631,7 @@ static void qsap_handle_set_request(s8 *pcmd, s8 *presp, u32 *plen)
|
|||||||
/** Write back the integer value. This is to avoid values like 01, 001, 0001
|
/** Write back the integer value. This is to avoid values like 01, 001, 0001
|
||||||
* being written to the configuration
|
* being written to the configuration
|
||||||
*/
|
*/
|
||||||
snprintf(pVal, MAX_INT_STR, "%ld", value);
|
qsap_scnprintf(pVal, strlen(pVal)+1, "%ld", value);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case eCMD_DTIM_PERIOD:
|
case eCMD_DTIM_PERIOD:
|
||||||
@@ -2648,7 +2641,7 @@ static void qsap_handle_set_request(s8 *pcmd, s8 *presp, u32 *plen)
|
|||||||
/** Write back the integer value. This is to avoid values like 01, 001, 0001
|
/** Write back the integer value. This is to avoid values like 01, 001, 0001
|
||||||
* being written to the configuration
|
* being written to the configuration
|
||||||
*/
|
*/
|
||||||
snprintf(pVal, MAX_INT_STR, "%ld", value);
|
qsap_scnprintf(pVal, strlen(pVal)+1, "%ld", value);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case eCMD_HW_MODE:
|
case eCMD_HW_MODE:
|
||||||
@@ -2664,8 +2657,9 @@ static void qsap_handle_set_request(s8 *pcmd, s8 *presp, u32 *plen)
|
|||||||
goto error;
|
goto error;
|
||||||
|
|
||||||
ulen = MAX_FILE_PATH_LEN;
|
ulen = MAX_FILE_PATH_LEN;
|
||||||
value = qsap_set_operating_mode(value, pVal, filename, &ulen);
|
/* pVal is anull terminated string */
|
||||||
*plen = snprintf(presp, *plen, "%s", (value == eSUCCESS) ? SUCCESS : ERR_UNKNOWN);
|
value = qsap_set_operating_mode(value, pVal, strlen(pVal)+1, filename, &ulen);
|
||||||
|
*plen = qsap_scnprintf(presp, *plen, "%s", (value == eSUCCESS) ? SUCCESS : ERR_UNKNOWN);
|
||||||
return;
|
return;
|
||||||
|
|
||||||
case eCMD_AUTH_ALGS:
|
case eCMD_AUTH_ALGS:
|
||||||
@@ -2676,7 +2670,7 @@ static void qsap_handle_set_request(s8 *pcmd, s8 *presp, u32 *plen)
|
|||||||
/** Write back the integer value. This is to avoid values like 01, 001, 0001
|
/** Write back the integer value. This is to avoid values like 01, 001, 0001
|
||||||
* being written to the configuration
|
* being written to the configuration
|
||||||
*/
|
*/
|
||||||
snprintf(pVal, MAX_INT_STR, "%ld", value);
|
qsap_scnprintf(pVal, strlen(pVal)+1, "%ld", value);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case eCMD_DEFAULT_KEY:
|
case eCMD_DEFAULT_KEY:
|
||||||
@@ -2686,7 +2680,7 @@ static void qsap_handle_set_request(s8 *pcmd, s8 *presp, u32 *plen)
|
|||||||
/** Write back the integer value. This is to avoid values like 01, 001, 0001
|
/** Write back the integer value. This is to avoid values like 01, 001, 0001
|
||||||
* being written to the configuration
|
* being written to the configuration
|
||||||
*/
|
*/
|
||||||
snprintf(pVal, MAX_INT_STR, "%ld", value);
|
qsap_scnprintf(pVal, strlen(pVal)+1, "%ld", value);
|
||||||
|
|
||||||
qsap_write_cfg(pcfg, &cmd_list[cNum], pVal, presp, plen, ini);
|
qsap_write_cfg(pcfg, &cmd_list[cNum], pVal, presp, plen, ini);
|
||||||
|
|
||||||
@@ -2772,7 +2766,7 @@ static void qsap_handle_set_request(s8 *pcmd, s8 *presp, u32 *plen)
|
|||||||
else {
|
else {
|
||||||
status = !eSUCCESS;
|
status = !eSUCCESS;
|
||||||
}
|
}
|
||||||
*plen = snprintf(presp, *plen, "%s", (status == eSUCCESS) ? SUCCESS : ERR_UNKNOWN);
|
*plen = qsap_scnprintf(presp, *plen, "%s", (status == eSUCCESS) ? SUCCESS : ERR_UNKNOWN);
|
||||||
return;
|
return;
|
||||||
|
|
||||||
case eCMD_DISASSOC_STA:
|
case eCMD_DISASSOC_STA:
|
||||||
@@ -2785,7 +2779,7 @@ static void qsap_handle_set_request(s8 *pcmd, s8 *presp, u32 *plen)
|
|||||||
status = wifi_qsap_reload_softap();
|
status = wifi_qsap_reload_softap();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
*plen = snprintf(presp, *plen, "%s", (status == eSUCCESS) ? SUCCESS : ERR_UNKNOWN);
|
*plen = qsap_scnprintf(presp, *plen, "%s", (status == eSUCCESS) ? SUCCESS : ERR_UNKNOWN);
|
||||||
return;
|
return;
|
||||||
|
|
||||||
case eCMD_DATA_RATES:
|
case eCMD_DATA_RATES:
|
||||||
@@ -2867,7 +2861,7 @@ static void qsap_handle_set_request(s8 *pcmd, s8 *presp, u32 *plen)
|
|||||||
if(TRUE != IS_VALID_WMM_STATE(value))
|
if(TRUE != IS_VALID_WMM_STATE(value))
|
||||||
goto error;
|
goto error;
|
||||||
|
|
||||||
snprintf(pVal, MAX_INT_STR, "%ld", value);
|
qsap_scnprintf(pVal, strlen(pVal)+1, "%ld", value);
|
||||||
cNum = STR_WMM_IN_INI;
|
cNum = STR_WMM_IN_INI;
|
||||||
ini = INI_CONF_FILE;
|
ini = INI_CONF_FILE;
|
||||||
break;
|
break;
|
||||||
@@ -2878,7 +2872,7 @@ static void qsap_handle_set_request(s8 *pcmd, s8 *presp, u32 *plen)
|
|||||||
/** Write back the integer value. This is to avoid values like 01, 001, 0001
|
/** Write back the integer value. This is to avoid values like 01, 001, 0001
|
||||||
* being written to the configuration
|
* being written to the configuration
|
||||||
*/
|
*/
|
||||||
snprintf(pVal, MAX_INT_STR, "%ld", value);
|
qsap_scnprintf(pVal, strlen(pVal)+1, "%ld", value);
|
||||||
qsap_update_wps_config(pVal, presp, plen);
|
qsap_update_wps_config(pVal, presp, plen);
|
||||||
return;
|
return;
|
||||||
|
|
||||||
@@ -2890,7 +2884,7 @@ static void qsap_handle_set_request(s8 *pcmd, s8 *presp, u32 *plen)
|
|||||||
value = atoi(pVal);
|
value = atoi(pVal);
|
||||||
if(TRUE != IS_VALID_PROTECTION(value))
|
if(TRUE != IS_VALID_PROTECTION(value))
|
||||||
goto error;
|
goto error;
|
||||||
snprintf(pVal, MAX_INT_STR, "%ld", value);
|
qsap_scnprintf(pVal, strlen(pVal)+1, "%ld", value);
|
||||||
cNum = STR_PROT_FLAG_IN_INI;
|
cNum = STR_PROT_FLAG_IN_INI;
|
||||||
ini = INI_CONF_FILE;
|
ini = INI_CONF_FILE;
|
||||||
break;
|
break;
|
||||||
@@ -2899,7 +2893,7 @@ static void qsap_handle_set_request(s8 *pcmd, s8 *presp, u32 *plen)
|
|||||||
value = atoi(pVal);
|
value = atoi(pVal);
|
||||||
if(TRUE != IS_VALID_FRAG_THRESHOLD(value))
|
if(TRUE != IS_VALID_FRAG_THRESHOLD(value))
|
||||||
goto error;
|
goto error;
|
||||||
snprintf(pVal, MAX_INT_STR, "%ld", value);
|
qsap_scnprintf(pVal, strlen(pVal)+1, "%ld", value);
|
||||||
|
|
||||||
cNum = STR_FRAG_THRESHOLD_IN_INI;
|
cNum = STR_FRAG_THRESHOLD_IN_INI;
|
||||||
ini = INI_CONF_FILE;
|
ini = INI_CONF_FILE;
|
||||||
@@ -2911,14 +2905,14 @@ static void qsap_handle_set_request(s8 *pcmd, s8 *presp, u32 *plen)
|
|||||||
if(TRUE != IS_VALID_802DOT11D_STATE(value))
|
if(TRUE != IS_VALID_802DOT11D_STATE(value))
|
||||||
goto error;
|
goto error;
|
||||||
|
|
||||||
snprintf(pVal, MAX_INT_STR, "%ld", value);
|
qsap_scnprintf(pVal, strlen(pVal)+1, "%ld", value);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case eCMD_RTS_THRESHOLD:
|
case eCMD_RTS_THRESHOLD:
|
||||||
value = atoi(pVal);
|
value = atoi(pVal);
|
||||||
if(TRUE != IS_VALID_RTS_THRESHOLD(value))
|
if(TRUE != IS_VALID_RTS_THRESHOLD(value))
|
||||||
goto error;
|
goto error;
|
||||||
snprintf(pVal, MAX_INT_STR, "%ld", value);
|
qsap_scnprintf(pVal, strlen(pVal)+1, "%ld", value);
|
||||||
cNum = STR_RTS_THRESHOLD_IN_INI;
|
cNum = STR_RTS_THRESHOLD_IN_INI;
|
||||||
ini = INI_CONF_FILE;
|
ini = INI_CONF_FILE;
|
||||||
break;
|
break;
|
||||||
@@ -2935,7 +2929,7 @@ static void qsap_handle_set_request(s8 *pcmd, s8 *presp, u32 *plen)
|
|||||||
if(TRUE != IS_VALID_TX_POWER(value))
|
if(TRUE != IS_VALID_TX_POWER(value))
|
||||||
goto error;
|
goto error;
|
||||||
qsap_set_ini_filename();
|
qsap_set_ini_filename();
|
||||||
snprintf(pVal, sizeof(u32), "%ld", value);
|
qsap_scnprintf(pVal, strlen(pVal)+1, "%ld", value);
|
||||||
cNum = STR_TX_POWER_IN_INI;
|
cNum = STR_TX_POWER_IN_INI;
|
||||||
ini = INI_CONF_FILE;
|
ini = INI_CONF_FILE;
|
||||||
break;
|
break;
|
||||||
@@ -2953,7 +2947,7 @@ static void qsap_handle_set_request(s8 *pcmd, s8 *presp, u32 *plen)
|
|||||||
status = qsap_change_cfg(pcfg,
|
status = qsap_change_cfg(pcfg,
|
||||||
&cmd_list[eCMD_INTRA_BSS_FORWARD],ENABLE);
|
&cmd_list[eCMD_INTRA_BSS_FORWARD],ENABLE);
|
||||||
}
|
}
|
||||||
*plen = snprintf(presp, *plen, "%s", (status == eSUCCESS) ?
|
*plen = qsap_scnprintf(presp, *plen, "%s", (status == eSUCCESS) ?
|
||||||
SUCCESS : ERR_UNKNOWN);
|
SUCCESS : ERR_UNKNOWN);
|
||||||
return;
|
return;
|
||||||
|
|
||||||
@@ -2967,8 +2961,9 @@ static void qsap_handle_set_request(s8 *pcmd, s8 *presp, u32 *plen)
|
|||||||
value = atoi(pVal);
|
value = atoi(pVal);
|
||||||
if(TRUE != IS_VALID_APSHUTOFFTIME(value))
|
if(TRUE != IS_VALID_APSHUTOFFTIME(value))
|
||||||
goto error;
|
goto error;
|
||||||
|
/* copy a larger value back to pVal. Please pay special care
|
||||||
snprintf(pVal, MAX_INT_STR, "%ld", value*60);
|
* in caller to make sure that the buffer has sufficient size. */
|
||||||
|
qsap_scnprintf(pVal, MAX_INT_STR, "%ld", value*60);
|
||||||
cNum = STR_AP_AUTOSHUTOFF;
|
cNum = STR_AP_AUTOSHUTOFF;
|
||||||
ini = INI_CONF_FILE;
|
ini = INI_CONF_FILE;
|
||||||
break;
|
break;
|
||||||
@@ -2978,14 +2973,14 @@ static void qsap_handle_set_request(s8 *pcmd, s8 *presp, u32 *plen)
|
|||||||
if(TRUE != IS_VALID_ENERGY_DETECT_TH(value))
|
if(TRUE != IS_VALID_ENERGY_DETECT_TH(value))
|
||||||
goto error;
|
goto error;
|
||||||
|
|
||||||
snprintf(pVal, MAX_INT_STR, "%ld", value);
|
qsap_scnprintf(pVal, strlen(pVal)+1, "%ld", value);
|
||||||
cNum = STR_AP_ENERGY_DETECT_TH;
|
cNum = STR_AP_ENERGY_DETECT_TH;
|
||||||
ini = INI_CONF_FILE;
|
ini = INI_CONF_FILE;
|
||||||
break;
|
break;
|
||||||
case eCMD_SET_CHANNEL_RANGE:
|
case eCMD_SET_CHANNEL_RANGE:
|
||||||
ALOGE("eCMD_SET_CHANNEL_RANGE pcmd :%s\n", pcmd);
|
ALOGE("eCMD_SET_CHANNEL_RANGE pcmd :%s\n", pcmd);
|
||||||
value = qsap_set_channel_range(pcmd);
|
value = qsap_set_channel_range(pcmd);
|
||||||
*plen = snprintf(presp, *plen, "%s", (value == eSUCCESS) ? SUCCESS :
|
*plen = qsap_scnprintf(presp, *plen, "%s", (value == eSUCCESS) ? SUCCESS :
|
||||||
ERR_UNKNOWN);
|
ERR_UNKNOWN);
|
||||||
return;
|
return;
|
||||||
|
|
||||||
@@ -3004,7 +2999,7 @@ static void qsap_handle_set_request(s8 *pcmd, s8 *presp, u32 *plen)
|
|||||||
return;
|
return;
|
||||||
|
|
||||||
error:
|
error:
|
||||||
*plen = snprintf(presp, *plen, "%s", ERR_INVALID_PARAM);
|
*plen = qsap_scnprintf(presp, *plen, "%s", ERR_INVALID_PARAM);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -3038,7 +3033,7 @@ void qsap_hostd_exec_cmd(s8 *pcmd, s8 *presp, u32 *plen)
|
|||||||
}
|
}
|
||||||
|
|
||||||
else {
|
else {
|
||||||
*plen = snprintf(presp, *plen, "%s", ERR_INVALIDREQ);
|
*plen = qsap_scnprintf(presp, *plen, "%s", ERR_INVALIDREQ);
|
||||||
}
|
}
|
||||||
|
|
||||||
ALOGD("CMD OUTPUT [%s]\nlen :%lu\n\n", presp, *plen);
|
ALOGD("CMD OUTPUT [%s]\nlen :%lu\n\n", presp, *plen);
|
||||||
@@ -3078,10 +3073,10 @@ int qsapsetSoftap(int argc, char *argv[])
|
|||||||
|
|
||||||
/** set SSID */
|
/** set SSID */
|
||||||
if(argc > 3) {
|
if(argc > 3) {
|
||||||
snprintf(cmdbuf, CMD_BUF_LEN, "set ssid=%s",argv[3]);
|
qsap_scnprintf(cmdbuf, sizeof(cmdbuf), "set ssid=%s",argv[3]);
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
snprintf(cmdbuf, CMD_BUF_LEN, "set ssid=%s_%d", DEFAULT_SSID, rand());
|
qsap_scnprintf(cmdbuf, sizeof(cmdbuf), "set ssid=%s_%d", DEFAULT_SSID, rand());
|
||||||
}
|
}
|
||||||
(void) qsap_hostd_exec_cmd(cmdbuf, respbuf, &rlen);
|
(void) qsap_hostd_exec_cmd(cmdbuf, respbuf, &rlen);
|
||||||
|
|
||||||
@@ -3128,10 +3123,10 @@ int qsapsetSoftap(int argc, char *argv[])
|
|||||||
else if(!strcmp(argv[6], "wpa2-psk"))
|
else if(!strcmp(argv[6], "wpa2-psk"))
|
||||||
sec = SEC_MODE_WPA2_PSK;
|
sec = SEC_MODE_WPA2_PSK;
|
||||||
|
|
||||||
snprintf(cmdbuf, CMD_BUF_LEN, "set security_mode=%d",sec);
|
qsap_scnprintf(cmdbuf, sizeof(cmdbuf), "set security_mode=%d",sec);
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
snprintf(cmdbuf, CMD_BUF_LEN, "set security_mode=%d", DEFAULT_AUTH_ALG);
|
qsap_scnprintf(cmdbuf, sizeof(cmdbuf) , "set security_mode=%d", DEFAULT_AUTH_ALG);
|
||||||
}
|
}
|
||||||
|
|
||||||
(void) qsap_hostd_exec_cmd(cmdbuf, respbuf, &rlen);
|
(void) qsap_hostd_exec_cmd(cmdbuf, respbuf, &rlen);
|
||||||
@@ -3147,10 +3142,10 @@ int qsapsetSoftap(int argc, char *argv[])
|
|||||||
if(argc > 7) {
|
if(argc > 7) {
|
||||||
/* If the input passphrase is more than 63 characters, consider first 63 characters only*/
|
/* If the input passphrase is more than 63 characters, consider first 63 characters only*/
|
||||||
if ( strlen(argv[7]) > 63 ) argv[7][63] = '\0';
|
if ( strlen(argv[7]) > 63 ) argv[7][63] = '\0';
|
||||||
snprintf(cmdbuf, CMD_BUF_LEN, "set wpa_passphrase=%s",argv[7]);
|
qsap_scnprintf(cmdbuf, CMD_BUF_LEN, "set wpa_passphrase=%s",argv[7]);
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
snprintf(cmdbuf, CMD_BUF_LEN, "set wpa_passphrase=%s", DEFAULT_PASSPHRASE);
|
qsap_scnprintf(cmdbuf, sizeof(cmdbuf), "set wpa_passphrase=%s", DEFAULT_PASSPHRASE);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -3162,7 +3157,7 @@ int qsapsetSoftap(int argc, char *argv[])
|
|||||||
|
|
||||||
rlen = RECV_BUF_LEN;
|
rlen = RECV_BUF_LEN;
|
||||||
|
|
||||||
snprintf(cmdbuf, CMD_BUF_LEN, "set commit");
|
qsap_scnprintf(cmdbuf, sizeof(cmdbuf), "set commit");
|
||||||
|
|
||||||
(void) qsap_hostd_exec_cmd(cmdbuf, respbuf, &rlen);
|
(void) qsap_hostd_exec_cmd(cmdbuf, respbuf, &rlen);
|
||||||
|
|
||||||
|
|||||||
@@ -584,6 +584,7 @@ void check_for_configuration_files(void);
|
|||||||
void qsap_set_ini_filename(void);
|
void qsap_set_ini_filename(void);
|
||||||
int qsap_set_channel_range(s8 * cmd);
|
int qsap_set_channel_range(s8 * cmd);
|
||||||
int qsap_get_sap_auto_channel_slection(s32 *pautochan);
|
int qsap_get_sap_auto_channel_slection(s32 *pautochan);
|
||||||
|
int qsap_get_mode(s32 *pmode);
|
||||||
|
|
||||||
#if __cplusplus
|
#if __cplusplus
|
||||||
}; // extern "C"
|
}; // extern "C"
|
||||||
|
|||||||
Reference in New Issue
Block a user