stas            Sat Feb 17 01:45:52 2007 UTC

  Modified files:              (Branch: PHP_5_2)
    /php-src/ext/pspell pspell.c 
  Log:
  use safer functions, check error value
  
  
http://cvs.php.net/viewvc.cgi/php-src/ext/pspell/pspell.c?r1=1.45.2.4.2.5&r2=1.45.2.4.2.6&diff_format=u
Index: php-src/ext/pspell/pspell.c
diff -u php-src/ext/pspell/pspell.c:1.45.2.4.2.5 
php-src/ext/pspell/pspell.c:1.45.2.4.2.6
--- php-src/ext/pspell/pspell.c:1.45.2.4.2.5    Tue Jan 16 11:19:10 2007
+++ php-src/ext/pspell/pspell.c Sat Feb 17 01:45:52 2007
@@ -16,7 +16,7 @@
    +----------------------------------------------------------------------+
 */
 
-/* $Id: pspell.c,v 1.45.2.4.2.5 2007/01/16 11:19:10 tony2001 Exp $ */
+/* $Id: pspell.c,v 1.45.2.4.2.6 2007/02/17 01:45:52 stas Exp $ */
 
 #define IS_EXT_MODULE
 
@@ -186,16 +186,19 @@
         * 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");
+               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);
+                       pspell_config_replace(config, "data-dir", data_dir);
+                       pspell_config_replace(config, "dict-dir", dict_dir);
+               }
        }
 #endif
 
@@ -291,16 +294,19 @@
         * 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");
+               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);
+                       pspell_config_replace(config, "data-dir", data_dir);
+                       pspell_config_replace(config, "dict-dir", dict_dir);
+               }
        }
 #endif
 
@@ -649,16 +655,19 @@
      * 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");
+               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);
+                       pspell_config_replace(config, "data-dir", data_dir);
+                       pspell_config_replace(config, "dict-dir", dict_dir);
+               }
        }
 #endif
 

-- 
PHP CVS Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to