Skip to content

Commit aa93740

Browse files
committed
rcx: fix stack buffer overflow in parseRules corner table
Signed-off-by: Arthur Koucher <arthurkoucher@precisioninno.com>
1 parent 90c7b4c commit aa93740

1 file changed

Lines changed: 6 additions & 8 deletions

File tree

src/rcx/src/netRC.cpp

Lines changed: 6 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1489,13 +1489,11 @@ std::unique_ptr<extRCModel> parseRules(
14891489

14901490
auto model = std::make_unique<extRCModel>("MINTYPMAX", logger);
14911491

1492-
constexpr int max_corners = 10;
1493-
uint32_t corner_table[max_corners];
1494-
uint32_t corner_count = 0;
1492+
std::vector<uint32_t> corner_table;
14951493
if (extractor_corner_table) {
14961494
for (uint32_t ii = 0; ii < extractor_corner_table->getCnt(); ii++) {
14971495
extCorner* corner = extractor_corner_table->get(ii);
1498-
corner_table[corner_count++] = corner->_model;
1496+
corner_table.push_back(corner->_model);
14991497
}
15001498
}
15011499

@@ -1527,8 +1525,8 @@ std::unique_ptr<extRCModel> parseRules(
15271525
true,
15281526
true,
15291527
true,
1530-
corner_count,
1531-
corner_table,
1528+
corner_table.size(),
1529+
corner_table.data(),
15321530
rules_to_dbu_scale)) {
15331531
logger->error(
15341532
RCX, 14, "Failed to parse extraction model file {}", rules_file);
@@ -1540,8 +1538,8 @@ std::unique_ptr<extRCModel> parseRules(
15401538
true,
15411539
true,
15421540
true,
1543-
corner_count,
1544-
corner_table,
1541+
corner_table.size(),
1542+
corner_table.data(),
15451543
rules_to_dbu_scale)) {
15461544
logger->error(
15471545
RCX, 15, "Failed to parse extraction model file {}", rules_file);

0 commit comments

Comments
 (0)