diff --git a/src/eir.c b/src/eir.c
index fb9c760..1b68949 100644
--- a/src/eir.c
+++ b/src/eir.c
while (len < eir_len - 1) {
uint8_t field_len = eir_data[0];
+ uint8_t name_len;
/* Check for the end of EIR */
if (field_len == 0)
case EIR_NAME_COMPLETE:
/* Some vendors put a NUL byte terminator into
* the name */
- while (field_len > 1 && eir_data[field_len] == '\0')
- field_len--;
+ name_len = field_len - 1;
+
+ while (name_len > 0 && eir_data[name_len - 1] == '\0')
+ name_len--;
if (!g_utf8_validate((char *) &eir_data[2],
- field_len - 1, NULL))
+ name_len, NULL))
break;
g_free(eir->name);