diff options
author | Tor Didriksen <tor.didriksen@oracle.com> | 2011-01-14 10:05:14 +0100 |
---|---|---|
committer | Tor Didriksen <tor.didriksen@oracle.com> | 2011-01-14 10:05:14 +0100 |
commit | 8dfab82ee0cfe9ba731e1ff9096ebeca26d6591c (patch) | |
tree | a6039675e5fcc73cb3cde80664b6c2e4f1f83294 /sql/sql_analyse.cc | |
parent | cfa9a4bde6f519ed08b5791ba5f92c3f6da17c54 (diff) | |
download | mariadb-git-8dfab82ee0cfe9ba731e1ff9096ebeca26d6591c.tar.gz |
Bug #59241 invalid memory read in do_div_mod with doubly assigned variables
Fix: copy my_decimal by value, to avoid dangling pointers.
Diffstat (limited to 'sql/sql_analyse.cc')
-rw-r--r-- | sql/sql_analyse.cc | 7 |
1 files changed, 1 insertions, 6 deletions
diff --git a/sql/sql_analyse.cc b/sql/sql_analyse.cc index 4b6756188dd..e3c0ed28052 100644 --- a/sql/sql_analyse.cc +++ b/sql/sql_analyse.cc @@ -1,4 +1,4 @@ -/* Copyright (C) 2000-2006 MySQL AB +/* Copyright (c) 2000, 2011, Oracle and/or its affiliates. All rights reserved. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -521,9 +521,6 @@ void field_decimal::add() { found = 1; min_arg = max_arg = sum[0] = *dec; - min_arg.fix_buffer_pointer(); - max_arg.fix_buffer_pointer(); - sum[0].fix_buffer_pointer(); my_decimal_mul(E_DEC_FATAL_ERROR, sum_sqr, dec, dec); cur_sum= 0; min_length = max_length = length; @@ -545,12 +542,10 @@ void field_decimal::add() if (my_decimal_cmp(dec, &min_arg) < 0) { min_arg= *dec; - min_arg.fix_buffer_pointer(); } if (my_decimal_cmp(dec, &max_arg) > 0) { max_arg= *dec; - max_arg.fix_buffer_pointer(); } } } |