From 6dfdcc5d3de9547249d8dee4fb446f2505f68539 Mon Sep 17 00:00:00 2001 From: Zach Goldman Date: Wed, 21 Feb 2024 16:50:49 -0600 Subject: [PATCH] add support for boolean datatypes on mssql --- lib/rex/proto/mssql/client_mixin.rb | 20 +++++++++++++++++++- 1 file changed, 19 insertions(+), 1 deletion(-) diff --git a/lib/rex/proto/mssql/client_mixin.rb b/lib/rex/proto/mssql/client_mixin.rb index cc0aa7635ef15..5803d8c50e3c8 100644 --- a/lib/rex/proto/mssql/client_mixin.rb +++ b/lib/rex/proto/mssql/client_mixin.rb @@ -178,6 +178,14 @@ def mssql_parse_tds_reply(data, info) col[:id] = :int col[:int_size] = data.slice!(0, 1).unpack('C')[0] + when 50 + col[:id] = :sybbit + # col[:int_size] = data.slice!(0, 1).unpack('C')[0] + + when 104 + col[:id] = :bitntype + col[:int_size] = data.slice!(0, 1).unpack('C')[0] + when 127 col[:id] = :bigint @@ -292,6 +300,17 @@ def mssql_parse_tds_row(data, info) when :tinyint row << data.slice!(0, 1).unpack("C")[0] + when :bitntype + has_value = data.slice!(0, 1).unpack("C")[0] + if has_value == 0 + row << 'NULL' + else + row << data.slice!(0, 1).unpack("C")[0] + end + + when :sybbit + row << data.slice!(0, 1).unpack("C")[0] + when :image str = '' len = data.slice!(0, 1).unpack('C')[0] @@ -322,7 +341,6 @@ def mssql_parse_tds_row(data, info) info[:errors] << "unknown column type: #{col.inspect}" end end - info[:rows] << row info end