From fbf7cfec73e58e65c4c6076dcc5858b04d5160f5 Mon Sep 17 00:00:00 2001 From: "John W. Linville" Date: Tue, 30 Sep 2008 17:50:31 -0400 Subject: [PATCH] --- yaml --- r: 121631 b: refs/heads/master c: 2819f8ad6da1e24b5dd94a221978e61f2a9c972a h: refs/heads/master i: 121629: 430f4a898c651c6b602c6de790f729d3bb7ff47b 121627: 374dca7e249737a51f148d4c8078c08cd97915ce 121623: a4d669acc6b792ea8cf922b1cb8cf1f2a3b97cab 121615: 809bae191ed383dbaf6ce23ca5c36dab97c90e40 121599: a478c54816401f731273a3f5631fdc1834f58b17 v: v3 --- [refs] | 2 +- trunk/net/wireless/lib80211.c | 25 +++++++++++++++++++------ 2 files changed, 20 insertions(+), 7 deletions(-) diff --git a/[refs] b/[refs] index 46e81dcb73b1..11627c8a0785 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: c5d3dce875ef055ed9b14f169cc967cc2c8faf1f +refs/heads/master: 2819f8ad6da1e24b5dd94a221978e61f2a9c972a diff --git a/trunk/net/wireless/lib80211.c b/trunk/net/wireless/lib80211.c index 872cc8dc00a3..b8e34d31e757 100644 --- a/trunk/net/wireless/lib80211.c +++ b/trunk/net/wireless/lib80211.c @@ -6,6 +6,7 @@ */ #include +#include #include #include @@ -20,19 +21,31 @@ MODULE_LICENSE("GPL"); const char *escape_ssid(const char *ssid, u8 ssid_len) { - static char escaped[IEEE80211_MAX_SSID_LEN * 2 + 1]; + static char escaped[IEEE80211_MAX_SSID_LEN * 4 + 1]; const char *s = ssid; char *d = escaped; ssid_len = min_t(u8, ssid_len, IEEE80211_MAX_SSID_LEN); while (ssid_len--) { - if (*s == '\0') { - *d++ = '\\'; - *d++ = '0'; - s++; - } else { + if (isprint(*s)) { *d++ = *s++; + continue; } + + *d++ = '\\'; + if (*s == '\0') + *d++ = '0'; + else if (*s == '\n') + *d++ = 'n'; + else if (*s == '\r') + *d++ = 'r'; + else if (*s == '\t') + *d++ = 't'; + else if (*s == '\\') + *d++ = '\\'; + else + d += snprintf(d, 3, "%03o", *s); + s++; } *d = '\0'; return escaped;