From 8e0e8939bad10c41beaff46443e2267e68743f9e Mon Sep 17 00:00:00 2001 From: Brian Neradt Date: Tue, 12 Apr 2022 16:06:18 +0000 Subject: [PATCH] Some review suggestions: 1. Add the binary to gitignore 2. Add a NOTE requesting changies to LogUtils.cc codes_to_escape to update the tool. 3. Convert escape_mapper to C++. --- .gitignore | 1 + proxy/logging/LogUtils.cc | 2 ++ tools/Makefile.am | 2 +- .../{escape_mapper.c => escape_mapper.cc} | 35 +++++++++++-------- 4 files changed, 24 insertions(+), 16 deletions(-) rename tools/escape_mapper/{escape_mapper.c => escape_mapper.cc} (59%) diff --git a/.gitignore b/.gitignore index 3f9ff12506f..cee67733ed4 100644 --- a/.gitignore +++ b/.gitignore @@ -199,6 +199,7 @@ CTAGS tools/http_load/http_load tools/jtest/jtest tools/trafficserver.pc +tools/escape_mapper/escape_mapper BUILDS DEBUG diff --git a/proxy/logging/LogUtils.cc b/proxy/logging/LogUtils.cc index 25fe6728a7a..ee64f32e942 100644 --- a/proxy/logging/LogUtils.cc +++ b/proxy/logging/LogUtils.cc @@ -296,6 +296,8 @@ escapify_url_common(Arena *arena, char *url, size_t len_in, int *len_out, char * // historically this is what the traffic_server has done. // Note that we leave codes beyond 127 unmodified. // + // NOTE: any updates to this table should result in an update to: + // tools/escape_mapper/escape_mapper.cc. static const unsigned char codes_to_escape[32] = { 0xFF, 0xFF, 0xFF, 0xFF, // control diff --git a/tools/Makefile.am b/tools/Makefile.am index 44a4191c275..135bed0a213 100644 --- a/tools/Makefile.am +++ b/tools/Makefile.am @@ -60,7 +60,7 @@ else noinst_PROGRAMS += escape_mapper/escape_mapper endif -escape_mapper_escape_mapper_SOURCES = escape_mapper/escape_mapper.c +escape_mapper_escape_mapper_SOURCES = escape_mapper/escape_mapper.cc all-am: Makefile $(PROGRAMS) $(SCRIPTS) $(DATA) @sed "s/ -fPIE//" tsxs > tsxs.new diff --git a/tools/escape_mapper/escape_mapper.c b/tools/escape_mapper/escape_mapper.cc similarity index 59% rename from tools/escape_mapper/escape_mapper.c rename to tools/escape_mapper/escape_mapper.cc index e43d4573bf6..fc8ca2505c3 100644 --- a/tools/escape_mapper/escape_mapper.c +++ b/tools/escape_mapper/escape_mapper.cc @@ -21,8 +21,9 @@ limitations under the License. */ -#include -#include +#include +#include +#include void add_mapping(unsigned char *table, char c) @@ -39,7 +40,7 @@ main(int argc, char *argv[]) { // only support a single arg that contains all the chars we wish to escapify if (argc > 1 && argc != 2) { - printf("Provide a single argument with a list of characters to add to the default encoding table\n"); + std::cerr << "Provide a single argument with a list of characters to add to the default encoding table." << std::endl; return (1); } @@ -48,33 +49,37 @@ main(int argc, char *argv[]) ' ', '"', '#', '%', '<', '>', '[', ']', '\\', '^', '`', '{', '|', '}', '~', 0x7F, }; - unsigned char escape_codes[32]; - memset(&escape_codes[0], 0, sizeof(escape_codes)); + unsigned char escape_codes[32] = {0}; // indexes 0-3 are marked as "control" for (int i = 0; i < 4; i++) { escape_codes[i] = 0xFF; } - for (unsigned long i = 0; i < sizeof(to_escape) / sizeof(to_escape[0]); i++) { - add_mapping(&escape_codes[0], to_escape[i]); + // add_mapping performs a logical or on the entries, so the above 0xFF values + // will persist. + for (auto char_to_escape : to_escape) { + add_mapping(&escape_codes[0], char_to_escape); } // add the chars specified in argv if (argc > 1) { - for (unsigned long i = 0; i < strlen(argv[1]); i++) { - printf("Adding %c to escape mapping table\n", argv[1][i]); - add_mapping(&escape_codes[0], argv[1][i]); + std::string_view escape_characters{argv[1]}; + for (auto const char_to_escape : escape_characters) { + std::cout << "Adding '" << char_to_escape << "' to escape mapping table." << std::endl; + add_mapping(&escape_codes[0], char_to_escape); } - - printf("\n"); + std::cout << std::endl; } - printf("%s Escape Mapping Table:\n", (argc > 1) ? "New" : "Default"); + std::string_view qualification{((argc > 1) ? "New" : "Default")}; + std::cout << qualification << " Escape Mapping Table:" << std::endl; for (unsigned long i = 0; i < sizeof(escape_codes) / sizeof(escape_codes[0]); i++) { - printf(" %2lu: %#04x\n", i, escape_codes[i]); + std::cout << std::dec << std::setfill(' ') << std::setw(4) << i << ": 0x"; + auto const escape_code = static_cast(escape_codes[i]); + std::cout << std::hex << std::uppercase << std::setfill('0') << std::setw(2) << escape_code << std::endl; } - return (0); + return 0; }