From 6bc1f95613cc2bedd8849564d30419bff82ed074 Mon Sep 17 00:00:00 2001 From: Jouni Malinen Date: Tue, 7 Aug 2012 13:32:57 +0300 Subject: [PATCH] Use printf escaping in SSID-to-printable-string conversion Instead of masking out non-ASCII characters with underscores, espace the SSID data using rules compatible with printf. Signed-hostap: Jouni Malinen --- src/utils/common.c | 15 ++++++--------- 1 file changed, 6 insertions(+), 9 deletions(-) diff --git a/src/utils/common.c b/src/utils/common.c index c814e89a7..6d7a20034 100644 --- a/src/utils/common.c +++ b/src/utils/common.c @@ -489,17 +489,14 @@ size_t printf_decode(u8 *buf, size_t maxlen, const char *str) */ const char * wpa_ssid_txt(const u8 *ssid, size_t ssid_len) { - static char ssid_txt[33]; - char *pos; + static char ssid_txt[32 * 4 + 1]; - if (ssid_len > 32) - ssid_len = 32; - os_memcpy(ssid_txt, ssid, ssid_len); - ssid_txt[ssid_len] = '\0'; - for (pos = ssid_txt; *pos != '\0'; pos++) { - if ((u8) *pos < 32 || (u8) *pos >= 127) - *pos = '_'; + if (ssid == NULL) { + ssid_txt[0] = '\0'; + return ssid_txt; } + + printf_encode(ssid_txt, sizeof(ssid_txt), ssid, ssid_len); return ssid_txt; }