summaryrefslogtreecommitdiff
path: root/src/cmd4.cc
diff options
context:
space:
mode:
authorBardur Arantsson <bardur@scientician.net>2016-02-05 19:22:46 +0100
committerBardur Arantsson <bardur@scientician.net>2016-02-05 19:22:46 +0100
commit8f967e4cfcd5710c82a26e878397afac81c6af64 (patch)
treedb688e25ac102805477667c4bf1316dff2d9b796 /src/cmd4.cc
parent9baafaff5ead3056dbd3ae531d1560faf02e50b7 (diff)
Fix multiple potential underflows in plural_aux
Diffstat (limited to 'src/cmd4.cc')
-rw-r--r--src/cmd4.cc12
1 files changed, 6 insertions, 6 deletions
diff --git a/src/cmd4.cc b/src/cmd4.cc
index 48fc279b..ab9e4281 100644
--- a/src/cmd4.cc
+++ b/src/cmd4.cc
@@ -3422,29 +3422,29 @@ static void plural_aux(char *name)
}
/* Broken plurals are, well, broken */
- else if (name[name_len - 1] == 'y')
+ else if (name_len >= 1 && name[name_len - 1] == 'y')
{
strcpy(&name[name_len - 1], "ies");
}
- else if (streq(&name[name_len - 4], "ouse"))
+ else if (name_len >= 4 && streq(&name[name_len - 4], "ouse"))
{
strcpy(&name[name_len - 4], "ice");
}
- else if (streq(&name[name_len - 6], "kelman"))
+ else if (name_len >= 6 && streq(&name[name_len - 6], "kelman"))
{
strcpy(&name[name_len - 6], "kelmen");
}
- else if (streq(&name[name_len - 2], "ex"))
+ else if (name_len >= 2 && streq(&name[name_len - 2], "ex"))
{
strcpy(&name[name_len - 2], "ices");
}
- else if (streq(&name[name_len - 3], "olf"))
+ else if (name_len >= 3 && streq(&name[name_len - 3], "olf"))
{
strcpy(&name[name_len - 3], "olves");
}
/* Now begins sane cases */
- else if ((streq(&name[name_len - 2], "ch")) || (name[name_len - 1] == 's'))
+ else if ((name_len >= 2 && streq(&name[name_len - 2], "ch")) || (name_len >= 1 && name[name_len - 1] == 's'))
{
strcpy(&name[name_len], "es");
}