validate string in Int32ArrayToStringForSF

main
Simon Frei 4 years ago
parent 8893eb8294
commit 5151e8524c
  1. 6
      ADIS_tinyK22_SplitFlap/source/application.c
  2. 9
      ADIS_tinyK22_SplitFlap/source/shell.c

@ -86,11 +86,13 @@ static void App_Task(void* pv){
break; break;
case Shell_Display_String_SF: case Shell_Display_String_SF:
sentence = (char*)calloc(cmd.numberOfParams,sizeof(char)); sentence = (char*)calloc(cmd.numberOfParams,sizeof(char));
SHELL_Int32ArrayToStringForSF(cmd.params, cmd.numberOfParams, sentence); if(SHELL_Int32ArrayToStringForSF(cmd.params, cmd.numberOfParams, sentence) == ERR_OK){
McuLog_info("Sentence parsed"); McuLog_info("Sentence parsed");
MultiSplitFlap_Display(sentence); MultiSplitFlap_Display(sentence);
free(sentence); free(sentence);
vTaskDelay(pdMS_TO_TICKS(2000)); }else{
McuLog_error("Invalid String to Display");
}
break; break;
case Shell_Powerof_rpi: case Shell_Powerof_rpi:
default: default:

@ -111,7 +111,7 @@ uint8_t SHELL_stringToInt32ArrayForSFCMD(const unsigned char **str, int32_t* res
*res = (int32_t)c; *res = (int32_t)c;
res++; res++;
} else{ } else{
return ERR_FAILED; return ERR_RANGE;
} }
c = *(++(*str)); c = *(++(*str));
} }
@ -120,7 +120,14 @@ uint8_t SHELL_stringToInt32ArrayForSFCMD(const unsigned char **str, int32_t* res
uint8_t SHELL_Int32ArrayToStringForSF(int32_t* intArray, int8_t size, char *str){ uint8_t SHELL_Int32ArrayToStringForSF(int32_t* intArray, int8_t size, char *str){
for(uint8_t i = 0; i < size; i++){ for(uint8_t i = 0; i < size; i++){
if(intArray[i] > 127 || intArray[i] < 0){
return ERR_RANGE;
}
*str = (char)intArray[i]; *str = (char)intArray[i];
if(!((*str <= '9' && *str >= '0') || (*str >= 'A' && *str <= 'Z') ||
*str == '!' || *str == '?' || *str == ':' || *str == ' ')){
return ERR_RANGE;
}
str++; str++;
} }
return ERR_OK; return ERR_OK;

Loading…
Cancel
Save