From e2f6ada862e370f2d2cce8cc1cae48da11155731 Mon Sep 17 00:00:00 2001 From: Enno Rehling Date: Mon, 18 Sep 2017 17:46:26 +0200 Subject: [PATCH] limit equipment names to 15 byte plus nul. --- res/eressea/equipment.xml | 70 +++++++++++++++++-------------------- src/kernel/equipment.c | 8 ++--- src/kernel/equipment.test.c | 12 +++---- src/randenc.c | 16 ++++----- 4 files changed, 51 insertions(+), 55 deletions(-) diff --git a/res/eressea/equipment.xml b/res/eressea/equipment.xml index 3605bb1fd..e4d48aefe 100644 --- a/res/eressea/equipment.xml +++ b/res/eressea/equipment.xml @@ -69,7 +69,7 @@ - + @@ -79,53 +79,53 @@ - + - + - + - + - + - + - + - + - + @@ -136,43 +136,43 @@ - + - - - - + + + + - + - + - + - + - + - + - + @@ -184,9 +184,9 @@ - - - + + + @@ -195,38 +195,34 @@ - + - + - + - + - + - + - - - - - - + + diff --git a/src/kernel/equipment.c b/src/kernel/equipment.c index 98d6b1e70..747dd631a 100644 --- a/src/kernel/equipment.c +++ b/src/kernel/equipment.c @@ -213,7 +213,7 @@ equipment *get_equipment(const char *eqname) { const char *match; - assert(strlen(eqname) <= EQNAMELEN); + assert(strlen(eqname) < EQNAMELEN); match = cb_find_str(&cb_equipments, eqname); if (match) { @@ -228,9 +228,9 @@ equipment *create_equipment(const char *eqname) size_t len = strlen(eqname); eq_entry ent; - if (len > EQNAMELEN) { - log_error("equipment names should be no longer than %d bytes: %s", EQNAMELEN, eqname); - len = EQNAMELEN; + if (len >= EQNAMELEN) { + log_error("equipment names should be no longer than %d bytes: %s", EQNAMELEN-1, eqname); + len = EQNAMELEN-1; } memset(ent.key, 0, EQNAMELEN); memcpy(ent.key, eqname, len); diff --git a/src/kernel/equipment.test.c b/src/kernel/equipment.test.c index 4ed077fb0..0398e2141 100644 --- a/src/kernel/equipment.test.c +++ b/src/kernel/equipment.test.c @@ -51,21 +51,21 @@ static void test_get_equipment(CuTest * tc) equipment * eq; test_setup(); - eq = create_equipment("catapultammo"); + eq = create_equipment("catapultammo123"); CuAssertPtrNotNull(tc, eq); - CuAssertStrEquals(tc, "catapultammo", eq->name); - eq = get_equipment("catapultammo"); + CuAssertStrEquals(tc, "catapultammo123", eq->name); + eq = get_equipment("catapultammo123"); CuAssertPtrNotNull(tc, eq); - CuAssertStrEquals(tc, "catapultammo", eq->name); + CuAssertStrEquals(tc, "catapultammo123", eq->name); eq = get_equipment("catapult"); CuAssertPtrEquals(tc, NULL, eq); eq = create_equipment("catapult"); eq = get_equipment("catapult"); CuAssertPtrNotNull(tc, eq); CuAssertStrEquals(tc, "catapult", eq->name); - eq = get_equipment("catapultammo"); + eq = get_equipment("catapultammo123"); CuAssertPtrNotNull(tc, eq); - CuAssertStrEquals(tc, "catapultammo", eq->name); + CuAssertStrEquals(tc, "catapultammo123", eq->name); test_cleanup(); } diff --git a/src/randenc.c b/src/randenc.c index 2b46499e6..b2b282eb1 100644 --- a/src/randenc.c +++ b/src/randenc.c @@ -263,7 +263,7 @@ static void get_villagers(region * r, unit * u) u); leave(newunit, true); fset(newunit, UFL_ISNEW | UFL_MOVED); - equip_unit(newunit, get_equipment("random_villagers")); + equip_unit(newunit, get_equipment("rand_villagers")); } static void get_allies(region * r, unit * u) @@ -282,7 +282,7 @@ static void get_allies(region * r, unit * u) if (get_money(u) / u->number < 100 + rng_int() % 200) return; name = "random_plain_men"; - equip = "random_plain"; + equip = "rand_plain"; number = rng_int() % 8 + 2; break; } @@ -293,7 +293,7 @@ static void get_allies(region * r, unit * u) return; } name = "random_forest_men"; - equip = "random_forest"; + equip = "rand_forest"; number = rng_int() % 6 + 2; } break; @@ -303,7 +303,7 @@ static void get_allies(region * r, unit * u) return; } name = "random_swamp_men"; - equip = "random_swamp"; + equip = "rand_swamp"; number = rng_int() % 6 + 2; break; @@ -312,7 +312,7 @@ static void get_allies(region * r, unit * u) return; } name = "random_desert_men"; - equip = "random_desert"; + equip = "rand_desert"; number = rng_int() % 12 + 2; break; @@ -321,7 +321,7 @@ static void get_allies(region * r, unit * u) return; } name = "random_highland_men"; - equip = "random_highland"; + equip = "rand_highland"; number = rng_int() % 8 + 2; break; @@ -330,7 +330,7 @@ static void get_allies(region * r, unit * u) return; } name = "random_mountain_men"; - equip = "random_mountain"; + equip = "rand_mountain"; number = rng_int() % 6 + 2; break; @@ -339,7 +339,7 @@ static void get_allies(region * r, unit * u) return; } name = "random_glacier_men"; - equip = "random_glacier"; + equip = "rand_glacier"; number = rng_int() % 4 + 2; break;