Hex Artifact Content
Not logged in

Artifact 9459d6bdbfb72469a74fd4db8aa1f5258c006782:

Ticket change [9459d6bdbf] - New ticket [3caef588e3] dereferencing type-punned pointer in sqlite3.c. by rwilson 2010-01-01 17:00:57.
0000: 44 20 32 30 31 30 2d 30 31 2d 30 31 54 31 37 3a  D 2010-01-01T17:
0010: 30 30 3a 35 37 0a 4a 20 63 6f 6d 6d 65 6e 74 20  00:57.J comment 
0020: 69 5c 73 6b 6e 6f 77 5c 73 74 68 69 73 5c 73 69  i\sknow\sthis\si
0030: 73 5c 73 61 6e 5c 73 73 71 6c 69 74 65 5c 73 69  s\san\ssqlite\si
0040: 73 73 75 65 2c 5c 73 62 75 74 5c 73 69 5c 73 63  ssue,\sbut\si\sc
0050: 61 6e 27 74 5c 73 63 72 65 61 74 65 5c 73 74 69  an't\screate\sti
0060: 63 6b 65 74 73 5c 73 6f 6e 5c 73 73 71 6c 69 74  ckets\son\ssqlit
0070: 65 2e 6f 72 67 2c 5c 73 6e 65 69 74 68 65 72 5c  e.org,\sneither\
0080: 73 69 73 5c 73 74 68 65 5c 73 61 6d 61 67 6c 61  sis\sthe\samagla
0090: 6d 61 74 69 6f 6e 5c 73 69 6e 5c 73 74 68 65 5c  mation\sin\sthe\
00a0: 73 73 71 6c 69 74 65 5c 73 73 6f 75 72 63 65 5c  ssqlite\ssource\
00b0: 73 74 72 65 65 2e 5c 73 5c 73 77 68 65 6e 5c 73  stree.\s\swhen\s
00c0: 69 5c 73 62 75 69 6c 64 5c 73 66 6f 73 73 69 6c  i\sbuild\sfossil
00d0: 5c 73 69 5c 73 67 65 74 5c 73 74 68 65 5c 73 66  \si\sget\sthe\sf
00e0: 6f 6c 6c 6f 77 69 6e 67 5c 73 77 61 72 6e 69 6e  ollowing\swarnin
00f0: 67 3a 5c 72 5c 6e 5c 72 5c 6e 3c 70 72 65 3e 5c  g:\r\n\r\n<pre>\
0100: 72 5c 6e 67 63 63 5c 73 2d 4f 73 5c 73 2d 57 61  r\ngcc\s-Os\s-Wa
0110: 6c 6c 5c 73 2d 44 46 4f 53 53 49 4c 5f 49 31 38  ll\s-DFOSSIL_I18
0120: 4e 3d 30 5c 73 2d 4c 2f 6d 69 6e 67 77 2f 6c 69  N=0\s-L/mingw/li
0130: 62 5c 73 2d 49 2f 6d 69 6e 67 77 2f 69 6e 63 6c  b\s-I/mingw/incl
0140: 75 64 65 5c 73 5c 73 2d 49 2e 5c 73 2d 49 2e 2f  ude\s\s-I.\s-I./
0150: 73 72 63 5c 73 2d 44 53 51 4c 49 54 45 5f 4f 4d  src\s-DSQLITE_OM
0160: 49 54 5f 4c 4f 41 44 5f 45 58 54 45 4e 53 49 4f  IT_LOAD_EXTENSIO
0170: 4e 3d 31 5c 73 2d 44 53 51 4c 49 54 45 5f 54 48  N=1\s-DSQLITE_TH
0180: 52 45 41 44 53 41 46 45 3d 30 5c 73 2d 44 53 51  READSAFE=0\s-DSQ
0190: 4c 49 54 45 5f 44 45 46 41 55 4c 54 5f 46 49 4c  LITE_DEFAULT_FIL
01a0: 45 5f 46 4f 52 4d 41 54 3d 34 5c 73 2d 44 6c 6f  E_FORMAT=4\s-Dlo
01b0: 63 61 6c 74 69 6d 65 3d 66 6f 73 73 69 6c 5f 6c  caltime=fossil_l
01c0: 6f 63 61 6c 74 69 6d 65 5c 73 2d 63 5c 73 2e 2f  ocaltime\s-c\s./
01d0: 73 72 63 2f 73 71 6c 69 74 65 33 2e 63 5c 73 2d  src/sqlite3.c\s-
01e0: 6f 5c 73 73 71 6c 69 74 65 33 2e 6f 5c 72 5c 6e  o\ssqlite3.o\r\n
01f0: 2e 2f 73 72 63 2f 73 71 6c 69 74 65 33 2e 63 3a  ./src/sqlite3.c:
0200: 5c 73 49 6e 5c 73 66 75 6e 63 74 69 6f 6e 5c 73  \sIn\sfunction\s
0210: 60 67 65 74 4c 61 73 74 45 72 72 6f 72 4d 73 67  `getLastErrorMsg
0220: 27 3a 5c 72 5c 6e 2e 2f 73 72 63 2f 73 71 6c 69  ':\r\n./src/sqli
0230: 74 65 33 2e 63 3a 32 38 34 35 30 3a 5c 73 77 61  te3.c:28450:\swa
0240: 72 6e 69 6e 67 3a 5c 73 64 65 72 65 66 65 72 65  rning:\sderefere
0250: 6e 63 69 6e 67 5c 73 74 79 70 65 2d 70 75 6e 6e  ncing\stype-punn
0260: 65 64 5c 73 70 6f 69 6e 74 65 72 5c 73 77 69 6c  ed\spointer\swil
0270: 6c 5c 73 62 72 65 61 6b 5c 73 73 74 72 69 63 74  l\sbreak\sstrict
0280: 2d 61 6c 69 61 73 69 6e 67 5c 73 72 75 6c 65 73  -aliasing\srules
0290: 5c 72 5c 6e 3c 2f 70 72 65 3e 5c 72 5c 6e 5c 72  \r\n</pre>\r\n\r
02a0: 5c 6e 74 68 65 5c 73 77 61 72 6e 69 6e 67 5c 73  \nthe\swarning\s
02b0: 69 73 5c 73 69 6e 6e 6f 63 75 6f 75 73 2c 5c 73  is\sinnocuous,\s
02c0: 62 75 74 5c 73 74 68 69 73 5c 73 70 61 74 63 68  but\sthis\spatch
02d0: 5c 73 72 65 73 6f 6c 76 65 73 5c 73 69 74 2e 5c  \sresolves\sit.\
02e0: 73 5c 73 69 27 6d 5c 73 70 72 65 74 74 79 5c 73  s\si'm\spretty\s
02f0: 73 75 72 65 5c 73 74 68 65 5c 73 63 6f 64 65 5c  sure\sthe\scode\
0300: 73 69 73 5c 73 63 6f 72 72 65 63 74 2c 5c 73 62  sis\scorrect,\sb
0310: 75 74 5c 73 69 5c 73 63 6f 75 6c 64 5c 73 75 73  ut\si\scould\sus
0320: 65 5c 73 61 5c 73 63 6f 64 65 5c 73 72 65 76 69  e\sa\scode\srevi
0330: 65 77 2e 5c 73 5c 73 68 6f 70 65 66 75 6c 6c 79  ew.\s\shopefully
0340: 2c 5c 73 69 5c 73 64 69 64 6e 27 74 5c 73 6d 61  ,\si\sdidn't\sma
0350: 6b 65 5c 73 61 5c 73 6e 6f 6f 62 5c 73 6d 69 73  ke\sa\snoob\smis
0360: 74 61 6b 65 2e 5c 72 5c 6e 5c 72 5c 6e 3c 70 72  take.\r\n\r\n<pr
0370: 65 3e 5c 72 5c 6e 2d 2d 2d 5c 73 73 71 6c 69 74  e>\r\n---\ssqlit
0380: 65 33 2e 63 5c 72 5c 6e 2b 2b 2b 5c 73 73 71 6c  e3.c\r\n+++\ssql
0390: 69 74 65 33 2e 63 5c 72 5c 6e 40 40 5c 73 2d 32  ite3.c\r\n@@\s-2
03a0: 38 34 33 38 2c 32 35 5c 73 2b 32 38 34 33 38 2c  8438,25\s+28438,
03b0: 32 39 5c 73 40 40 5c 72 5c 6e 5c 73 5c 73 5c 73  29\s@@\r\n\s\s\s
03c0: 2a 2a 5c 73 62 75 66 66 65 72 2c 5c 73 65 78 63  **\sbuffer,\sexc
03d0: 6c 75 64 69 6e 67 5c 73 74 68 65 5c 73 74 65 72  luding\sthe\ster
03e0: 6d 69 6e 61 74 69 6e 67 5c 73 6e 75 6c 6c 5c 73  minating\snull\s
03f0: 63 68 61 72 2e 5c 72 5c 6e 5c 73 5c 73 5c 73 2a  char.\r\n\s\s\s*
0400: 2f 5c 72 5c 6e 5c 73 5c 73 5c 73 44 57 4f 52 44  /\r\n\s\s\sDWORD
0410: 5c 73 65 72 72 6f 72 5c 73 3d 5c 73 47 65 74 4c  \serror\s=\sGetL
0420: 61 73 74 45 72 72 6f 72 28 29 3b 5c 72 5c 6e 5c  astError();\r\n\
0430: 73 5c 73 5c 73 44 57 4f 52 44 5c 73 64 77 4c 65  s\s\sDWORD\sdwLe
0440: 6e 5c 73 3d 5c 73 30 3b 5c 72 5c 6e 5c 73 5c 73  n\s=\s0;\r\n\s\s
0450: 5c 73 63 68 61 72 5c 73 2a 7a 4f 75 74 5c 73 3d  \schar\s*zOut\s=
0460: 5c 73 30 3b 5c 72 5c 6e 2b 5c 73 5c 73 75 6e 69  \s0;\r\n+\s\suni
0470: 6f 6e 5c 73 7b 5c 72 5c 6e 2b 5c 73 5c 73 5c 73  on\s{\r\n+\s\s\s
0480: 5c 73 57 43 48 41 52 2a 2a 5c 73 70 7a 77 63 3b  \sWCHAR**\spzwc;
0490: 5c 72 5c 6e 2b 5c 73 5c 73 5c 73 5c 73 4c 50 57  \r\n+\s\s\s\sLPW
04a0: 53 54 52 5c 73 6c 70 77 73 3b 5c 72 5c 6e 2b 5c  STR\slpws;\r\n+\
04b0: 73 5c 73 7d 5c 73 77 75 3b 5c 72 5c 6e 3c 2f 70  s\s}\swu;\r\n</p
04c0: 72 65 3e 5c 72 5c 6e 5c 72 5c 6e 3c 70 72 65 3e  re>\r\n\r\n<pre>
04d0: 5c 72 5c 6e 5c 73 5c 73 5c 73 69 66 28 5c 73 69  \r\n\s\s\sif(\si
04e0: 73 4e 54 28 29 5c 73 29 7b 5c 72 5c 6e 2d 5c 73  sNT()\s){\r\n-\s
04f0: 5c 73 5c 73 5c 73 57 43 48 41 52 5c 73 2a 7a 54  \s\s\sWCHAR\s*zT
0500: 65 6d 70 57 69 64 65 5c 73 3d 5c 73 4e 55 4c 4c  empWide\s=\sNULL
0510: 3b 5c 72 5c 6e 2b 5c 73 5c 73 5c 73 5c 73 2a 77  ;\r\n+\s\s\s\s*w
0520: 75 2e 70 7a 77 63 5c 73 3d 5c 73 4e 55 4c 4c 3b  u.pzwc\s=\sNULL;
0530: 5c 72 5c 6e 5c 73 5c 73 5c 73 5c 73 5c 73 64 77  \r\n\s\s\s\s\sdw
0540: 4c 65 6e 5c 73 3d 5c 73 46 6f 72 6d 61 74 4d 65  Len\s=\sFormatMe
0550: 73 73 61 67 65 57 28 46 4f 52 4d 41 54 5f 4d 45  ssageW(FORMAT_ME
0560: 53 53 41 47 45 5f 41 4c 4c 4f 43 41 54 45 5f 42  SSAGE_ALLOCATE_B
0570: 55 46 46 45 52 5c 73 7c 5c 73 46 4f 52 4d 41 54  UFFER\s|\sFORMAT
0580: 5f 4d 45 53 53 41 47 45 5f 46 52 4f 4d 5f 53 59  _MESSAGE_FROM_SY
0590: 53 54 45 4d 5c 73 7c 5c 73 46 4f 52 4d 41 54 5f  STEM\s|\sFORMAT_
05a0: 4d 45 53 53 41 47 45 5f 49 47 4e 4f 52 45 5f 49  MESSAGE_IGNORE_I
05b0: 4e 53 45 52 54 53 2c 5c 72 5c 6e 5c 73 5c 73 5c  NSERTS,\r\n\s\s\
05c0: 73 5c 73 5c 73 5c 73 5c 73 5c 73 5c 73 5c 73 5c  s\s\s\s\s\s\s\s\
05d0: 73 5c 73 5c 73 5c 73 5c 73 5c 73 5c 73 5c 73 5c  s\s\s\s\s\s\s\s\
05e0: 73 5c 73 5c 73 5c 73 5c 73 5c 73 5c 73 5c 73 5c  s\s\s\s\s\s\s\s\
05f0: 73 5c 73 4e 55 4c 4c 2c 5c 72 5c 6e 5c 73 5c 73  s\sNULL,\r\n\s\s
0600: 5c 73 5c 73 5c 73 5c 73 5c 73 5c 73 5c 73 5c 73  \s\s\s\s\s\s\s\s
0610: 5c 73 5c 73 5c 73 5c 73 5c 73 5c 73 5c 73 5c 73  \s\s\s\s\s\s\s\s
0620: 5c 73 5c 73 5c 73 5c 73 5c 73 5c 73 5c 73 5c 73  \s\s\s\s\s\s\s\s
0630: 5c 73 5c 73 65 72 72 6f 72 2c 5c 72 5c 6e 5c 73  \s\serror,\r\n\s
0640: 5c 73 5c 73 5c 73 5c 73 5c 73 5c 73 5c 73 5c 73  \s\s\s\s\s\s\s\s
0650: 5c 73 5c 73 5c 73 5c 73 5c 73 5c 73 5c 73 5c 73  \s\s\s\s\s\s\s\s
0660: 5c 73 5c 73 5c 73 5c 73 5c 73 5c 73 5c 73 5c 73  \s\s\s\s\s\s\s\s
0670: 5c 73 5c 73 5c 73 30 2c 5c 72 5c 6e 2d 5c 73 5c  \s\s\s0,\r\n-\s\
0680: 73 5c 73 5c 73 5c 73 5c 73 5c 73 5c 73 5c 73 5c  s\s\s\s\s\s\s\s\
0690: 73 5c 73 5c 73 5c 73 5c 73 5c 73 5c 73 5c 73 5c  s\s\s\s\s\s\s\s\
06a0: 73 5c 73 5c 73 5c 73 5c 73 5c 73 5c 73 5c 73 5c  s\s\s\s\s\s\s\s\
06b0: 73 5c 73 28 4c 50 57 53 54 52 29 5c 73 26 7a 54  s\s(LPWSTR)\s&zT
06c0: 65 6d 70 57 69 64 65 2c 5c 72 5c 6e 2b 5c 73 5c  empWide,\r\n+\s\
06d0: 73 5c 73 5c 73 5c 73 5c 73 5c 73 5c 73 5c 73 5c  s\s\s\s\s\s\s\s\
06e0: 73 5c 73 5c 73 5c 73 5c 73 5c 73 5c 73 5c 73 5c  s\s\s\s\s\s\s\s\
06f0: 73 5c 73 5c 73 5c 73 5c 73 5c 73 5c 73 5c 73 5c  s\s\s\s\s\s\s\s\
0700: 73 5c 73 77 75 2e 6c 70 77 73 2c 5c 72 5c 6e 5c  s\swu.lpws,\r\n\
0710: 73 5c 73 5c 73 5c 73 5c 73 5c 73 5c 73 5c 73 5c  s\s\s\s\s\s\s\s\
0720: 73 5c 73 5c 73 5c 73 5c 73 5c 73 5c 73 5c 73 5c  s\s\s\s\s\s\s\s\
0730: 73 5c 73 5c 73 5c 73 5c 73 5c 73 5c 73 5c 73 5c  s\s\s\s\s\s\s\s\
0740: 73 5c 73 5c 73 5c 73 30 2c 5c 72 5c 6e 5c 73 5c  s\s\s\s0,\r\n\s\
0750: 73 5c 73 5c 73 5c 73 5c 73 5c 73 5c 73 5c 73 5c  s\s\s\s\s\s\s\s\
0760: 73 5c 73 5c 73 5c 73 5c 73 5c 73 5c 73 5c 73 5c  s\s\s\s\s\s\s\s\
0770: 73 5c 73 5c 73 5c 73 5c 73 5c 73 5c 73 5c 73 5c  s\s\s\s\s\s\s\s\
0780: 73 5c 73 5c 73 30 29 3b 5c 72 5c 6e 5c 73 5c 73  s\s\s0);\r\n\s\s
0790: 5c 73 5c 73 5c 73 69 66 28 5c 73 64 77 4c 65 6e  \s\s\sif(\sdwLen
07a0: 5c 73 3e 5c 73 30 5c 73 29 7b 5c 72 5c 6e 5c 73  \s>\s0\s){\r\n\s
07b0: 5c 73 5c 73 5c 73 5c 73 5c 73 5c 73 2f 2a 5c 73  \s\s\s\s\s\s/*\s
07c0: 61 6c 6c 6f 63 61 74 65 5c 73 61 5c 73 62 75 66  allocate\sa\sbuf
07d0: 66 65 72 5c 73 61 6e 64 5c 73 63 6f 6e 76 65 72  fer\sand\sconver
07e0: 74 5c 73 74 6f 5c 73 55 54 46 38 5c 73 2a 2f 5c  t\sto\sUTF8\s*/\
07f0: 72 5c 6e 2d 5c 73 5c 73 5c 73 5c 73 5c 73 5c 73  r\n-\s\s\s\s\s\s
0800: 7a 4f 75 74 5c 73 3d 5c 73 75 6e 69 63 6f 64 65  zOut\s=\sunicode
0810: 54 6f 55 74 66 38 28 7a 54 65 6d 70 57 69 64 65  ToUtf8(zTempWide
0820: 29 3b 5c 72 5c 6e 2b 5c 73 5c 73 5c 73 5c 73 5c  );\r\n+\s\s\s\s\
0830: 73 5c 73 7a 4f 75 74 5c 73 3d 5c 73 75 6e 69 63  s\szOut\s=\sunic
0840: 6f 64 65 54 6f 55 74 66 38 28 2a 77 75 2e 70 7a  odeToUtf8(*wu.pz
0850: 77 63 29 3b 5c 72 5c 6e 5c 73 5c 73 5c 73 5c 73  wc);\r\n\s\s\s\s
0860: 5c 73 5c 73 5c 73 2f 2a 5c 73 66 72 65 65 5c 73  \s\s\s/*\sfree\s
0870: 74 68 65 5c 73 73 79 73 74 65 6d 5c 73 62 75 66  the\ssystem\sbuf
0880: 66 65 72 5c 73 61 6c 6c 6f 63 61 74 65 64 5c 73  fer\sallocated\s
0890: 62 79 5c 73 46 6f 72 6d 61 74 4d 65 73 73 61 67  by\sFormatMessag
08a0: 65 5c 73 2a 2f 5c 72 5c 6e 2d 5c 73 5c 73 5c 73  e\s*/\r\n-\s\s\s
08b0: 5c 73 5c 73 5c 73 4c 6f 63 61 6c 46 72 65 65 28  \s\s\sLocalFree(
08c0: 7a 54 65 6d 70 57 69 64 65 29 3b 5c 72 5c 6e 2b  zTempWide);\r\n+
08d0: 5c 73 5c 73 5c 73 5c 73 5c 73 5c 73 4c 6f 63 61  \s\s\s\s\s\sLoca
08e0: 6c 46 72 65 65 28 2a 77 75 2e 70 7a 77 63 29 3b  lFree(*wu.pzwc);
08f0: 5c 72 5c 6e 5c 73 5c 73 5c 73 5c 73 5c 73 7d 5c  \r\n\s\s\s\s\s}\
0900: 72 5c 6e 5c 73 2f 2a 5c 73 69 73 4e 54 28 29 5c  r\n\s/*\sisNT()\
0910: 73 69 73 5c 73 31 5c 73 69 66 5c 73 53 51 4c 49  sis\s1\sif\sSQLI
0920: 54 45 5f 4f 53 5f 57 49 4e 43 45 3d 3d 31 2c 5c  TE_OS_WINCE==1,\
0930: 73 73 6f 5c 73 74 68 69 73 5c 73 65 6c 73 65 5c  sso\sthis\selse\
0940: 73 69 73 5c 73 6e 65 76 65 72 5c 73 65 78 65 63  sis\snever\sexec
0950: 75 74 65 64 2e 5c 72 5c 6e 5c 73 2a 2a 5c 73 53  uted.\r\n\s**\sS
0960: 69 6e 63 65 5c 73 74 68 65 5c 73 41 53 43 49 49  ince\sthe\sASCII
0970: 5c 73 76 65 72 73 69 6f 6e 5c 73 6f 66 5c 73 74  \sversion\sof\st
0980: 68 65 73 65 5c 73 57 69 6e 64 6f 77 73 5c 73 41  hese\sWindows\sA
0990: 50 49 5c 73 64 6f 5c 73 6e 6f 74 5c 73 65 78 69  PI\sdo\snot\sexi
09a0: 73 74 5c 73 66 6f 72 5c 73 57 49 4e 43 45 2c 5c  st\sfor\sWINCE,\
09b0: 72 5c 6e 5c 73 2a 2a 5c 73 69 74 27 73 5c 73 69  r\n\s**\sit's\si
09c0: 6d 70 6f 72 74 61 6e 74 5c 73 74 6f 5c 73 6e 6f  mportant\sto\sno
09d0: 74 5c 73 72 65 66 65 72 65 6e 63 65 5c 73 74 68  t\sreference\sth
09e0: 65 6d 5c 73 66 6f 72 5c 73 57 49 4e 43 45 5c 73  em\sfor\sWINCE\s
09f0: 62 75 69 6c 64 73 2e 5c 72 5c 6e 5c 73 2a 2f 5c  builds.\r\n\s*/\
0a00: 72 5c 6e 3c 2f 70 72 65 3e 0a 4a 20 66 6f 75 6e  r\n</pre>.J foun
0a10: 64 69 6e 20 64 64 64 63 35 31 34 30 35 33 0a 4a  din dddc514053.J
0a20: 20 70 72 69 76 61 74 65 5f 63 6f 6e 74 61 63 74   private_contact
0a30: 20 32 33 35 39 30 38 39 65 66 37 35 33 62 63 39   2359089ef753bc9
0a40: 36 65 31 32 37 34 33 65 32 39 39 32 34 33 64 35  6e12743e299243d5
0a50: 32 33 32 63 37 34 39 66 61 0a 4a 20 73 65 76 65  232c749fa.J seve
0a60: 72 69 74 79 20 43 6f 73 6d 65 74 69 63 0a 4a 20  rity Cosmetic.J 
0a70: 73 74 61 74 75 73 20 4f 70 65 6e 0a 4a 20 74 69  status Open.J ti
0a80: 74 6c 65 20 64 65 72 65 66 65 72 65 6e 63 69 6e  tle dereferencin
0a90: 67 5c 73 74 79 70 65 2d 70 75 6e 6e 65 64 5c 73  g\stype-punned\s
0aa0: 70 6f 69 6e 74 65 72 5c 73 69 6e 5c 73 73 71 6c  pointer\sin\ssql
0ab0: 69 74 65 33 2e 63 0a 4a 20 74 79 70 65 20 42 75  ite3.c.J type Bu
0ac0: 69 6c 64 5f 50 72 6f 62 6c 65 6d 0a 4b 20 33 63  ild_Problem.K 3c
0ad0: 61 65 66 35 38 38 65 33 63 63 31 37 32 34 61 38  aef588e3cc1724a8
0ae0: 61 38 34 32 36 65 35 39 36 34 61 30 30 38 38 64  a8426e5964a0088d
0af0: 33 35 62 31 35 62 0a 55 20 72 77 69 6c 73 6f 6e  35b15b.U rwilson
0b00: 0a 5a 20 31 30 34 33 36 31 62 34 66 33 33 61 39  .Z 104361b4f33a9
0b10: 65 38 62 32 65 39 33 61 36 65 36 36 63 64 32 36  e8b2e93a6e66cd26
0b20: 32 39 61 0a                                      29a.