From 02b108635dc2a112bafb8f518719622b5bd69fb6 Mon Sep 17 00:00:00 2001 From: avsdev-cw Date: Wed, 7 Oct 2020 16:59:24 +0100 Subject: [PATCH] Better handling of blobs, query print length limited by compiler flag --- src/db_query.c | 9 ++++++++- src/db_value.c | 8 +++++--- 2 files changed, 13 insertions(+), 4 deletions(-) diff --git a/src/db_query.c b/src/db_query.c index ca12e13..fdf6131 100644 --- a/src/db_query.c +++ b/src/db_query.c @@ -13,12 +13,19 @@ #ifndef SQL_DEBUG_COLOUR # define SQL_DEBUG_COLOUR 36 #endif +#ifndef SQL_DEBUG_MAX_LEN +# define SQL_DEBUG_MAX_LEN 512 +#endif uint64_t simpleQuery(struct stored_conn_t *sconn, const char *qry, size_t qry_len) { #if defined DEBUG || defined SQL_DEBUG - printf("\x1b[%dm" "QRY: %s" "\x1b[0m" "\n", SQL_DEBUG_COLOUR, qry); + printf("\x1b[%dm" "QRY: %.*s%s" "\x1b[0m" "\n", + SQL_DEBUG_COLOUR, + SQL_DEBUG_MAX_LEN, qry, + (qry_len > SQL_DEBUG_MAX_LEN ? "..." : "") + ); #endif char *old_ptr; diff --git a/src/db_value.c b/src/db_value.c index eb80df4..45c5429 100644 --- a/src/db_value.c +++ b/src/db_value.c @@ -56,7 +56,9 @@ void db_value_sbva(str_builder *sb, e_column_type type, uint32_t n_args, va_list } if (type == TYPE_RAW) { - strbld_str(sb, va_arg(args, char *), va_arg(args, size_t)); + tmp_str = va_arg(args, char *); + tmp_len = va_arg(args, size_t); + strbld_str(sb, tmp_str, tmp_len); return; } @@ -113,7 +115,6 @@ void db_value_sbva(str_builder *sb, e_column_type type, uint32_t n_args, va_list strbld_str(sb, "NULL", 4); return; } - tmp_len = va_arg(args, size_t); esc_str = (char *)malloc(tmp_len * 2 + 1 + 2); @@ -121,11 +122,12 @@ void db_value_sbva(str_builder *sb, e_column_type type, uint32_t n_args, va_list fprintf(stderr, "[%d]malloc: (%d) %s\n", __LINE__, errno, strerror(errno)); return; } - esc_str[0] = '0'; esc_str[1] = 'x'; esc_len = mysql_hex_string(esc_str + 2, tmp_str, tmp_len); + strbld_str(sb, esc_str, esc_len); + free(esc_str); return; }