aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--ydb/library/benchmarks/gen/tpcds-dbgen/genrand.c6
-rw-r--r--ydb/library/benchmarks/gen/tpcds-dbgen/scd.c5
-rw-r--r--ydb/library/benchmarks/gen/tpcds-dbgen/tdefs.c16
-rw-r--r--ydb/library/benchmarks/gen/tpcds-dbgen/text.c7
-rw-r--r--ydb/library/benchmarks/gen/tpcds-dbgen/w_datetbl.c8
-rw-r--r--ydb/library/benchmarks/gen/tpcds-dbgen/w_item.c9
-rw-r--r--ydb/library/benchmarks/gen/tpch-dbgen/bm_utils.c4
-rw-r--r--ydb/library/benchmarks/gen/tpch-dbgen/print.c2
-rw-r--r--ydb/library/benchmarks/gen/tpch-dbgen/text.c3
-rw-r--r--ydb/library/workload/tpcds/driver.cpp4
-rw-r--r--ydb/public/lib/ydb_cli/commands/ydb_workload_import.cpp4
-rw-r--r--ydb/public/lib/ydb_cli/dump/restore_impl.h2
12 files changed, 53 insertions, 17 deletions
diff --git a/ydb/library/benchmarks/gen/tpcds-dbgen/genrand.c b/ydb/library/benchmarks/gen/tpcds-dbgen/genrand.c
index 32d9ff2f66..798e8f358c 100644
--- a/ydb/library/benchmarks/gen/tpcds-dbgen/genrand.c
+++ b/ydb/library/benchmarks/gen/tpcds-dbgen/genrand.c
@@ -189,7 +189,7 @@ genrand_integer (int *dest, int dist, int min, int max, int mean, int stream)
break;
default:
INTERNAL ("Undefined distribution");
- break;
+ exit(EXIT_FAILURE);
}
if (dest == NULL)
@@ -236,7 +236,7 @@ genrand_key (ds_key_t * dest, int dist, ds_key_t min, ds_key_t max,
break;
default:
INTERNAL ("Undefined distribution");
- break;
+ exit(EXIT_FAILURE);
}
if (dest == NULL)
@@ -296,7 +296,7 @@ genrand_decimal (decimal_t * dest, int dist, decimal_t * min, decimal_t * max,
break;
default:
INTERNAL ("Undefined distribution");
- break;
+ exit(EXIT_FAILURE);
}
dest->number = res.number;
diff --git a/ydb/library/benchmarks/gen/tpcds-dbgen/scd.c b/ydb/library/benchmarks/gen/tpcds-dbgen/scd.c
index 943cc47389..38bf3e22d8 100644
--- a/ydb/library/benchmarks/gen/tpcds-dbgen/scd.c
+++ b/ydb/library/benchmarks/gen/tpcds-dbgen/scd.c
@@ -96,6 +96,11 @@ setSCDKeys(int nColumnID, ds_key_t kIndex, char *szBKey, ds_key_t *pkBeginDateKe
}
nTableID = getTableFromColumn(nColumnID);
+ // Prevent array overflow. Fixing coverity issue OVERRUN
+ if (nTableID < 0 || nTableID >= MAX_TABLE) {
+ INTERNAL("Array arBKeys overflow");
+ exit(EXIT_FAILURE);
+ }
nModulo = (int)(kIndex % 6);
switch(nModulo)
{
diff --git a/ydb/library/benchmarks/gen/tpcds-dbgen/tdefs.c b/ydb/library/benchmarks/gen/tpcds-dbgen/tdefs.c
index ce5c8c119d..e8197cbd0c 100644
--- a/ydb/library/benchmarks/gen/tpcds-dbgen/tdefs.c
+++ b/ydb/library/benchmarks/gen/tpcds-dbgen/tdefs.c
@@ -71,7 +71,7 @@ GetRowcountByName(char *szName)
int nTable = -1;
nTable = GetTableNumber(szName);
- if (nTable >= 0)
+ if (nTable > 0)
return(get_rowcount(nTable - 1));
nTable = distsize(szName);
@@ -146,11 +146,22 @@ getTdefsByNumber(int nTable)
return(&w_tdefs[nTable]);
}
*/
+
+void checkTdefsSize(int nTable) {
+ // Prevent array overflow. Fixing coverity issue OVERRUN
+ if (nTable < 0 || nTable >= (int)(sizeof(s_tdefs) / sizeof(s_tdefs[0]))) {
+ INTERNAL("Array s_tdefs overflow");
+ exit(EXIT_FAILURE);
+ }
+}
+
tdef *
getSimpleTdefsByNumber(int nTable)
{
- if (nTable >= S_BRAND)
+ if (nTable >= S_BRAND) {
+ checkTdefsSize(nTable - S_BRAND);
return(&s_tdefs[nTable - S_BRAND]);
+ }
return(&w_tdefs[nTable]);
}
@@ -159,6 +170,7 @@ getTdefsByNumber(int nTable)
{
if (is_set("UPDATE") && is_set("VALIDATE"))
{
+ checkTdefsSize(nTable);
if (s_tdefs[nTable].flags & FL_PASSTHRU)
{
switch(nTable + S_BRAND)
diff --git a/ydb/library/benchmarks/gen/tpcds-dbgen/text.c b/ydb/library/benchmarks/gen/tpcds-dbgen/text.c
index e841c22131..ff76818773 100644
--- a/ydb/library/benchmarks/gen/tpcds-dbgen/text.c
+++ b/ydb/library/benchmarks/gen/tpcds-dbgen/text.c
@@ -160,14 +160,13 @@ gen_text(char *dest, int min, int max, int stream)
used_space = 0;
genrand_integer(&target_len, DIST_UNIFORM, min, max, 0, stream);
- if (dest)
- *dest = '\0';
- else
+ if (!dest)
{
dest = (char *)malloc((max + 1) * sizeof(char));
MALLOC_CHECK(dest);
}
-
+ // Prevent using uninitialized *dest. Fixing coverity issue UNINIT
+ *dest = '\0';
while (target_len > 0)
{
diff --git a/ydb/library/benchmarks/gen/tpcds-dbgen/w_datetbl.c b/ydb/library/benchmarks/gen/tpcds-dbgen/w_datetbl.c
index 83e44ab806..b6103daeb7 100644
--- a/ydb/library/benchmarks/gen/tpcds-dbgen/w_datetbl.c
+++ b/ydb/library/benchmarks/gen/tpcds-dbgen/w_datetbl.c
@@ -113,6 +113,10 @@ mk_w_date (void * row, ds_key_t index)
r->d_fy_year = r->d_year;
r->d_fy_quarter_seq = r->d_quarter_seq;
r->d_fy_week_seq = r->d_week_seq;
+ if (r->d_dow >= MAXINT) {
+ INTERNAL("Int overflow for d_dow");
+ exit(EXIT_FAILURE);
+ }
r->d_day_name = weekday_names[r->d_dow + 1];
dist_member (&r->d_holiday, "calendar", day_index, 8);
if ((r->d_dow == 5) || (r->d_dow == 6))
@@ -290,6 +294,10 @@ vld_w_date(int nTable, ds_key_t kRow, int *Permutation)
r->d_fy_year = r->d_year;
r->d_fy_quarter_seq = r->d_quarter_seq;
r->d_fy_week_seq = r->d_week_seq;
+ if (r->d_dow >= MAXINT) {
+ INTERNAL("Int overflow for d_dow");
+ exit(EXIT_FAILURE);
+ }
r->d_day_name = weekday_names[r->d_dow + 1];
dist_member (&r->d_holiday, "calendar", day_index, 8);
if ((r->d_dow == 5) || (r->d_dow == 6))
diff --git a/ydb/library/benchmarks/gen/tpcds-dbgen/w_item.c b/ydb/library/benchmarks/gen/tpcds-dbgen/w_item.c
index 68ef1aeeab..7cef8b13cd 100644
--- a/ydb/library/benchmarks/gen/tpcds-dbgen/w_item.c
+++ b/ydb/library/benchmarks/gen/tpcds-dbgen/w_item.c
@@ -58,6 +58,14 @@
struct W_ITEM_TBL g_w_item,
g_OldValues;
+void validate_string(char *szString, unsigned long maxSize) {
+ // Prevent passing unterminated string. Fixing coverity issue STRING_NULL
+ if (strlen(szString) > maxSize) {
+ INTERNAL("Trying po pass unterminated string");
+ exit(EXIT_FAILURE);
+ }
+}
+
/*
* mk_item
*/
@@ -190,6 +198,7 @@ mk_w_item (void* row, ds_key_t index)
gen_charset(r->i_formulation, DIGITS, RS_I_FORMULATION, RS_I_FORMULATION, I_FORMULATION);
embed_string(r->i_formulation, "colors", 1, 2, I_FORMULATION);
+ validate_string(r->i_formulation, RS_I_FORMULATION);
changeSCD(SCD_CHAR, &r->i_formulation, &rOldValues->i_formulation, &nFieldChangeFlags, bFirstRecord);
pick_distribution (&r->i_color, "colors", 1, 2, I_COLOR);
diff --git a/ydb/library/benchmarks/gen/tpch-dbgen/bm_utils.c b/ydb/library/benchmarks/gen/tpch-dbgen/bm_utils.c
index cbfc400c04..afd51a1a10 100644
--- a/ydb/library/benchmarks/gen/tpch-dbgen/bm_utils.c
+++ b/ydb/library/benchmarks/gen/tpch-dbgen/bm_utils.c
@@ -302,7 +302,7 @@ long weight,
if (d_path == NULL)
{
- sprintf(line, "%s%c%s",
+ snprintf(line, 256, "%s%c%s",
env_config(CONFIG_TAG, CONFIG_DFLT), PATH_SEP, path);
fp = fopen(line, "r");
OPEN_CHECK(fp, line);
@@ -389,7 +389,7 @@ tbl_open(int tbl, char *mode)
if (*tdefs[tbl].name == PATH_SEP)
strcpy(fullpath, tdefs[tbl].name);
else
- sprintf(fullpath, "%s%c%s",
+ snprintf(fullpath, 256, "%s%c%s",
env_config(PATH_TAG, PATH_DFLT), PATH_SEP, tdefs[tbl].name);
retcode = stat(fullpath, &fstats);
diff --git a/ydb/library/benchmarks/gen/tpch-dbgen/print.c b/ydb/library/benchmarks/gen/tpch-dbgen/print.c
index c09869e76a..5e54f06d86 100644
--- a/ydb/library/benchmarks/gen/tpch-dbgen/print.c
+++ b/ydb/library/benchmarks/gen/tpch-dbgen/print.c
@@ -75,7 +75,7 @@ print_prep(int table, int update)
}
else
{
- sprintf(upath, "%s%c%s.u%d",
+ snprintf(upath, 128, "%s%c%s.u%d",
env_config(PATH_TAG, PATH_DFLT),
PATH_SEP, tdefs[table].name, update);
}
diff --git a/ydb/library/benchmarks/gen/tpch-dbgen/text.c b/ydb/library/benchmarks/gen/tpch-dbgen/text.c
index 03bddb7a47..094bbf640a 100644
--- a/ydb/library/benchmarks/gen/tpch-dbgen/text.c
+++ b/ydb/library/benchmarks/gen/tpch-dbgen/text.c
@@ -323,6 +323,9 @@ dbg_text(char *tgt, int min, int max, int sd)
}
else /* chop the new sentence off to match the length target */
{
+ if (needed >= (DSS_HUGE)sizeof(sentence)) {
+ INTERNAL_ERROR("Array sentence overflow");
+ }
sentence[needed] = '\0';
strcpy(cp, sentence);
wordlen += needed;
diff --git a/ydb/library/workload/tpcds/driver.cpp b/ydb/library/workload/tpcds/driver.cpp
index dba8932455..118a415857 100644
--- a/ydb/library/workload/tpcds/driver.cpp
+++ b/ydb/library/workload/tpcds/driver.cpp
@@ -224,13 +224,13 @@ extern "C" int dist_op(void *dest, int op, char *d_name, int vset, int wset, int
if (dest == NULL) {
dest = (date_t *)malloc(sizeof(date_t));
}
- strtodt(*(date_t **)dest, char_val);
+ strtodt((date_t *)dest, char_val);
break;
case TKN_DECIMAL:
if (dest == NULL) {
dest = (decimal_t *)malloc(sizeof(decimal_t));
}
- strtodec(*(decimal_t **)dest,char_val);
+ strtodec((decimal_t *)dest,char_val);
break;
}
diff --git a/ydb/public/lib/ydb_cli/commands/ydb_workload_import.cpp b/ydb/public/lib/ydb_cli/commands/ydb_workload_import.cpp
index c8faed386d..8a91c492d7 100644
--- a/ydb/public/lib/ydb_cli/commands/ydb_workload_import.cpp
+++ b/ydb/public/lib/ydb_cli/commands/ydb_workload_import.cpp
@@ -226,8 +226,8 @@ private:
if (auto* result = MapFindPtr(CsvOutputs, fname)) {
return std::make_pair(result->Get(), false);
}
- auto result = MakeAtomicShared<TFileOutput>(Owner.UploadParams.FileOutputPath / fname);
- CsvOutputs[fname] = result;
+ auto& result = CsvOutputs[fname];
+ result = MakeAtomicShared<TFileOutput>(Owner.UploadParams.FileOutputPath / fname);
return std::make_pair(result.Get(), true);
}
TMap<TString, TAtomicSharedPtr<TFileOutput>> CsvOutputs;
diff --git a/ydb/public/lib/ydb_cli/dump/restore_impl.h b/ydb/public/lib/ydb_cli/dump/restore_impl.h
index 73c35a39c7..af28e1eecc 100644
--- a/ydb/public/lib/ydb_cli/dump/restore_impl.h
+++ b/ydb/public/lib/ydb_cli/dump/restore_impl.h
@@ -72,7 +72,7 @@ class IDataAccumulator;
class TBatch {
TStringBuilder Data;
TVector<TLocation> Locations;
- IDataAccumulator* OriginAccumulator;
+ IDataAccumulator* OriginAccumulator = nullptr;
public:
void Add(const TLine& line);