From 4938996973db6bf110397fc2ce6a91b267c380fa Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ji=C5=99=C3=AD=20Klime=C5=A1?= Date: Fri, 22 Jun 2012 13:04:18 +0200 Subject: [PATCH] ifcfg-rh: fix unescaping single quotes in WPA passphrases (WPA_PSK) (rh #833616) When the last character of the PSK was a backslash and the whole PSK was enclosed in single quotes, the unquoting/unescaping code mistakenly took trailing \' as an escaped quote and thus changed \ to '. See also 79757f10f30885d436f4c5cf528cb0bd4e0acafb (that introduced the code). --- .../ifcfg-rh/tests/network-scripts/keys-test-wifi-wpa-psk-2 | 2 +- src/settings/plugins/ifcfg-rh/tests/test-ifcfg-rh.c | 4 ++-- src/settings/plugins/ifcfg-rh/utils.c | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/settings/plugins/ifcfg-rh/tests/network-scripts/keys-test-wifi-wpa-psk-2 b/src/settings/plugins/ifcfg-rh/tests/network-scripts/keys-test-wifi-wpa-psk-2 index bf98da5a1b..6a63e817f8 100644 --- a/src/settings/plugins/ifcfg-rh/tests/network-scripts/keys-test-wifi-wpa-psk-2 +++ b/src/settings/plugins/ifcfg-rh/tests/network-scripts/keys-test-wifi-wpa-psk-2 @@ -1,2 +1,2 @@ -WPA_PSK=$'They\'re really saying I love you. >>`<<' +WPA_PSK=$'They\'re really saying I love you. >>`<< \' diff --git a/src/settings/plugins/ifcfg-rh/tests/test-ifcfg-rh.c b/src/settings/plugins/ifcfg-rh/tests/test-ifcfg-rh.c index 62882a76d3..83b60d2246 100644 --- a/src/settings/plugins/ifcfg-rh/tests/test-ifcfg-rh.c +++ b/src/settings/plugins/ifcfg-rh/tests/test-ifcfg-rh.c @@ -4927,7 +4927,7 @@ test_read_wifi_wpa_psk_2 (void) GError *error = NULL; const char *tmp; const char *expected_id = "System ipsum (test-wifi-wpa-psk-2)"; - const char *expected_psk = "They're really saying I love you. >>`<<"; + const char *expected_psk = "They're really saying I love you. >>`<< \\"; connection = connection_from_file (TEST_IFCFG_WIFI_WPA_PSK_2, NULL, @@ -12858,7 +12858,7 @@ int main (int argc, char **argv) FALSE, TRUE, TRUE, - "blah`oops\"grr'$*@~!%"); + "blah`oops\"grr'$*@~!%\\"); test_write_wifi_wpa_psk_adhoc (); test_write_wifi_wpa_eap_tls (); test_write_wifi_wpa_eap_ttls_tls (); diff --git a/src/settings/plugins/ifcfg-rh/utils.c b/src/settings/plugins/ifcfg-rh/utils.c index 0b7ddf36de..908d3364ea 100644 --- a/src/settings/plugins/ifcfg-rh/utils.c +++ b/src/settings/plugins/ifcfg-rh/utils.c @@ -189,7 +189,7 @@ utils_single_unquote_string (const char *str) i = quote + dollar; while (i < slen - quote) { - if (str[i] == escape_char && str[i+1] == q_char) + if (str[i] == escape_char && str[i+1] == q_char && i+1 < slen-quote) i++; new_str[j++] = str[i++]; }