~drizzle-trunk/drizzle/development

« back to all changes in this revision

Viewing changes to mysys/mf_loadpath.cc

Replace MAX_(DATE|TIME).*_WIDTH defines in definitions.h with real (and correct) static const members to Temporal types.

This fixes the buffer overflow in https://bugs.launchpad.net/drizzle/+bug/373468

It also removes a handwritten snprintf in field/datetime.cc
However... this caused us to have to change Temporal to have a way to not
"convert" the int64_t value (so 20090101 becomes 20090101000000 etc) as it
has already been converted and we just want the Temporal type to do the
to_string conversion.

This still causes a failure in 'metadata' test due to size of timestamp type. I need feedback from Jay on when the usecond code comes into play to know the correct fix for this.

Show diffs side-by-side

added added

removed removed

Lines of Context:
13
13
   along with this program; if not, write to the Free Software
14
14
   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA */
15
15
 
16
 
#include "config.h"
17
 
 
18
 
#include "drizzled/internal/my_sys.h"
19
 
#include "drizzled/internal/m_string.h"
20
 
 
21
 
namespace drizzled
22
 
{
23
 
namespace internal
24
 
{
 
16
#include "mysys/mysys_priv.h"
 
17
#include <mystrings/m_string.h>
25
18
 
26
19
        /* Returns full load-path for a file. to may be = path */
27
20
        /* if path is a hard-path return path */
40
33
      test_if_hard_path(path))
41
34
    strcpy(buff,path);
42
35
  else if ((is_cur=(path[0] == FN_CURLIB && path[1] == FN_LIBCHAR)) ||
43
 
           (strncmp(path,FN_PARENTDIR, strlen(FN_PARENTDIR)) == 0) ||
 
36
           (is_prefix(path,FN_PARENTDIR)) ||
44
37
           ! own_path_prefix)
45
38
  {
46
39
    if (is_cur)
51
44
      strcpy(buff,path);                        /* Return org file name */
52
45
  }
53
46
  else
54
 
    snprintf(buff, sizeof(buff), "%s%s",own_path_prefix,path);
 
47
    sprintf(buff,"%s%s",own_path_prefix,path);
55
48
  strcpy(to,buff);
56
49
  return(to);
57
50
} /* my_load_path */
58
 
 
59
 
} /* namespace internal */
60
 
} /* namespace drizzled */