@@ -472,6 +472,82 @@ void SystemFunctions::sanitizeJsonString(const char* input, char* output, size_t
472472 output[outPos] = ' \0 ' ;
473473}
474474
475+ void SystemFunctions::escapeHtml (const char * input, char * output, size_t outputSize)
476+ {
477+ if (!output || outputSize == 0 )
478+ return ;
479+
480+ output[0 ] = ' \0 ' ;
481+
482+ if (!input)
483+ return ;
484+
485+ size_t outPos = 0 ;
486+ const size_t limit = outputSize - 1 ;
487+
488+ while (*input != ' \0 ' && outPos < limit)
489+ {
490+ char c = *input++;
491+
492+ // Escape special HTML characters
493+ if (c == ' &' )
494+ {
495+ // & (5 chars)
496+ if (outPos + 5 > limit) break ;
497+ output[outPos++] = ' &' ;
498+ output[outPos++] = ' a' ;
499+ output[outPos++] = ' m' ;
500+ output[outPos++] = ' p' ;
501+ output[outPos++] = ' ;' ;
502+ }
503+ else if (c == ' <' )
504+ {
505+ // < (4 chars)
506+ if (outPos + 4 > limit) break ;
507+ output[outPos++] = ' &' ;
508+ output[outPos++] = ' l' ;
509+ output[outPos++] = ' t' ;
510+ output[outPos++] = ' ;' ;
511+ }
512+ else if (c == ' >' )
513+ {
514+ // > (4 chars)
515+ if (outPos + 4 > limit) break ;
516+ output[outPos++] = ' &' ;
517+ output[outPos++] = ' g' ;
518+ output[outPos++] = ' t' ;
519+ output[outPos++] = ' ;' ;
520+ }
521+ else if (c == ' "' )
522+ {
523+ // " (6 chars)
524+ if (outPos + 6 > limit) break ;
525+ output[outPos++] = ' &' ;
526+ output[outPos++] = ' q' ;
527+ output[outPos++] = ' u' ;
528+ output[outPos++] = ' o' ;
529+ output[outPos++] = ' t' ;
530+ output[outPos++] = ' ;' ;
531+ }
532+ else if (c == ' \' ' )
533+ {
534+ // ' (5 chars)
535+ if (outPos + 5 > limit) break ;
536+ output[outPos++] = ' &' ;
537+ output[outPos++] = ' #' ;
538+ output[outPos++] = ' 3' ;
539+ output[outPos++] = ' 9' ;
540+ output[outPos++] = ' ;' ;
541+ }
542+ else
543+ {
544+ output[outPos++] = c;
545+ }
546+ }
547+
548+ output[outPos] = ' \0 ' ;
549+ }
550+
475551bool SystemFunctions::progmemToBuffer (const char * progmemStr, char * buffer, size_t bufferSize)
476552{
477553 if (!progmemStr || !buffer || bufferSize == 0 )
0 commit comments