Skip to content
Merged
Show file tree
Hide file tree
Changes from 18 commits
Commits
Show all changes
52 commits
Select commit Hold shift + click to select a range
afc8b2f
[SNOW-2316658] updated json_copy_string() to include session token an…
sfc-gh-ext-simba-gc Sep 20, 2025
cf8edee
[SNOW-2316658] fixed the session token leak from stderr
sfc-gh-ext-simba-gc Oct 10, 2025
154f7a0
[SNOW-2316658] fixed the segfault coming from fixing session token in…
sfc-gh-ext-simba-gc Oct 14, 2025
cb3dc9c
[SNOW-2316658] cleaned up code and getting ready for draft PR
sfc-gh-ext-simba-gc Oct 15, 2025
6fc0ec3
Merge branch 'master' into SNOW-2316658-sessionToken
sfc-gh-ext-simba-gc Oct 15, 2025
899ad0a
[SNOW-2316658] confirmed that CURL Session Tokens patterns can be mer…
sfc-gh-ext-simba-gc Oct 17, 2025
586236e
[SNOW-2316658] added test case for Snowflake token and old session to…
sfc-gh-ext-simba-gc Oct 20, 2025
eab9445
[SNOW-2316658] allocated space for string and updated param name
sfc-gh-ext-simba-gc Oct 20, 2025
b0d432c
Merge branch 'master' into SNOW-2316658-sessionToken
sfc-gh-ext-simba-gc Oct 21, 2025
91ec12e
[SNOW-2316658] updated src code to include statically allocated maske…
sfc-gh-ext-simba-gc Oct 23, 2025
9e5f30c
[SNOW-2316658] tweaking the test for terminal mask
sfc-gh-ext-simba-gc Oct 25, 2025
dc76f70
[SNOW-2316658] verified that terminal_mask tests are working
sfc-gh-ext-simba-gc Oct 26, 2025
b8fd28d
[SNOW-2316658] 1 of 4 test cases completed for my_trace()
sfc-gh-ext-simba-gc Oct 27, 2025
1a4a9c3
[SNOW-2316658] realized that I've missed a test case for test_termina…
sfc-gh-ext-simba-gc Oct 27, 2025
3a7ff95
[SNOW-2316658] cleaned up SFLogger.cpp and http_perform.c for review
sfc-gh-ext-simba-gc Oct 30, 2025
76dc64f
Merge branch 'master' into SNOW-2316658-sessionToken
sfc-gh-ext-simba-gc Oct 30, 2025
5ed86e0
[SNOW-2316658] currently all the test cases are working as expected
sfc-gh-ext-simba-gc Oct 30, 2025
6dfa877
Merge branch 'SNOW-2316658-sessionToken' of https://github.com/snowfl…
sfc-gh-ext-simba-gc Oct 30, 2025
27ab9ca
[SNOW-2316658] updated terminal_mask() based on Harry's comments
sfc-gh-ext-simba-gc Oct 30, 2025
63636fb
[SNOW-2316658] test_mask_stderr() is stable with current abstraction.…
sfc-gh-ext-simba-gc Oct 30, 2025
eaed75a
[SNOW-2316658] cleaned up unit test code for draft PR
sfc-gh-ext-simba-gc Oct 30, 2025
8094e28
Merge branch 'master' into SNOW-2316658-sessionToken
sfc-gh-ext-simba-gc Oct 30, 2025
fe5f456
[SNOW-2316658] updated files based on fail git builds
sfc-gh-ext-simba-gc Nov 4, 2025
af35d96
[SNOW-2316658] cleaned up code
sfc-gh-ext-simba-gc Nov 4, 2025
417b15a
[SNOW-2316658] Updates these files based on the latest comments and e…
sfc-gh-ext-simba-gc Nov 6, 2025
cf68ba3
Merge branch 'master' into SNOW-2316658-sessionToken
sfc-gh-ext-simba-gc Nov 6, 2025
ef19058
[SNOW-2316658] removed leading spaces that were added in
sfc-gh-ext-simba-gc Nov 6, 2025
a39fc88
[SNOW-23166598] another round of udpates based on Harry's comments an…
sfc-gh-ext-simba-gc Nov 6, 2025
93e3ddf
[SNOW-2316658] removed whitespace in between function parameter and b…
sfc-gh-ext-simba-gc Nov 7, 2025
6360d7c
[SNOW-2316658] updated macro to enable cross-platform support for fileno
sfc-gh-ext-simba-gc Nov 7, 2025
e8bc6d2
[SNOW-2316658] added preprocessor definition for NIX system usage of …
sfc-gh-ext-simba-gc Nov 7, 2025
a0cd708
[SNOW-2316658] updated how curl info header is passed in
sfc-gh-ext-simba-gc Nov 7, 2025
d9f38d3
[SNOW-2316658] updating preprocessing macros for unit logger
sfc-gh-ext-simba-gc Nov 7, 2025
0b986e9
[SNOW-2316658] updated macros again
sfc-gh-ext-simba-gc Nov 7, 2025
6f278d9
[SNOW-2316658] updated files based on clarifications with Harry
sfc-gh-ext-simba-gc Nov 8, 2025
c558034
[SNOW-2316658] removed test_mask_stderr from unit logger as it was cr…
sfc-gh-ext-simba-gc Nov 8, 2025
78dfcec
[SNOW-2316658] forgot to remove the problematic include
sfc-gh-ext-simba-gc Nov 8, 2025
7c0ba8b
[SNOW-2316658] removed includes that are no longer necessary
sfc-gh-ext-simba-gc Nov 8, 2025
ce060d9
[SNOW-2316658] cleaned up code and ready for another round of draft P…
sfc-gh-ext-simba-gc Nov 8, 2025
db91fb0
Merge branch 'master' into SNOW-2316658-sessionToken
sfc-gh-ext-simba-gc Nov 12, 2025
9da1243
Merge branch 'master' into SNOW-2316658-sessionToken
sfc-gh-ext-simba-gc Nov 12, 2025
ee48e66
[SNOW-2316658] updated termianl mask based on Harry's latest round of…
sfc-gh-ext-simba-gc Nov 12, 2025
4c6713a
[SNOW-2316658] cleaned up code after last round of review
sfc-gh-ext-simba-gc Nov 12, 2025
13d43c2
[SNOW-2316658] updated based on Harry's last round of comments
sfc-gh-ext-simba-gc Nov 13, 2025
6dd6985
[SNOW-2316658] removed whitespace
sfc-gh-ext-simba-gc Nov 13, 2025
69c2118
[SNOW-2316658] updated based on Harry's last comments
sfc-gh-ext-simba-gc Nov 13, 2025
2672a41
Merge branch 'master' into SNOW-2316658-sessionToken
sfc-gh-ext-simba-gc Nov 13, 2025
0b7b854
Merge branch 'master' into SNOW-2316658-sessionToken
sfc-gh-ext-simba-gc Nov 14, 2025
915cfa6
Merge branch 'master' into SNOW-2316658-sessionToken
sfc-gh-ext-simba-gc Nov 20, 2025
94a4af3
Merge branch 'master' into SNOW-2316658-sessionToken
sfc-gh-ext-simba-hx Nov 26, 2025
241a773
address review comments
sfc-gh-ext-simba-hx Nov 26, 2025
c05b36a
fix build error
sfc-gh-ext-simba-hx Nov 26, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
29 changes: 29 additions & 0 deletions cpp/logger/SFLogger.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,35 @@ void log_masked_va_list(FILE* fp, const char *fmt, va_list args)
sf_fprintf(fp, "%s", maskedMsg.c_str());
}

