mirror of
https://gitlab.isc.org/isc-projects/dhcp
synced 2025-08-22 01:49:35 +00:00
[master] Handle long commands in execute better
Use token_print_indent_concat() to write the comamnd in an execute statement to the lease file. This keeps the quotes with the command. When using token_print_indent() and passing the quotes as a prefix and suffix they could be discarded if the command was overly long.
This commit is contained in:
parent
1bfdeaaee9
commit
1d3fc4d0d8
4
RELNOTES
4
RELNOTES
@ -195,6 +195,10 @@ by Eric Young (eay@cryptsoft.com).
|
||||
- Add more option definitions.
|
||||
[ISC-Bugs #40562]
|
||||
|
||||
- Correct outputting of long lines in the lease file when writing
|
||||
a lease that includes long strings in an execute statement.
|
||||
[ISC-Bugs #40994]
|
||||
|
||||
Changes since 4.3.3b1
|
||||
|
||||
- None
|
||||
|
@ -3,7 +3,7 @@
|
||||
Support for executable statements. */
|
||||
|
||||
/*
|
||||
* Copyright (c) 2009,2013-2015 by Internet Systems Consortium, Inc. ("ISC")
|
||||
* Copyright (c) 2009,2013-2016 by Internet Systems Consortium, Inc. ("ISC")
|
||||
* Copyright (c) 2004-2007 by Internet Systems Consortium, Inc. ("ISC")
|
||||
* Copyright (c) 1998-2003 by Internet Software Consortium
|
||||
*
|
||||
@ -990,18 +990,25 @@ void write_statements (file, statements, indent)
|
||||
break;
|
||||
|
||||
case execute_statement:
|
||||
|
||||
#ifdef ENABLE_EXECUTE
|
||||
indent_spaces (file, indent);
|
||||
indent_spaces(file, indent);
|
||||
col = token_print_indent(file, indent + 4, indent + 4,
|
||||
"", "", "execute");
|
||||
col = token_print_indent(file, col, indent + 4, " ", "",
|
||||
"(");
|
||||
col = token_print_indent(file, col, indent + 4, "\"", "\"", r->data.execute.command);
|
||||
for (expr = r->data.execute.arglist; expr; expr = expr->data.arg.next) {
|
||||
col = token_print_indent(file, col, indent + 4, "", " ", ",");
|
||||
col = write_expression (file, expr->data.arg.val, col, indent + 4, 0);
|
||||
}
|
||||
(void) token_print_indent(file, col, indent + 4, "", "", ");");
|
||||
col = token_print_indent_concat(file, col, indent + 4,
|
||||
"", "", "\"",
|
||||
r->data.execute.command,
|
||||
"\"", (char *)0);
|
||||
for (expr = r->data.execute.arglist; expr; expr = expr->data.arg.next) {
|
||||
col = token_print_indent(file, col, indent + 4,
|
||||
"", " ", ",");
|
||||
col = write_expression(file, expr->data.arg.val,
|
||||
col, indent + 4, 0);
|
||||
}
|
||||
(void) token_print_indent(file, col, indent + 4,
|
||||
"", "", ");");
|
||||
#else /* !ENABLE_EXECUTE */
|
||||
log_fatal("Impossible case at %s:%d (ENABLE_EXECUTE "
|
||||
"is not defined).", MDL);
|
||||
|
Loading…
x
Reference in New Issue
Block a user