From 91f7452c230bbd958c96014fcb80b9a8527b76e7 Mon Sep 17 00:00:00 2001 From: Johan Hedberg Date: Fri, 13 Jan 2012 01:08:18 +0200 Subject: [PATCH] eir: Pass explicit length to g_utf8_validate This way we avoid g_utf8_validate having to do it's own strlen work. --- src/eir.c | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/src/eir.c b/src/eir.c index 3826f55d4..f460438b0 100644 --- a/src/eir.c +++ b/src/eir.c @@ -155,13 +155,12 @@ int eir_parse(struct eir_data *eir, uint8_t *eir_data, uint8_t eir_len) case EIR_NAME_SHORT: case EIR_NAME_COMPLETE: - /* Some vendors put a NUL byte terminator. If that is - * the case, use -1 as string length so - * g_utf8_validade() can parse it properly. */ - if (eir_data[field_len] == '\0') - name_len = -1; - else - name_len = field_len - 1; + /* 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; if (!g_utf8_validate((char *) &eir_data[2], name_len, NULL)) -- 2.47.3