1
0
mirror of https://github.com/sqlite/sqlite.git synced 2025-07-30 19:03:16 +03:00

Avoid evaluating (INT_MIN/-1) with 32 bit signed numbers. It can cause SIGFPE. (CVS 3945)

FossilOrigin-Name: 2f186e916c982cde557e0bc1b925b10e6d58f8a1
This commit is contained in:
danielk1977
2007-05-08 13:57:34 +00:00
parent dce872b94e
commit 4b5710e486
4 changed files with 16 additions and 13 deletions

View File

@ -1,5 +1,5 @@
C Do\snot\scrash\sin\sthe\sinternal\sfunctions\ssqlite_rename_table()\sor\ssqlite_rename_trigger()\sif\sthey\sare\ssomehow\spassed\sunexpected\sinput.\s(CVS\s3944)
D 2007-05-08T12:37:46
C Avoid\sevaluating\s(INT_MIN/-1)\swith\s32\sbit\ssigned\snumbers.\sIt\scan\scause\sSIGFPE.\s(CVS\s3945)
D 2007-05-08T13:57:34
F Makefile.in 87b200ad9970907f76df734d29dff3d294c10935
F Makefile.linux-gcc 2d8574d1ba75f129aba2019f0b959db380a90935
F README 9c4e2d6706bdcc3efdd773ce752a8cdab4f90028
@ -132,7 +132,7 @@ F src/update.c 3359041db390a8f856d67272f299600e2104f350
F src/utf.c e64a48bc21aa973eb622dd47da87d56a4cdcf528
F src/util.c 5eff5cec4ae43490ca3fb97f10a25aac1a5f9b55
F src/vacuum.c 8bd895d29e7074e78d4e80f948e35ddc9cf2beef
F src/vdbe.c c942cb1882954e029e9788e07b709d12fba7ea47
F src/vdbe.c 07f70528ed4e51753e4416ed4faac33696e65c04
F src/vdbe.h 0025259af1939fb264a545816c69e4b5b8d52691
F src/vdbeInt.h 77a17f1a8bcbbb660bf4515c78d74280b4e8be5c
F src/vdbeapi.c 37d793559390bec8a00c556f651f21b5f9e589af
@ -218,7 +218,7 @@ F test/enc3.test 890508efff6677345e93bf2a8adb0489b30df030
F test/exclusive.test 5bc520ba366ae3d242420af025ab64d465b04706
F test/exclusive2.test f9738964b01e0bc4d4e5e270e347ca162da51799
F test/exclusive3.test 0e49c35b7e7cb8e7280b4ce3f0359d30b207d2ff
F test/expr.test ab21e2fc3613595131efd7d8bbca4b95ed5cc608
F test/expr.test a0b2bb93da2b191e93b34ee048cc03e0b2d8b6a0
F test/filefmt.test 053b622009fbbb74dd37921ffad374d852c13cd8
F test/fkey1.test dcb4f28eb22d5141f15161d6bdca9a4f58c95729
F test/format4.test 1f0cac8ff3895e9359ed87e41aaabee982a812eb
@ -485,7 +485,7 @@ F www/tclsqlite.tcl bb0d1357328a42b1993d78573e587c6dcbc964b9
F www/vdbe.tcl 87a31ace769f20d3627a64fa1fade7fed47b90d0
F www/version3.tcl 890248cf7b70e60c383b0e84d77d5132b3ead42b
F www/whentouse.tcl fc46eae081251c3c181bd79c5faef8195d7991a5
P 031a5915b68ec6827fee38b8b9dc74a9e0e09302
R 684f1105a6244bfeb0b37e4504ad2edd
P c2f90b465e37ea49c9e44415f6461e4f636bb64f
R 8a94e2639bae1ad4438acf25d1621598
U danielk1977
Z 3385e5fd0a6de2c3ae5f8b125538d83d
Z 56e204849a8e4b3c180ad14c5310ff41

View File

@ -1 +1 @@
c2f90b465e37ea49c9e44415f6461e4f636bb64f
2f186e916c982cde557e0bc1b925b10e6d58f8a1

View File

@ -43,7 +43,7 @@
** in this file for details. If in doubt, do not deviate from existing
** commenting and indentation practices when changing or adding code.
**
** $Id: vdbe.c,v 1.609 2007/05/08 12:12:17 drh Exp $
** $Id: vdbe.c,v 1.610 2007/05/08 13:57:34 danielk1977 Exp $
*/
#include "sqliteInt.h"
#include "os.h"
@ -1171,9 +1171,9 @@ case OP_Remainder: { /* same as TK_REM, no-push */
break;
}
default: {
int ia = (int)a;
int ib = (int)b;
if( ia==0.0 ) goto divide_by_zero;
i64 ia = (i64)a;
i64 ib = (i64)b;
if( ia==0 ) goto divide_by_zero;
b = ib % ia;
break;
}

View File

@ -11,7 +11,7 @@
# This file implements regression tests for SQLite library. The
# focus of this file is testing expressions.
#
# $Id: expr.test,v 1.53 2007/04/06 02:32:35 drh Exp $
# $Id: expr.test,v 1.54 2007/05/08 13:57:34 danielk1977 Exp $
set testdir [file dirname $argv0]
source $testdir/tester.tcl
@ -135,6 +135,9 @@ test_expr expr-1.101 {i1=0, i2=''} {i1=i2} 0
#
test_expr expr-1.102 {i1=40, i2=1} {i2<<i1} 1099511627776
test_expr expr-1.103 {i1=0} {(-2147483648.0 % -1)} 0.0
test_expr expr-1.104 {i1=0} {(-9223372036854775808 % -1)} 0.0
test_expr expr-1.105 {i1=0} {(-9223372036854775808 / -1)>1} 1
test_expr expr-2.1 {r1=1.23, r2=2.34} {r1+r2} 3.57
test_expr expr-2.2 {r1=1.23, r2=2.34} {r1-r2} -1.11