From 6dd6f5e962e927f43136dbda1748f201040c33ab Mon Sep 17 00:00:00 2001 From: James Peach Date: Mon, 21 Aug 2023 12:08:50 +1000 Subject: [PATCH] Make remap API compatibility checks consistent. Use an internal macro to make all the remap API compatibility checks consistent. For test plugins, where there's no risk of incompatibility, just assert that the API is compatible. This fixes #10222. Signed-off-by: James Peach --- example/plugins/c-api/remap/remap.cc | 5 ++- include/ts/Makefile.am | 3 +- include/ts/remap_version.h | 43 +++++++++++++++++++ plugins/background_fetch/background_fetch.cc | 14 +----- plugins/cache_promote/cache_promote.cc | 12 +----- .../cache_range_requests.cc | 13 +----- plugins/compress/compress.cc | 13 +----- plugins/experimental/cache_fill/cache_fill.cc | 14 +----- plugins/experimental/fq_pacing/fq_pacing.cc | 17 +------- plugins/experimental/geoip_acl/geoip_acl.cc | 13 +----- .../experimental/maxmind_acl/maxmind_acl.cc | 13 +----- .../experimental/money_trace/money_trace.cc | 13 +----- .../parent_select/parent_select.cc | 17 +------- plugins/experimental/rate_limit/rate_limit.cc | 13 +----- .../experimental/uri_signing/uri_signing.cc | 14 +----- plugins/experimental/url_sig/url_sig.cc | 13 +----- plugins/header_rewrite/header_rewrite.cc | 18 +------- plugins/regex_remap/regex_remap.cc | 13 +----- plugins/s3_auth/s3_auth.cc | 13 +----- .../gold_tests/pluginTest/tsapi/test_tsapi.cc | 10 ++--- tests/tools/plugins/user_args.cc | 18 ++------ 21 files changed, 86 insertions(+), 216 deletions(-) create mode 100644 include/ts/remap_version.h diff --git a/example/plugins/c-api/remap/remap.cc b/example/plugins/c-api/remap/remap.cc index f46991eda49..937655459ca 100644 --- a/example/plugins/c-api/remap/remap.cc +++ b/example/plugins/c-api/remap/remap.cc @@ -148,8 +148,9 @@ TSRemapInit(TSRemapInterface *api_info, char *errbuf, int errbuf_size) static_cast(api_info->size), static_cast(sizeof(TSRemapInterface))); } if (unlikely(api_info->tsremap_version < TSREMAP_VERSION)) { - return store_my_error_message(TS_ERROR, errbuf, errbuf_size, "Incorrect API version %d.%d", (api_info->tsremap_version >> 16), - (api_info->tsremap_version & 0xffff)); + return store_my_error_message(TS_ERROR, errbuf, errbuf_size, "Incorrect API version %d.%d", + static_cast(api_info->tsremap_version >> 16), + static_cast(api_info->tsremap_version & 0xffff)); } if (pthread_mutex_init(&remap_plugin_global_mutex, nullptr) || diff --git a/include/ts/Makefile.am b/include/ts/Makefile.am index f59de4e5ef4..ee500df4932 100644 --- a/include/ts/Makefile.am +++ b/include/ts/Makefile.am @@ -26,4 +26,5 @@ library_include_HEADERS = \ parentselectdefs.h noinst_HEADERS = \ - InkAPIPrivateIOCore.h + InkAPIPrivateIOCore.h \ + remap_version.h diff --git a/include/ts/remap_version.h b/include/ts/remap_version.h new file mode 100644 index 00000000000..b3e23142a69 --- /dev/null +++ b/include/ts/remap_version.h @@ -0,0 +1,43 @@ +/** @file + + Remap API version check. + + @section license License + + Licensed to the Apache Software Foundation (ASF) under one + or more contributor license agreements. See the NOTICE file + distributed with this work for additional information + regarding copyright ownership. The ASF licenses this file + to you under the Apache License, Version 2.0 (the + "License"); you may not use this file except in compliance + with the License. You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + */ + +#pragma once + +#define CHECK_REMAP_API_COMPATIBILITY(api_info, errbuf, errlen) \ + do { \ + if (api_info == nullptr) { \ + snprintf(errbuf, errlen, "Missing TSRemapInterface argument"); \ + return TS_ERROR; \ + } \ + if (api_info->size < sizeof(TSRemapInterface)) { \ + snprintf(errbuf, errlen, "Incorrect size (%zu) of TSRemapInterface structure, expected %zu", \ + static_cast(api_info->size), sizeof(TSRemapInterface)); \ + return TS_ERROR; \ + } \ + if (api_info->tsremap_version < TSREMAP_VERSION) { \ + snprintf(errbuf, errlen, "Incorrect API version %d.%d, expected %d.%d", static_cast(api_info->tsremap_version >> 16), \ + static_cast(api_info->tsremap_version & 0xffff), static_cast(TSREMAP_VMAJOR), \ + static_cast(TSREMAP_VMINOR)); \ + return TS_ERROR; \ + } \ + } while (0) diff --git a/plugins/background_fetch/background_fetch.cc b/plugins/background_fetch/background_fetch.cc index 0e1efc33e63..1b85ac2d877 100644 --- a/plugins/background_fetch/background_fetch.cc +++ b/plugins/background_fetch/background_fetch.cc @@ -34,6 +34,7 @@ #include "ts/ts.h" #include "ts/remap.h" +#include "ts/remap_version.h" #include "headers.h" #include "rules.h" #include "configs.h" @@ -594,18 +595,7 @@ TSPluginInit(int argc, const char *argv[]) TSReturnCode TSRemapInit(TSRemapInterface *api_info, char *errbuf, int errbuf_size) { - TSDebug(PLUGIN_NAME, "background fetch remap init"); - if (!api_info) { - strncpy(errbuf, "[tsremap_init] - Invalid TSRemapInterface argument", errbuf_size - 1); - return TS_ERROR; - } - - if (api_info->tsremap_version < TSREMAP_VERSION) { - snprintf(errbuf, errbuf_size, "[TSRemapInit] - Incorrect API version %ld.%ld", api_info->tsremap_version >> 16, - (api_info->tsremap_version & 0xffff)); - return TS_ERROR; - } - + CHECK_REMAP_API_COMPATIBILITY(api_info, errbuf, errbuf_size); TSDebug(PLUGIN_NAME, "background fetch remap is successfully initialized"); return TS_SUCCESS; } diff --git a/plugins/cache_promote/cache_promote.cc b/plugins/cache_promote/cache_promote.cc index aca0daf4d06..0580fb521aa 100644 --- a/plugins/cache_promote/cache_promote.cc +++ b/plugins/cache_promote/cache_promote.cc @@ -20,6 +20,7 @@ #include "ts/ts.h" #include "ts/remap.h" +#include "ts/remap_version.h" #include "policy_manager.h" #include "configs.h" @@ -115,16 +116,7 @@ cont_handle_policy(TSCont contp, TSEvent event, void *edata) TSReturnCode TSRemapInit(TSRemapInterface *api_info, char *errbuf, int errbuf_size) { - if (api_info->size < sizeof(TSRemapInterface)) { - strncpy(errbuf, "[tsremap_init] - Incorrect size of TSRemapInterface structure", errbuf_size - 1); - return TS_ERROR; - } - - if (api_info->tsremap_version < TSREMAP_VERSION) { - snprintf(errbuf, errbuf_size, "[tsremap_init] - Incorrect API version %ld.%ld", api_info->tsremap_version >> 16, - (api_info->tsremap_version & 0xffff)); - return TS_ERROR; - } + CHECK_REMAP_API_COMPATIBILITY(api_info, errbuf, errbuf_size); // Reserve a TXN slot for storing the calculated URL hash key if (TS_SUCCESS != TSUserArgIndexReserve(TS_USER_ARGS_TXN, PLUGIN_NAME, "cache_promote URL hash key", &TXN_ARG_IDX)) { diff --git a/plugins/cache_range_requests/cache_range_requests.cc b/plugins/cache_range_requests/cache_range_requests.cc index fc979c97693..73bdb586b78 100644 --- a/plugins/cache_range_requests/cache_range_requests.cc +++ b/plugins/cache_range_requests/cache_range_requests.cc @@ -28,6 +28,7 @@ #include "ts/ts.h" #include "ts/remap.h" +#include "ts/remap_version.h" #include #include @@ -629,17 +630,7 @@ transaction_handler(TSCont contp, TSEvent event, void *edata) TSReturnCode TSRemapInit(TSRemapInterface *api_info, char *errbuf, int errbuf_size) { - if (!api_info) { - strncpy(errbuf, "[tsremap_init] - Invalid TSRemapInterface argument", errbuf_size - 1); - return TS_ERROR; - } - - if (api_info->tsremap_version < TSREMAP_VERSION) { - snprintf(errbuf, errbuf_size, "[TSRemapInit] - Incorrect API version %ld.%ld", api_info->tsremap_version >> 16, - (api_info->tsremap_version & 0xffff)); - return TS_ERROR; - } - + CHECK_REMAP_API_COMPATIBILITY(api_info, errbuf, errbuf_size); DEBUG_LOG("cache_range_requests remap is successfully initialized."); return TS_SUCCESS; } diff --git a/plugins/compress/compress.cc b/plugins/compress/compress.cc index ecfd534dc5b..a393fbf1973 100644 --- a/plugins/compress/compress.cc +++ b/plugins/compress/compress.cc @@ -37,6 +37,7 @@ #include "misc.h" #include "configuration.h" #include "ts/remap.h" +#include "ts/remap_version.h" using namespace std; using namespace Gzip; @@ -1048,17 +1049,7 @@ TSPluginInit(int argc, const char *argv[]) TSReturnCode TSRemapInit(TSRemapInterface *api_info, char *errbuf, int errbuf_size) { - if (!api_info) { - strncpy(errbuf, "[tsremap_init] - Invalid TSRemapInterface argument", errbuf_size - 1); - return TS_ERROR; - } - - if (api_info->tsremap_version < TSREMAP_VERSION) { - snprintf(errbuf, errbuf_size, "[TSRemapInit] - Incorrect API version %ld.%ld", api_info->tsremap_version >> 16, - (api_info->tsremap_version & 0xffff)); - return TS_ERROR; - } - + CHECK_REMAP_API_COMPATIBILITY(api_info, errbuf, errbuf_size); info("The compress plugin is successfully initialized"); return TS_SUCCESS; } diff --git a/plugins/experimental/cache_fill/cache_fill.cc b/plugins/experimental/cache_fill/cache_fill.cc index 1ff2a5244a2..151cb8bb748 100644 --- a/plugins/experimental/cache_fill/cache_fill.cc +++ b/plugins/experimental/cache_fill/cache_fill.cc @@ -37,6 +37,7 @@ #include "ts/ts.h" #include "ts/remap.h" +#include "ts/remap_version.h" #include "background_fetch.h" static const char * @@ -135,18 +136,7 @@ cont_handle_cache(TSCont contp, TSEvent event, void *edata) TSReturnCode TSRemapInit(TSRemapInterface *api_info, char *errbuf, int errbuf_size) { - TSDebug(PLUGIN_NAME, "cache fill remap init"); - if (!api_info) { - strncpy(errbuf, "[tsremap_init] - Invalid TSRemapInterface argument", errbuf_size - 1); - return TS_ERROR; - } - - if (api_info->tsremap_version < TSREMAP_VERSION) { - snprintf(errbuf, errbuf_size, "[TSRemapInit] - Incorrect API version %ld.%ld", api_info->tsremap_version >> 16, - (api_info->tsremap_version & 0xffff)); - return TS_ERROR; - } - + CHECK_REMAP_API_COMPATIBILITY(api_info, errbuf, errbuf_size); TSDebug(PLUGIN_NAME, "cache fill remap is successfully initialized"); return TS_SUCCESS; } diff --git a/plugins/experimental/fq_pacing/fq_pacing.cc b/plugins/experimental/fq_pacing/fq_pacing.cc index 4cc916808b0..68663485f9b 100644 --- a/plugins/experimental/fq_pacing/fq_pacing.cc +++ b/plugins/experimental/fq_pacing/fq_pacing.cc @@ -23,6 +23,7 @@ #include #include #include +#include #include #include @@ -97,21 +98,7 @@ TSPluginInit(int argc, const char *argv[]) TSReturnCode TSRemapInit(TSRemapInterface *api_info, char *errbuf, int errbuf_size) { - if (!api_info) { - strncpy(errbuf, "[fq_pacing] - Invalid TSRemapInterface argument", (size_t)(errbuf_size - 1)); - return TS_ERROR; - } - - if (api_info->size < sizeof(TSRemapInterface)) { - strncpy(errbuf, "[TSRemapInit] - Incorrect size of TSRemapInterface structure", errbuf_size - 1); - return TS_ERROR; - } - - if (api_info->tsremap_version < TSREMAP_VERSION) { - snprintf(errbuf, errbuf_size - 1, "[TSRemapInit] - Incorrect API version %ld.%ld", api_info->tsremap_version >> 16, - (api_info->tsremap_version & 0xffff)); - return TS_ERROR; - } + CHECK_REMAP_API_COMPATIBILITY(api_info, errbuf, errbuf_size); if (!fq_is_default_qdisc()) { snprintf(errbuf, errbuf_size - 1, "[TSRemapInit] - fq qdisc is not active"); diff --git a/plugins/experimental/geoip_acl/geoip_acl.cc b/plugins/experimental/geoip_acl/geoip_acl.cc index d87d8c6cad6..5ccfe7ae853 100644 --- a/plugins/experimental/geoip_acl/geoip_acl.cc +++ b/plugins/experimental/geoip_acl/geoip_acl.cc @@ -22,6 +22,7 @@ // #include #include +#include #include #include @@ -34,17 +35,7 @@ TSReturnCode TSRemapInit(TSRemapInterface *api_info, char *errbuf, int errbuf_size) { - if (api_info->size < sizeof(TSRemapInterface)) { - strncpy(errbuf, "[tsremap_init] - Incorrect size of TSRemapInterface structure", errbuf_size - 1); - return TS_ERROR; - } - - if (api_info->tsremap_version < TSREMAP_VERSION) { - snprintf(errbuf, errbuf_size, "[tsremap_init] - Incorrect API version %ld.%ld", api_info->tsremap_version >> 16, - (api_info->tsremap_version & 0xffff)); - return TS_ERROR; - } - + CHECK_REMAP_API_COMPATIBILITY(api_info, errbuf, errbuf_size); if (Acl::init()) { TSDebug(PLUGIN_NAME, "remap plugin is successfully initialized"); return TS_SUCCESS; /* success */ diff --git a/plugins/experimental/maxmind_acl/maxmind_acl.cc b/plugins/experimental/maxmind_acl/maxmind_acl.cc index b3e4a355e09..d6aaa476e7f 100644 --- a/plugins/experimental/maxmind_acl/maxmind_acl.cc +++ b/plugins/experimental/maxmind_acl/maxmind_acl.cc @@ -17,6 +17,7 @@ */ #include "mmdb.h" +#include "ts/remap_version.h" /////////////////////////////////////////////////////////////////////////////// // Initialize the plugin as a remap plugin. @@ -24,17 +25,7 @@ TSReturnCode TSRemapInit(TSRemapInterface *api_info, char *errbuf, int errbuf_size) { - if (api_info->size < sizeof(TSRemapInterface)) { - strncpy(errbuf, "[tsremap_init] - Incorrect size of TSRemapInterface structure", errbuf_size - 1); - return TS_ERROR; - } - - if (api_info->tsremap_version < TSREMAP_VERSION) { - snprintf(errbuf, errbuf_size, "[tsremap_init] - Incorrect API version %ld.%ld", api_info->tsremap_version >> 16, - (api_info->tsremap_version & 0xffff)); - return TS_ERROR; - } - + CHECK_REMAP_API_COMPATIBILITY(api_info, errbuf, errbuf_size); TSDebug(PLUGIN_NAME, "remap plugin is successfully initialized"); return TS_SUCCESS; } diff --git a/plugins/experimental/money_trace/money_trace.cc b/plugins/experimental/money_trace/money_trace.cc index 5ab8c29e711..7c0aa4e27ab 100644 --- a/plugins/experimental/money_trace/money_trace.cc +++ b/plugins/experimental/money_trace/money_trace.cc @@ -20,6 +20,7 @@ #include "tscpp/util/ts_bw_format.h" #include "ts/ts.h" #include "ts/remap.h" +#include "ts/remap_version.h" #include #include @@ -544,17 +545,7 @@ global_request_header_hook(TSCont const contp, TSEvent const event, void *const TSReturnCode TSRemapInit(TSRemapInterface *api_info, char *errbuf, int errbuf_size) { - if (!api_info) { - strncpy(errbuf, "[tsremap_init] - Invalid TSRemapInterface argument", errbuf_size - 1); - return TS_ERROR; - } - - if (api_info->tsremap_version < TSREMAP_VERSION) { - snprintf(errbuf, errbuf_size, "[TSRemapInit] - Incorrect API version %ld.%ld", api_info->tsremap_version >> 16, - (api_info->tsremap_version & 0xffff)); - return TS_ERROR; - } - + CHECK_REMAP_API_COMPATIBILITY(api_info, errbuf, errbuf_size); LOG_DEBUG("money_trace remap is successfully initialized."); return TS_SUCCESS; diff --git a/plugins/experimental/parent_select/parent_select.cc b/plugins/experimental/parent_select/parent_select.cc index 10b9a6d064c..c929f4993a1 100644 --- a/plugins/experimental/parent_select/parent_select.cc +++ b/plugins/experimental/parent_select/parent_select.cc @@ -34,6 +34,7 @@ #include "ts/ts.h" #include "ts/remap.h" #include "ts/parentselectdefs.h" +#include "ts/remap_version.h" #include "consistenthash_config.h" #include "strategy.h" @@ -233,21 +234,7 @@ handle_hook(TSCont contp, TSEvent event, void *edata) TSReturnCode TSRemapInit(TSRemapInterface *api_info, char *errbuf, int errbuf_size) { - TSDebug(PLUGIN_NAME, "TSRemapInit calling"); - - // TODO add ATS API Version check here, to bail if ATS doesn't support the version necessary for strategy plugins - - if (!api_info) { - strncpy(errbuf, "[tsstrategy_init] - Invalid TSRemapInterface argument", errbuf_size - 1); - return TS_ERROR; - } - - if (api_info->tsremap_version < TSREMAP_VERSION) { - snprintf(errbuf, errbuf_size, "[TSStrategyInit] - Incorrect API version %ld.%ld", api_info->tsremap_version >> 16, - (api_info->tsremap_version & 0xffff)); - return TS_ERROR; - } - + CHECK_REMAP_API_COMPATIBILITY(api_info, errbuf, errbuf_size); TSDebug(PLUGIN_NAME, "Remap successfully initialized"); return TS_SUCCESS; } diff --git a/plugins/experimental/rate_limit/rate_limit.cc b/plugins/experimental/rate_limit/rate_limit.cc index 7dc8ab3db01..cb759d77f81 100644 --- a/plugins/experimental/rate_limit/rate_limit.cc +++ b/plugins/experimental/rate_limit/rate_limit.cc @@ -21,6 +21,7 @@ #include "ts/ts.h" #include "ts/remap.h" +#include "ts/remap_version.h" #include "tscore/ink_config.h" #include "txn_limiter.h" #include "utilities.h" @@ -92,17 +93,7 @@ TSPluginInit(int argc, const char *argv[]) TSReturnCode TSRemapInit(TSRemapInterface *api_info, char *errbuf, int errbuf_size) { - if (!api_info) { - strncpy(errbuf, "[tsremap_init] - Invalid TSRemapInterface argument", errbuf_size - 1); - return TS_ERROR; - } - - if (api_info->tsremap_version < TSREMAP_VERSION) { - snprintf(errbuf, errbuf_size - 1, "[TSRemapInit] - Incorrect API version %ld.%ld", api_info->tsremap_version >> 16, - (api_info->tsremap_version & 0xffff)); - return TS_ERROR; - } - + CHECK_REMAP_API_COMPATIBILITY(api_info, errbuf, errbuf_size); TSDebug(PLUGIN_NAME, "plugin is successfully initialized"); return TS_SUCCESS; } diff --git a/plugins/experimental/uri_signing/uri_signing.cc b/plugins/experimental/uri_signing/uri_signing.cc index aab4aa24744..d1280245ca9 100644 --- a/plugins/experimental/uri_signing/uri_signing.cc +++ b/plugins/experimental/uri_signing/uri_signing.cc @@ -23,6 +23,7 @@ #include "timing.h" #include +#include #include #include @@ -35,18 +36,7 @@ TSReturnCode TSRemapInit(TSRemapInterface *api_info, char *errbuf, int errbuf_size) { - if (!api_info) { - strncpy(errbuf, "[tsremap_init] - Invalid TSRemapInterface argument", (size_t)(errbuf_size - 1)); - return TS_ERROR; - } - - if (api_info->tsremap_version < TSREMAP_VERSION) { - snprintf(errbuf, errbuf_size, "[TSRemapInit] - Incorrect API version %ld.%ld", api_info->tsremap_version >> 16, - (api_info->tsremap_version & 0xffff)); - return TS_ERROR; - } - - TSDebug(PLUGIN_NAME, "plugin is successfully initialized"); + CHECK_REMAP_API_COMPATIBILITY(api_info, errbuf, errbuf_size); return TS_SUCCESS; } diff --git a/plugins/experimental/url_sig/url_sig.cc b/plugins/experimental/url_sig/url_sig.cc index bc5a31dcf1e..6d29442da03 100644 --- a/plugins/experimental/url_sig/url_sig.cc +++ b/plugins/experimental/url_sig/url_sig.cc @@ -49,6 +49,7 @@ #include #include +#include static const char PLUGIN_NAME[] = "url_sig"; @@ -88,17 +89,7 @@ free_cfg(struct config *cfg) TSReturnCode TSRemapInit(TSRemapInterface *api_info, char *errbuf, int errbuf_size) { - if (!api_info) { - snprintf(errbuf, errbuf_size, "[tsremap_init] - Invalid TSRemapInterface argument"); - return TS_ERROR; - } - - if (api_info->tsremap_version < TSREMAP_VERSION) { - snprintf(errbuf, errbuf_size, "[TSRemapInit] - Incorrect API version %ld.%ld", api_info->tsremap_version >> 16, - (api_info->tsremap_version & 0xffff)); - return TS_ERROR; - } - + CHECK_REMAP_API_COMPATIBILITY(api_info, errbuf, errbuf_size); TSDebug(PLUGIN_NAME, "plugin is successfully initialized"); return TS_SUCCESS; } diff --git a/plugins/header_rewrite/header_rewrite.cc b/plugins/header_rewrite/header_rewrite.cc index 592f2a0cff6..3bb3bf9ddd7 100644 --- a/plugins/header_rewrite/header_rewrite.cc +++ b/plugins/header_rewrite/header_rewrite.cc @@ -24,6 +24,7 @@ #include "ts/ts.h" #include "ts/remap.h" +#include "ts/remap_version.h" #include "parser.h" #include "ruleset.h" @@ -386,22 +387,7 @@ TSPluginInit(int argc, const char *argv[]) TSReturnCode TSRemapInit(TSRemapInterface *api_info, char *errbuf, int errbuf_size) { - if (!api_info) { - strncpy(errbuf, "[TSRemapInit] - Invalid TSRemapInterface argument", errbuf_size - 1); - return TS_ERROR; - } - - if (api_info->size < sizeof(TSRemapInterface)) { - strncpy(errbuf, "[TSRemapInit] - Incorrect size of TSRemapInterface structure", errbuf_size - 1); - return TS_ERROR; - } - - if (api_info->tsremap_version < TSREMAP_VERSION) { - snprintf(errbuf, errbuf_size, "[TSRemapInit] - Incorrect API version %ld.%ld", api_info->tsremap_version >> 16, - (api_info->tsremap_version & 0xffff)); - return TS_ERROR; - } - + CHECK_REMAP_API_COMPATIBILITY(api_info, errbuf, errbuf_size); TSDebug(PLUGIN_NAME, "Remap plugin is successfully initialized"); return TS_SUCCESS; diff --git a/plugins/regex_remap/regex_remap.cc b/plugins/regex_remap/regex_remap.cc index aae45e7b506..bee814c2e84 100644 --- a/plugins/regex_remap/regex_remap.cc +++ b/plugins/regex_remap/regex_remap.cc @@ -22,6 +22,7 @@ */ #include "ts/ts.h" #include "ts/remap.h" +#include "ts/remap_version.h" #include #include @@ -644,17 +645,7 @@ struct RemapInstance { TSReturnCode TSRemapInit(TSRemapInterface *api_info, char *errbuf, int errbuf_size) { - if (!api_info) { - strncpy(errbuf, "[tsremap_init] - Invalid TSRemapInterface argument", errbuf_size - 1); - return TS_ERROR; - } - - if (api_info->tsremap_version < TSREMAP_VERSION) { - snprintf(errbuf, errbuf_size, "[TSRemapInit] - Incorrect API version %ld.%ld", api_info->tsremap_version >> 16, - (api_info->tsremap_version & 0xffff)); - return TS_ERROR; - } - + CHECK_REMAP_API_COMPATIBILITY(api_info, errbuf, errbuf_size); TSDebug(PLUGIN_NAME, "Plugin is successfully initialized"); return TS_SUCCESS; } diff --git a/plugins/s3_auth/s3_auth.cc b/plugins/s3_auth/s3_auth.cc index aeb5132e970..cedc2e8e146 100644 --- a/plugins/s3_auth/s3_auth.cc +++ b/plugins/s3_auth/s3_auth.cc @@ -46,6 +46,7 @@ #include #include +#include #include #include "tscore/ink_config.h" #include "swoc/TextView.h" @@ -1093,17 +1094,7 @@ config_reloader(TSCont cont, TSEvent event, void *edata) TSReturnCode TSRemapInit(TSRemapInterface *api_info, char *errbuf, int errbuf_size) { - if (!api_info) { - strncpy(errbuf, "[tsremap_init] - Invalid TSRemapInterface argument", errbuf_size - 1); - return TS_ERROR; - } - - if (api_info->tsremap_version < TSREMAP_VERSION) { - snprintf(errbuf, errbuf_size, "[TSRemapInit] - Incorrect API version %ld.%ld", api_info->tsremap_version >> 16, - (api_info->tsremap_version & 0xffff)); - return TS_ERROR; - } - + CHECK_REMAP_API_COMPATIBILITY(api_info, errbuf, errbuf_size); TSDebug(PLUGIN_NAME, "plugin is successfully initialized"); return TS_SUCCESS; } diff --git a/tests/gold_tests/pluginTest/tsapi/test_tsapi.cc b/tests/gold_tests/pluginTest/tsapi/test_tsapi.cc index bb895beae75..ca469a19939 100644 --- a/tests/gold_tests/pluginTest/tsapi/test_tsapi.cc +++ b/tests/gold_tests/pluginTest/tsapi/test_tsapi.cc @@ -260,13 +260,9 @@ TSRemapInit(TSRemapInterface *api_info, char *errbuf, int errbuf_size) { TSDbg(dbg_ctl, "TSRemapInit()"); - TSReleaseAssert(api_info && errbuf && errbuf_size); - - if (api_info->tsremap_version < TSREMAP_VERSION) { - std::snprintf(errbuf, errbuf_size, "Incorrect API version %ld.%ld", api_info->tsremap_version >> 16, - (api_info->tsremap_version & 0xffff)); - return TS_ERROR; - } + TSReleaseAssert(api_info != nullptr); + TSReleaseAssert(api_info->size == sizeof(TSRemapInterface)); + TSReleaseAssert(api_info->tsremap_version == TSREMAP_VERSION); const char *fileSpec = std::getenv("OUTPUT_FILE"); diff --git a/tests/tools/plugins/user_args.cc b/tests/tools/plugins/user_args.cc index c02d4e739fd..4eaa9aa9af9 100644 --- a/tests/tools/plugins/user_args.cc +++ b/tests/tools/plugins/user_args.cc @@ -130,21 +130,9 @@ TSPluginInit(int argc, const char *argv[]) TSReturnCode TSRemapInit(TSRemapInterface *api_info, char *errbuf, int errbuf_size) { - if (!api_info) { - strncpy(errbuf, "[TSRemapInit] - Invalid TSRemapInterface argument", errbuf_size - 1); - return TS_ERROR; - } - - if (api_info->size < sizeof(TSRemapInterface)) { - strncpy(errbuf, "[TSRemapInit] - Incorrect size of TSRemapInterface structure", errbuf_size - 1); - return TS_ERROR; - } - - if (api_info->tsremap_version < TSREMAP_VERSION) { - snprintf(errbuf, errbuf_size, "[TSRemapInit] - Incorrect API version %ld.%ld", api_info->tsremap_version >> 16, - (api_info->tsremap_version & 0xffff)); - return TS_ERROR; - } + TSReleaseAssert(api_info != nullptr); + TSReleaseAssert(api_info->size == sizeof(TSRemapInterface)); + TSReleaseAssert(api_info->tsremap_version == TSREMAP_VERSION); return TS_SUCCESS; }