void terminal_mask(char *in_data, size_t datasize, char *out_masked, size_t masked_size){
if(in_data == NULL && in_data[0] == '\0'){
log_error("Error in masking text on terminal; in_data is not valid \n");
return;
}
if(datasize == 0){
log_error("Error in masking text on terminal; size of data_in buffer is 0 \n");
return;
}
if(out_masked == NULL){
log_error("Error in masking text on terminal; data_out is not valid \n");
return;
}
if(masked_size == 0){
log_error("Error in masking text on terminal; size of data_out is 0 \n");
return;
}
strncpy(out_masked, in_data, datasize);
std::string text(out_masked);
std::string maskedMsg = Snowflake::Client::SecretDetector::maskSecrets(text);
if(datasize <= masked_size){
std::memset(out_masked, 0, masked_size);
std::strncpy(out_masked, maskedMsg.c_str(), maskedMsg.length());
} else {
log_error("Error in masking text on terminal; check buffer size\n");
}

}

std::string Snowflake::Client::SFLogger::getMaskedMsg(const char* fmt, ...)
{
va_list args;
Expand Down
4 changes: 2 additions & 2 deletions cpp/logger/SecretDetector.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ namespace Client

boost::regex SecretDetector::ENCRYPTION_CREDS_IN_JSON_PATTERN = boost::regex("\"(encryptionMaterial|creds)\"\\s*:\\s*\\{.*?\\}", boost::regex::icase);

boost::regex SecretDetector::TOKEN_IN_JSON_PATTERN = boost::regex("\"(mastertoken|token)\":(\\t|\\s+)\"[a-zA-Z0-9=/_+-:]+\"", boost::regex::icase);
boost::regex SecretDetector::TOKEN_IN_JSON_PATTERN = boost::regex("\"?(mastertoken|token|Snowflake Token|oldSessionToken|sessionToken)\"?(\\s*)?(:|=)(\\.*)?(\\t|\\s+)?\"[a-zA-Z0-9=/_+-:]+\"", boost::regex::icase);

std::string SecretDetector::maskAwsKeys(std::string text)
{
Expand Down Expand Up @@ -78,7 +78,7 @@ namespace Client
SecretDetector::maskPassword(
SecretDetector::maskEncryptioncCredsInJson(
SecretDetector::maskTokenInJson(
text
text
)
)
)
Expand Down
2 changes: 2 additions & 0 deletions include/snowflake/logger.h
Original file line number Diff line number Diff line change
Expand Up @@ -98,6 +98,8 @@ void log_set_path(const char* path);

void log_close();

void terminal_mask(char *data, size_t size, char* masked, size_t masked_size);

#if defined(__cplusplus)
}
#endif
Expand Down
2 changes: 1 addition & 1 deletion lib/connection.c
Original file line number Diff line number Diff line change
Expand Up @@ -683,7 +683,7 @@ json_copy_string(char **dest, cJSON *data, const char *item) {
}
sf_strncpy(*dest, blob_size, blob->valuestring, blob_size);

if (strcmp(item, "token") == 0 || strcmp(item, "masterToken") == 0) {
if (strcmp(item, "token") == 0 || strcmp(item, "masterToken") == 0 || strcmp(item, "sessionToken") == 0) {
log_debug("Item and Value; %s: ******", item);
} else {
log_debug("Item and Value; %s: %s", item, *dest);
Expand Down
13 changes: 12 additions & 1 deletion lib/http_perform.c
Original file line number Diff line number Diff line change
Expand Up @@ -96,6 +96,8 @@ int my_trace(CURL *handle, curl_infotype type,
const char *text;
(void) handle; /* prevent compiler warning */

char* masked[5000] = {'\0'};

switch (type) {
case CURLINFO_TEXT:
sf_fprintf(stderr, "== Info: %s", data);
Expand All @@ -105,9 +107,11 @@ int my_trace(CURL *handle, curl_infotype type,

case CURLINFO_HEADER_OUT:
text = "=> Send header";
terminal_mask(data, size, masked, sizeof(masked));
break;
case CURLINFO_DATA_OUT:
text = "=> Send data";
terminal_mask(data, size, masked, sizeof(masked));
break;
case CURLINFO_SSL_DATA_OUT:
text = "=> Send SSL data";
Expand All @@ -117,13 +121,20 @@ int my_trace(CURL *handle, curl_infotype type,
break;
case CURLINFO_DATA_IN:
text = "<= Recv data";
terminal_mask(data, size, masked, sizeof(masked));
break;
case CURLINFO_SSL_DATA_IN:
text = "<= Recv SSL data";
break;
}

dump(text, stderr, (unsigned char *) data, size, config->trace_ascii);
if(strlen(masked) == 0){
// data not masked
dump(text, stderr, (unsigned char *) data, size, config->trace_ascii);
} else {
// data masked
dump(text, stderr, (unsigned char *) masked, size, config->trace_ascii);
}
return 0;
}

Expand Down
28 changes: 17 additions & 11 deletions tests/test_unit_connect_parameters.c
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
#include "utils/test_setup.h"
#include "memory.h"

#include <stdio.h>
/**
* Test default port
*/
Expand Down Expand Up @@ -235,8 +236,13 @@ void test_connect_with_renew(void** unused) {

// renew session
CURL* curl = curl_easy_init();
sf_bool debug = SF_BOOLEAN_TRUE;
// turn on DEBUG mode to test with debug mode logging as well
snowflake_global_set_attribute(SF_GLOBAL_DEBUG, &debug);
sf_bool renew_result = renew_session(curl, sf, &sf->error);
curl_easy_cleanup(curl);
debug = SF_BOOLEAN_FALSE;
snowflake_global_set_attribute(SF_GLOBAL_DEBUG, &debug);
if (!renew_result)
{
dump_error(&sf->error);
Expand Down Expand Up @@ -276,17 +282,17 @@ void test_connection_parameters_including_cn_region(void **unused) {
int main(void) {
initialize_test(SF_BOOLEAN_FALSE);
const struct CMUnitTest tests[] = {
cmocka_unit_test(test_connection_parameters_default_port),
cmocka_unit_test(test_connection_parameters_no_host),
cmocka_unit_test(test_connection_parameters_with_region),
cmocka_unit_test(test_connection_parameters_with_cn_region),
cmocka_unit_test(test_connection_parameters_including_region),
cmocka_unit_test(test_connection_parameters_including_region_including_dot),
cmocka_unit_test(test_connection_parameters_for_global_url_basic),
cmocka_unit_test(test_connection_parameters_for_global_url_full),
cmocka_unit_test(test_connection_parameters_application),
cmocka_unit_test(test_connect_with_renew),
cmocka_unit_test(test_connection_parameters_including_cn_region),
cmocka_unit_test(test_connection_parameters_default_port),
cmocka_unit_test(test_connection_parameters_no_host),
cmocka_unit_test(test_connection_parameters_with_region),
cmocka_unit_test(test_connection_parameters_with_cn_region),
cmocka_unit_test(test_connection_parameters_including_region),
cmocka_unit_test(test_connection_parameters_including_region_including_dot),
cmocka_unit_test(test_connection_parameters_for_global_url_basic),
cmocka_unit_test(test_connection_parameters_for_global_url_full),
cmocka_unit_test(test_connection_parameters_application),
cmocka_unit_test(test_connect_with_renew),
cmocka_unit_test(test_connection_parameters_including_cn_region),
};
int ret = cmocka_run_group_tests(tests, NULL, NULL);
return ret;
Expand Down
105 changes: 99 additions & 6 deletions tests/test_unit_logger.c
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,11 @@
#include <stdio.h>
#include <sys/stat.h>

#include "../lib/http_perform.c"
// #include "../lib/connection.h"
// #include "../include/snowflake/logger.h"
#include <snowflake/logger.h>

#ifndef _WIN32
#include <unistd.h>
#include <pwd.h>
Expand Down Expand Up @@ -412,6 +417,83 @@ void test_client_config_stdout() {
remove(configFilePath);
}

/* Test terminal masking*/
void test_terminal_mask(){

char masked[450] = "\0";
char *token = "\"oldSessionToken\":.\"ver:3-hint:92019686956010-ETMsDgAAAZnuCZEqABRBRVMvQ0JDL1BLQ1M1UGFkZGluZwEAABAAEFvTRpZh3vTIN0aeQGHgtZUAAACgEe4rGMIhP+9VB6W02vfgNxd7TzjF7V9CFNiobWsPKfRaVm0e+Pgan+NKiWqJGeYPY0kNDKc+iZZArOgYb3bj0JaU2ovmSRTzEKF4/oQdunFrob66HU+x5piBINNQ327tcSglCOBKxAmjHwQxv+C3t7Yzsaa1I10VUA3fRwGcMlluuCC/7ucFnLUeSESYzImlmWBtftQS/giLDli9CyghpgAUblZOu/WGGryesNxqKCr2qHxYUrQ=\"";
terminal_mask(token, strlen(token), masked, sizeof(masked));
assert_string_not_equal(token, masked);

char *expected = "\"oldSessionToken\": ****";
assert_string_equal(masked, expected);

char *token1 = "Snowflake Token=\"ver:3-hint:92019686956010-ETMsDgAAAZnuCZDdABRBRVMvQ0JDL1BLQ1M1UGFkZGluZwEAABAAEE8nWQwJCW8y71MmS0MTiQAAADAKKvKBOXVEWiCRMEHtrZlROAljOWTb1wDD6rIgPC8odgqH9ieZZuxfm5GmPkP2DasqFfBMDxk0sw1ZWqE2c7Sos+tUSh09EKraNoANaMSMsL71u7JKMtSIPJ907FVM0xeDw924bYTY1+D3gKvVn93nzdAZto8pOPVs9ag0MlmFrQQH0RLuLAMgAx4ZBkyeoeuTco0A3PNoedb/kvIpfIQWtukVDuXJmCetZQxATxXVuu3cXisGg7I8Mu/VJqd/iABScY0nslPWxaodfF0nwZ4fquJWUaQ==\"";
masked[0] = '\0';
terminal_mask(token1, strlen(token1), masked, sizeof(masked));
expected = "\"Snowflake Token\": ****";
assert_string_equal(masked, expected);

char *token2 = "this text is not meant to be masked";
masked[0] = '\0';
terminal_mask(token2, strlen(token2), masked, sizeof(masked));
assert_string_equal(token2, masked);

char *token3 = "";
masked[0] = '\0';
terminal_mask(token3, strlen(token3), masked, sizeof(masked));
expected = "";
assert_string_equal(masked, expected);
}

/* Test masking in stderr */
void test_mask_stderr(){

// redirecting stderr to a tmp file
FILE *tmp_stderr;
tmp_stderr = freopen("tmp_stderr.txt", "w", stderr);
if(tmp_stderr == NULL){
printf("Failed to open temp file for stderr redirection\n");
return 1;
}

FILE *fp_out = fopen("tmp_stderr.txt", "r");

enum curl_infotype infotype = 2; // CURLINFO_HEADER_OUT
struct data d = {'1'};
char *token = "Authorization: Snowflake Token=\"ver:3-hint:92019686956010-ETMsDgAAAZnuCZDdABRBRVMvQ0JDL1BLQ1M1UGFkZGluZwEAABAAEE8nWQwJCW8y71MmS0MTiQAAADAKKvKBOXVEWiCRMEHtrZlROAljOWTb1wDD6rIgPC8odgqH9ieZZuxfm5GmPkP2DasqFfBMDxk0sw1ZWqE2c7Sos+tUSh09EKraNoANaMSMsL71u7JKMtSIPJ907FVM0xeDw924bYTY1+D3gKvVn93nzdAZto8pOPVs9ag0MlmFrQQH0RLuLAMgAx4ZBkyeoeuTco0A3PNoedb/kvIpfIQWtukVDuXJmCetZQxATxXVuu3cXisGg7I8Mu/VJqd/iABScY0nslPWxaodfF0nwZ4fquJWUaQ==\"";
printf("Processing curl info type: %d\n", infotype);
size_t size = strlen(token);

my_trace(NULL, infotype, token, size, &d);

// read stderr content
char output_buff[100] = "\0";
if(fgets(output_buff, sizeof(output_buff), fp_out) == NULL){
printf(stderr, "[Test] fgets unable to retrieve text\n");
}
fprintf(tmp_stderr, "[Test] retrieving output from my_trace - line 1: %s\n", output_buff);
output_buff[0] = "\0";
if(fgets(output_buff, strlen(token), fp_out) == NULL){
printf(stderr, "[Test] fgets unable to retrieve text\n");
}
fprintf(tmp_stderr, "[Test] retrieving output from my_trace - line 2: %s\n", output_buff);

fprintf(stderr, "[Test] assertion next: \n");
//compare output
char *expected = "0000: Authorization: \"Snowflake Token\": ****..........................\n";
assert_string_equal(output_buff, expected);

//clean up
fclose("tmp_stderr.txt");



infotype = 4; // CURLINFO_DATA_OUT

infotype = 3; // CURLINFO_DATA_IN
}

void test_log_creation() {
char logname[] = "dummy.log";

Expand Down Expand Up @@ -441,7 +523,7 @@ void test_log_creation() {
/**
* Test that generate exception
*/
void test_log_creation_no_permission_to_home_folder(){
void test_log_creation_no_permission_to_home_folder() {

// check if current user is root. If so, exit test
char *name;
Expand Down Expand Up @@ -484,6 +566,7 @@ void test_log_creation_no_permission_to_home_folder(){
setenv("HOME", homedirOrig, 1);
}


/**
* Tests masking secret information in log
*/
Expand Down Expand Up @@ -580,6 +663,14 @@ void test_mask_secret_log() {
"\"masterToken\":\t\"ETM:sDgAAA-XI0IS9NABRBRVMvQ0JDL1BLQ1M1UGFkZGluZwCAABAAEEb/xAQlmT+mwIx9G32E+ikAAACA/CPlEkq//+jWZnQkOj5VhjayruDsCVRGS/B6GzHUugXLc94EfEwuto94gS/oKSVrUg/JRPekypLAx4Afa1KW8n1RqXRF9Hzy1VVLmVEBMtei3yFJPNSHtfbeFHSr9eVB/OL8dOGbxQluGCh6XmaqTjyrh3fqUTWz7+n74+gu2ugAFFZ18iT+DStK0TTdmy4vBC6xUcHQ==\"",
"\"masterToken\": ****"
},
{//21
"\"Snowflake Token\"=\"ver:3-hint:92019686956010-ETMsDgAAAZnuCZDdABRBRVMvQ0JDL1BLQ1M1UGFkZGluZwEAABAAEE8nWQwJCW8+y71MmS0MTiQAAADAKKvKBOXVEWiCRMEHtrZlROAljOWTb1wDD6rIgPC8odgqH9ieZZuxfm5GmPkP2DasqFfBMDxk0sw1ZWqE2c7Sos+tUSh09EKraNoANaMSMsL71u7JKMtSIPJ907FVM0xeDw924bYTY1+D3gKvVn93nzdAZto8pOPVs9ag0Mlm+FrQQH0RLuLAMgAx4ZBkyeoeuTco0A3PNoedb/HkvIpfIQWtukVDuXJmCetZQxATxXVuu3cXisGg7I8Mu/VJqd/iABScY0nslPWxaodfF0nwZ4fquJWUaQ==\"",
"\"Snowflake Token\": ****"
},
{//22
"\"oldSessionToken\":.\"ver:3-hint:92019686956010-ETMsDgAAAZnuCZEqABRBRVMvQ0JDL1BLQ1M1UGFkZGluZwEAABAAEFvTRpZh3vTIN0aeQGHgtZUAAACgEe4rGMIhP+9VB6W02vfgNxd7TzjF7V9CFNiobWsPKfRaVm0e+Pgan+NKiWqJGeYPY0kNDKc+iZZArOgYb3bj0JaU2ovmSRTzEKF4/oQdunFrob66HU+x5piBINNQ327tcSglCOBKxAmjHwQxv+C3t7Yzsaa1I10VUA3fRwGcMlluuCC/7ucFnLUeSESYzImlmWBtftQS/giLDli9CyghpgAUblZOu/WGGryesNxqKCr2qHxYUrQ=\"",
"\"masterToken\": ****"
},
};

char * line = NULL;
Expand All @@ -604,22 +695,24 @@ void test_mask_secret_log() {

int main(void) {
const struct CMUnitTest tests[] = {
cmocka_unit_test(test_null_log_path),
/*cmocka_unit_test(test_null_log_path),
cmocka_unit_test(test_default_log_path),
cmocka_unit_test(test_log_str_to_level),
cmocka_unit_test(test_invalid_client_config_path),
cmocka_unit_test(test_client_config_log_invalid_json),
cmocka_unit_test(test_client_config_log_malformed_json),
cmocka_unit_test(test_client_config_log_malformed_json),*/
#if (!defined(_WIN32) && !defined(_DEBUG)) || defined(_WIN64)
cmocka_unit_test(test_client_config_log),
/*cmocka_unit_test(test_client_config_log),
cmocka_unit_test(test_client_config_log_unknown_entries),
cmocka_unit_test(test_client_config_log_init),
cmocka_unit_test(test_client_config_log_init_home_config),
cmocka_unit_test(test_client_config_log_no_level),
cmocka_unit_test(test_client_config_log_no_path),
cmocka_unit_test(test_client_config_stdout),
cmocka_unit_test(test_client_config_stdout),*/
cmocka_unit_test(test_terminal_mask),
//cmocka_unit_test(test_mask_stderr),
#endif
cmocka_unit_test(test_log_creation),
//cmocka_unit_test(test_log_creation),
#ifndef _WIN32
cmocka_unit_test(test_log_creation_no_permission_to_home_folder),
cmocka_unit_test(test_mask_secret_log),
Expand Down
Loading