Browse Source

Fix process_injected_command undefined behavior (#14602)

pull/1/head
Marcio Teixeira 5 years ago
committed by Scott Lahteine
parent
commit
cbe4bf2ba8
  1. 7
      Marlin/src/gcode/queue.cpp

7
Marlin/src/gcode/queue.cpp

@ -170,16 +170,19 @@ bool GCodeQueue::process_injected_command() {
char c; char c;
size_t i = 0; size_t i = 0;
while ((c = pgm_read_byte(&injected_commands_P[i])) && c != '\n') i++; while ((c = pgm_read_byte(&injected_commands_P[i])) && c != '\n') i++;
if (i) {
// Extract current command and move pointer to next command
char cmd[i + 1]; char cmd[i + 1];
memcpy_P(cmd, injected_commands_P, i); memcpy_P(cmd, injected_commands_P, i);
cmd[i] = '\0'; cmd[i] = '\0';
injected_commands_P = c ? injected_commands_P + i + 1 : nullptr;
// Execute command if non-blank
if (i) {
parser.parse(cmd); parser.parse(cmd);
PORT_REDIRECT(SERIAL_PORT); PORT_REDIRECT(SERIAL_PORT);
gcode.process_parsed_command(); gcode.process_parsed_command();
} }
injected_commands_P = c ? injected_commands_P + i + 1 : nullptr;
return true; return true;
} }

Loading…
Cancel
Save