Skip to content

Commit 4b058a3

Browse files
committed
Revert "MDEV-36701 command line client doesn't check session_track information (fix)"
This reverts commit 3e43606. This caused Clang-18+ UBSAN errors: SUMMARY: UndefinedBehaviorSanitizer: function-type-mismatch libmariadb/libmariadb/mariadb_lib.c:2723:17 +/libmariadb/libmariadb/mariadb_lib.c:2628:3: runtime error: call to function status_info_cb(void*, enum_mariadb_status_info, enum_session_state_type, st_ma_const_string*) through pointer to incorrect function type 'void (*)(void *, enum enum_mariadb_status_info, ...)' +/client/mysql.cc:3204: note: status_info_cb(void*, enum_mariadb_status_info, enum_session_state_type, st_ma_const_string*) defined here Reviewer: Jimmy Hu <jimmy.hu@mariadb.com>
1 parent 4f1170d commit 4b058a3

File tree

1 file changed

+6
-3
lines changed

1 file changed

+6
-3
lines changed

client/mysql.cc

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3199,17 +3199,20 @@ static int reconnect(void)
31993199
}
32003200

32013201
#ifndef EMBEDDED_LIBRARY
3202-
static void status_info_cb(void *data, enum enum_mariadb_status_info type,
3203-
enum enum_session_state_type state_type, MARIADB_CONST_STRING *val)
3202+
static void status_info_cb(void *data, enum enum_mariadb_status_info type, ...)
32043203
{
3205-
if (type == SESSION_TRACK_TYPE && state_type == SESSION_TRACK_SCHEMA)
3204+
va_list ap;
3205+
va_start(ap, type);
3206+
if (type == SESSION_TRACK_TYPE && va_arg(ap, int) == SESSION_TRACK_SCHEMA)
32063207
{
3208+
MARIADB_CONST_STRING *val= va_arg(ap, MARIADB_CONST_STRING *);
32073209
my_free(current_db);
32083210
if (val->length)
32093211
current_db= my_strndup(PSI_NOT_INSTRUMENTED, val->str, val->length, MYF(MY_FAE));
32103212
else
32113213
current_db= NULL;
32123214
}
3215+
va_end(ap);
32133216
}
32143217
#else
32153218
#define mysql_optionsv(A,B,C,D) do { } while(0)

0 commit comments

Comments
 (0)