aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPaul Gilbert2018-04-01 22:35:14 -0400
committerPaul Gilbert2018-04-01 22:35:14 -0400
commit0cde83ea01cfa1bfd3253bcfa3a7af0b7af5ad02 (patch)
tree66249b8aa425e624c57bab1085eccd4ac4731bad
parent388f55b85791a5a5c9666c7429e27532dfd41d3c (diff)
downloadscummvm-rg350-0cde83ea01cfa1bfd3253bcfa3a7af0b7af5ad02.tar.gz
scummvm-rg350-0cde83ea01cfa1bfd3253bcfa3a7af0b7af5ad02.tar.bz2
scummvm-rg350-0cde83ea01cfa1bfd3253bcfa3a7af0b7af5ad02.zip
XEEN: Fix Coverity reported overruns
-rw-r--r--engines/xeen/dialogs/dialogs_quests.cpp7
-rw-r--r--engines/xeen/item.cpp5
-rw-r--r--engines/xeen/party.h1
-rw-r--r--engines/xeen/resources.h2
4 files changed, 11 insertions, 4 deletions
diff --git a/engines/xeen/dialogs/dialogs_quests.cpp b/engines/xeen/dialogs/dialogs_quests.cpp
index 8f8ebe785d..239793ee8c 100644
--- a/engines/xeen/dialogs/dialogs_quests.cpp
+++ b/engines/xeen/dialogs/dialogs_quests.cpp
@@ -45,6 +45,7 @@ void Quests::execute() {
bool headerShown = false;
int topRow = 0;
const char **questItems = (g_vm->getGameID() == GType_Swords) ? Res.QUEST_ITEM_NAMES_SWORDS : Res.QUEST_ITEM_NAMES;
+ int itemsCount = (g_vm->getGameID() == GType_Swords) ? TOTAL_QUEST_ITEMS_SWORDS : TOTAL_QUEST_ITEMS;
addButtons();
loadQuestNotes();
@@ -67,12 +68,12 @@ void Quests::execute() {
switch (mode) {
case QUEST_ITEMS:
- for (int idx = 0; idx < TOTAL_QUEST_ITEMS; ++idx)
+ for (int idx = 0; idx < itemsCount; ++idx)
lines[idx] = "\b \b*";
count = 0;
headerShown = false;
- for (int idx = 0; idx < TOTAL_QUEST_ITEMS; ++idx) {
+ for (int idx = 0; idx < itemsCount; ++idx) {
if (party._questItems[idx]) {
if (!count && !headerShown && idx < 35) {
lines[count++] = Res.CLOUDS_OF_XEEN_LINE;
@@ -116,7 +117,7 @@ void Quests::execute() {
break;
case CURRENT_QUESTS:
- for (int idx = 0; idx < TOTAL_QUEST_ITEMS; ++idx)
+ for (int idx = 0; idx < itemsCount; ++idx)
lines[idx] = "";
count = 0;
diff --git a/engines/xeen/item.cpp b/engines/xeen/item.cpp
index a85f5ab3b8..6a37fa1d92 100644
--- a/engines/xeen/item.cpp
+++ b/engines/xeen/item.cpp
@@ -89,12 +89,16 @@ const char *XeenItem::getItemName(ItemCategory category, uint id) {
if (id < 82) {
switch (category) {
case CATEGORY_WEAPON:
+ assert(id < 41);
return Res.WEAPON_NAMES[id];
case CATEGORY_ARMOR:
+ assert(id < 14);
return Res.ARMOR_NAMES[id];
case CATEGORY_ACCESSORY:
+ assert(id < 11);
return Res.ACCESSORY_NAMES[id];
default:
+ assert(id < 22);
return Res.MISC_NAMES[id];
}
} else {
@@ -108,6 +112,7 @@ const char *XeenItem::getItemName(ItemCategory category, uint id) {
case CATEGORY_ACCESSORY:
return questItems[id - 82 + 35 + 14];
default:
+ assert(g_vm->getGameID() != GType_Swords);
return questItems[id - 82 + 35 + 14 + 11];
}
}
diff --git a/engines/xeen/party.h b/engines/xeen/party.h
index ef3a67ff62..b0be1a2f21 100644
--- a/engines/xeen/party.h
+++ b/engines/xeen/party.h
@@ -53,6 +53,7 @@ enum PartyBank {
#define MAX_PARTY_COUNT 8
#define TOTAL_STATS 7
#define TOTAL_QUEST_ITEMS 85
+#define TOTAL_QUEST_ITEMS_SWORDS 51
#define TOTAL_QUEST_FLAGS 56
#define MAX_TREASURE_ITEMS 10
diff --git a/engines/xeen/resources.h b/engines/xeen/resources.h
index 007aaa3a75..bfd5cce41b 100644
--- a/engines/xeen/resources.h
+++ b/engines/xeen/resources.h
@@ -306,7 +306,7 @@ public:
const char *ITEM_CURSED;
const char *ITEM_OF;
const char *BONUS_NAMES[7];
- const char *WEAPON_NAMES[35];
+ const char *WEAPON_NAMES[41];
const char *ARMOR_NAMES[14];
const char *ACCESSORY_NAMES[11];
const char *MISC_NAMES[22];