From: Stanislav Malyshev Date: Sat, 17 Feb 2007 01:45:52 +0000 (+0000) Subject: use safer functions, check error value X-Git-Tag: php-5.2.2RC1~374 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=05584eb55a55816fdfe7ed4913d97334abec4f6c;p=php use safer functions, check error value --- diff --git a/ext/pspell/pspell.c b/ext/pspell/pspell.c index 478d6ad9e5..c9e5b806a2 100644 --- a/ext/pspell/pspell.c +++ b/ext/pspell/pspell.c @@ -186,16 +186,19 @@ static PHP_FUNCTION(pspell_new) * pointing to the location of the dictionaries */ if(0 == RegOpenKey(HKEY_LOCAL_MACHINE, "Software\\Aspell", &hkey)) { + LONG result; dwLen = sizeof(aspell_dir) - 1; - RegQueryValueEx(hkey, "", NULL, &dwType, (LPBYTE)&aspell_dir, &dwLen); + result = RegQueryValueEx(hkey, "", NULL, &dwType, (LPBYTE)&aspell_dir, &dwLen); RegCloseKey(hkey); - strcpy(data_dir, aspell_dir); - strcat(data_dir, "\\data"); - strcpy(dict_dir, aspell_dir); - strcat(dict_dir, "\\dict"); - - pspell_config_replace(config, "data-dir", data_dir); - pspell_config_replace(config, "dict-dir", dict_dir); + if(result == ERROR_SUCCESS) { + strlcpy(data_dir, aspell_dir, sizeof(data_dir)); + strlcat(data_dir, "\\data", sizeof(data_dir)); + strlcpy(dict_dir, aspell_dir, sizeof(dict_dir)); + strlcat(dict_dir, "\\dict", sizeof(dict_dir)); + + pspell_config_replace(config, "data-dir", data_dir); + pspell_config_replace(config, "dict-dir", dict_dir); + } } #endif @@ -291,16 +294,19 @@ static PHP_FUNCTION(pspell_new_personal) * pointing to the location of the dictionaries */ if(0 == RegOpenKey(HKEY_LOCAL_MACHINE, "Software\\Aspell", &hkey)) { + LONG result; dwLen = sizeof(aspell_dir) - 1; - RegQueryValueEx(hkey, "", NULL, &dwType, (LPBYTE)&aspell_dir, &dwLen); + result = RegQueryValueEx(hkey, "", NULL, &dwType, (LPBYTE)&aspell_dir, &dwLen); RegCloseKey(hkey); - strcpy(data_dir, aspell_dir); - strcat(data_dir, "\\data"); - strcpy(dict_dir, aspell_dir); - strcat(dict_dir, "\\dict"); - - pspell_config_replace(config, "data-dir", data_dir); - pspell_config_replace(config, "dict-dir", dict_dir); + if(result == ERROR_SUCCESS) { + strlcpy(data_dir, aspell_dir, sizeof(data_dir)); + strlcat(data_dir, "\\data", sizeof(data_dir)); + strlcpy(dict_dir, aspell_dir, sizeof(dict_dir)); + strlcat(dict_dir, "\\dict", sizeof(dict_dir)); + + pspell_config_replace(config, "data-dir", data_dir); + pspell_config_replace(config, "dict-dir", dict_dir); + } } #endif @@ -649,16 +655,19 @@ static PHP_FUNCTION(pspell_config_create) * pointing to the location of the dictionaries */ if(0 == RegOpenKey(HKEY_LOCAL_MACHINE, "Software\\Aspell", &hkey)) { + LONG result; dwLen = sizeof(aspell_dir) - 1; - RegQueryValueEx(hkey, "", NULL, &dwType, (LPBYTE)&aspell_dir, &dwLen); + result = RegQueryValueEx(hkey, "", NULL, &dwType, (LPBYTE)&aspell_dir, &dwLen); RegCloseKey(hkey); - strcpy(data_dir, aspell_dir); - strcat(data_dir, "\\data"); - strcpy(dict_dir, aspell_dir); - strcat(dict_dir, "\\dict"); - - pspell_config_replace(config, "data-dir", data_dir); - pspell_config_replace(config, "dict-dir", dict_dir); + if(result == ERROR_SUCCESS) { + strlcpy(data_dir, aspell_dir, sizeof(data_dir)); + strlcat(data_dir, "\\data", sizeof(data_dir)); + strlcpy(dict_dir, aspell_dir, sizeof(dict_dir)); + strlcat(dict_dir, "\\dict", sizeof(dict_dir)); + + pspell_config_replace(config, "data-dir", data_dir); + pspell_config_replace(config, "dict-dir", dict_dir); + } } #endif