Sophie

Sophie

distrib > Mandriva > 10.2 > x86_64 > by-pkgid > 8a04142a85890993c70e73a5f91ee67b > files > 7

MySQL-4.1.11-1.6.102mdk.src.rpm

--- mysql-4.1.11/sql/sql_udf.cc.can-2005-2558	2005-04-01 04:36:47.000000000 -0700
+++ mysql-4.1.11/sql/sql_udf.cc	2005-09-12 10:59:02.862614383 -0600
@@ -193,7 +193,9 @@
       This is done to ensure that only approved dll from the system
       directories are used (to make this even remotely secure).
     */
-    if (strchr(dl_name, '/') || name.length > NAME_LEN)
+    if (strchr(dl_name, '/') || 
+        IF_WIN(strchr(dl_name, '\\'),0) ||
+        name.length > NAME_LEN)
     {
       sql_print_error("Invalid row in mysql.func table for function '%.64s'",
                       name.str);
@@ -222,7 +224,7 @@
     }
     tmp->dlhandle = dl;
     {
-      char buf[MAX_FIELD_NAME+16], *missing;
+      char buf[NAME_LEN+16], *missing;
       if ((missing= init_syms(tmp, buf)))
       {
         sql_print_error(ER(ER_CANT_FIND_DL_ENTRY), missing);
@@ -409,7 +411,7 @@
     This is done to ensure that only approved dll from the system
     directories are used (to make this even remotely secure).
   */
-  if (strchr(udf->dl, '/'))
+  if (strchr(udf->dl, '/') || IF_WIN(strchr(dl_name, '\\'),0))
   {
     send_error(thd, ER_UDF_NO_PATHS,ER(ER_UDF_NO_PATHS));
     DBUG_RETURN(1);
@@ -439,7 +441,7 @@
   }
   udf->dlhandle=dl;
   {
-    char buf[MAX_FIELD_NAME+16], *missing;
+    char buf[NAME_LEN+16], *missing;
     if ((missing= init_syms(udf, buf)))
     {
       net_printf(thd, ER_CANT_FIND_DL_ENTRY, missing);