Browse Source

Null-terminate lcd_status_message

Scott Lahteine 7 years ago
parent
commit
25e3e62354
1 changed files with 4 additions and 3 deletions
  1. 4
    3
      Marlin/src/lcd/ultralcd.cpp

+ 4
- 3
Marlin/src/lcd/ultralcd.cpp View File

5172
 inline void pad_message_string() {
5172
 inline void pad_message_string() {
5173
   uint8_t i = 0, j = 0;
5173
   uint8_t i = 0, j = 0;
5174
   char c;
5174
   char c;
5175
+  lcd_status_message[MAX_MESSAGE_LENGTH] = '\0';
5175
   while ((c = lcd_status_message[i]) && j < LCD_WIDTH) {
5176
   while ((c = lcd_status_message[i]) && j < LCD_WIDTH) {
5176
     if (PRINTABLE(c)) j++;
5177
     if (PRINTABLE(c)) j++;
5177
     i++;
5178
     i++;
5221
 
5222
 
5222
 void lcd_setstatus(const char * const message, const bool persist) {
5223
 void lcd_setstatus(const char * const message, const bool persist) {
5223
   if (lcd_status_message_level > 0) return;
5224
   if (lcd_status_message_level > 0) return;
5224
-  strncpy(lcd_status_message, message, COUNT(lcd_status_message) - 1);
5225
+  strncpy(lcd_status_message, message, MAX_MESSAGE_LENGTH);
5225
   lcd_finishstatus(persist);
5226
   lcd_finishstatus(persist);
5226
 }
5227
 }
5227
 
5228
 
5229
   if (level < 0) level = lcd_status_message_level = 0;
5230
   if (level < 0) level = lcd_status_message_level = 0;
5230
   if (level < lcd_status_message_level) return;
5231
   if (level < lcd_status_message_level) return;
5231
   lcd_status_message_level = level;
5232
   lcd_status_message_level = level;
5232
-  strncpy_P(lcd_status_message, message, COUNT(lcd_status_message) - 1);
5233
+  strncpy_P(lcd_status_message, message, MAX_MESSAGE_LENGTH);
5233
   lcd_finishstatus(level > 0);
5234
   lcd_finishstatus(level > 0);
5234
 }
5235
 }
5235
 
5236
 
5238
   lcd_status_message_level = level;
5239
   lcd_status_message_level = level;
5239
   va_list args;
5240
   va_list args;
5240
   va_start(args, fmt);
5241
   va_start(args, fmt);
5241
-  vsnprintf_P(lcd_status_message, COUNT(lcd_status_message) - 1, fmt, args);
5242
+  vsnprintf_P(lcd_status_message, MAX_MESSAGE_LENGTH, fmt, args);
5242
   va_end(args);
5243
   va_end(args);
5243
   lcd_finishstatus(level > 0);
5244
   lcd_finishstatus(level > 0);
5244
 }
5245
 }

Loading…
Cancel
Save