From ab7a81e79e4be4324a2d09d19d4f5249801ef665 Mon Sep 17 00:00:00 2001 From: Georg Richter Date: Sat, 30 Apr 2022 05:37:31 +0200 Subject: [PATCH] Added new macro OPT_SET_EXTENDED_VALUE_BIN OPT_SET_EXTENDED_VALUE_BIN can be used to set binary values for options: OPT_SET_EXTENDED_VALUE_BIN(options, key, key_len, val, len) --- libmariadb/mariadb_lib.c | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/libmariadb/mariadb_lib.c b/libmariadb/mariadb_lib.c index a650aad2..8dc2ec0e 100644 --- a/libmariadb/mariadb_lib.c +++ b/libmariadb/mariadb_lib.c @@ -674,6 +674,18 @@ struct st_default_options mariadb_defaults[] = (OPTS)->extension= (struct st_mysql_options_extension *) \ calloc(1, sizeof(struct st_mysql_options_extension)); +#define OPT_SET_EXTENDED_VALUE_BIN(OPTS, KEY, KEY_LEN, VAL, LEN) \ + CHECK_OPT_EXTENSION_SET(OPTS) \ + free((gptr)(OPTS)->extension->KEY); \ + if((VAL) && (LEN)) { \ + if (((OPTS)->extension->KEY= malloc((LEN)))) { \ + memcpy((OPTS)->extension->KEY, (VAL), (LEN)); \ + (OPTS)->extension->KEY_LEN= (LEN); \ + } \ + } \ + else \ + (OPTS)->extension->KEY= NULL + #define OPT_SET_EXTENDED_VALUE_STR(OPTS, KEY, VAL) \ CHECK_OPT_EXTENSION_SET(OPTS) \ free((gptr)(OPTS)->extension->KEY); \ @@ -3252,8 +3264,7 @@ mysql_optionsv(MYSQL *mysql,enum mysql_option option, ...) case MARIADB_OPT_PROXY_HEADER: { size_t arg2 = va_arg(ap, size_t); - OPT_SET_EXTENDED_VALUE_STR(&mysql->options, proxy_header, (char *)arg1); - OPT_SET_EXTENDED_VALUE(&mysql->options, proxy_header_len, arg2); + OPT_SET_EXTENDED_VALUE_BIN(&mysql->options, proxy_header, proxy_header_len, (char *)arg1, arg2); } break; case MARIADB_OPT_TLS_VERSION: