MySQL++

Hex Artifact Content
Login

Hex Artifact Content

Artifact 0126570deb9f9e06ec9af516c7f65f3ca4aae8ab69ca827eddc51dfaba7f6af9:

Ticket change [0126570deb] - New ticket [e6cf4b6fbb4b8cea|e6cf4b6fbb] <i>Errors not checked when fetch_row returns NULL</i>. by anonymous 2019-10-25 23:16:29.
0000: 44 20 32 30 31 39 2d 31 30 2d 32 35 54 32 33 3a  D 2019-10-25T23:
0010: 31 36 3a 32 39 2e 38 39 37 0a 4a 20 66 6f 75 6e  16:29.897.J foun
0020: 64 69 6e 20 33 2e 32 2e 34 0a 4a 20 69 63 6f 6d  din 3.2.4.J icom
0030: 6d 65 6e 74 20 49 6e 5c 73 55 73 65 51 75 65 72  ment In\sUseQuer
0040: 79 52 65 73 75 6c 74 3a 3a 66 65 74 63 68 5f 72  yResult::fetch_r
0050: 6f 77 5c 73 61 6e 64 5c 73 53 74 6f 72 65 51 75  ow\sand\sStoreQu
0060: 65 72 79 52 65 73 75 6c 74 3a 3a 53 74 6f 72 65  eryResult::Store
0070: 51 75 65 72 79 52 65 73 75 6c 74 2c 5c 73 77 68  QueryResult,\swh
0080: 65 6e 5c 72 5c 6e 44 42 44 72 69 76 65 72 3a 3a  en\r\nDBDriver::
0090: 66 65 74 63 68 5f 72 6f 77 5c 73 72 65 74 75 72  fetch_row\sretur
00a0: 6e 73 5c 73 4e 55 4c 4c 5c 73 69 74 5c 73 69 73  ns\sNULL\sit\sis
00b0: 5c 73 61 73 73 75 6d 65 64 5c 73 74 6f 5c 73 6d  \sassumed\sto\sm
00c0: 65 61 6e 5c 73 74 68 65 72 65 5c 73 61 72 65 5c  ean\sthere\sare\
00d0: 73 6e 6f 5c 73 6d 6f 72 65 5c 72 5c 6e 72 6f 77  sno\smore\r\nrow
00e0: 73 2e 5c 73 44 42 44 72 69 76 65 72 3a 3a 66 65  s.\sDBDriver::fe
00f0: 74 63 68 5f 72 6f 77 5c 73 63 61 6e 5c 73 61 6c  tch_row\scan\sal
0100: 73 6f 5c 73 72 65 74 75 72 6e 5c 73 4e 55 4c 4c  so\sreturn\sNULL
0110: 5c 73 77 68 65 6e 5c 73 74 68 65 72 65 5c 73 61  \swhen\sthere\sa
0120: 72 65 5c 73 65 72 72 6f 72 5c 72 5c 6e 63 6f 6e  re\serror\r\ncon
0130: 64 69 74 69 6f 6e 73 5c 73 28 73 75 63 68 5c 73  ditions\s(such\s
0140: 61 73 5c 73 74 68 65 5c 73 63 6f 6e 6e 65 63 74  as\sthe\sconnect
0150: 69 6f 6e 5c 73 62 65 69 6e 67 5c 73 64 72 6f 70  ion\sbeing\sdrop
0160: 70 65 64 5c 73 77 68 69 6c 65 5c 73 69 74 65 72  ped\swhile\siter
0170: 61 74 69 6e 67 29 2c 5c 73 61 6e 64 5c 73 79 65  ating),\sand\sye
0180: 74 5c 72 5c 6e 6e 6f 5c 73 65 78 63 65 70 74 69  t\r\nno\sexcepti
0190: 6f 6e 5c 73 69 73 5c 73 74 68 72 6f 77 6e 5c 73  on\sis\sthrown\s
01a0: 77 68 65 6e 5c 73 74 68 65 79 5c 73 61 72 65 5c  when\sthey\sare\
01b0: 73 65 6e 61 62 6c 65 64 2e 5c 73 54 68 69 73 5c  senabled.\sThis\
01c0: 73 63 61 6e 5c 73 72 65 73 75 6c 74 5c 73 69 6e  scan\sresult\sin
01d0: 5c 73 69 6e 63 6f 6d 70 6c 65 74 65 5c 72 5c 6e  \sincomplete\r\n
01e0: 72 65 73 75 6c 74 5c 73 73 65 74 73 5c 73 69 66  result\ssets\sif
01f0: 5c 73 74 68 65 5c 73 65 72 72 6f 72 5c 73 73 74  \sthe\serror\sst
0200: 61 74 65 5c 73 69 73 5c 73 6e 6f 74 5c 73 63 68  ate\sis\snot\sch
0210: 65 63 6b 65 64 5c 73 69 6d 6d 65 64 69 61 74 65  ecked\simmediate
0220: 6c 79 5c 73 61 66 74 65 72 5c 73 74 68 65 5c 73  ly\safter\sthe\s
0230: 71 75 65 72 79 5c 72 5c 6e 63 6f 6d 70 6c 65 74  query\r\ncomplet
0240: 65 64 2c 5c 73 77 68 69 63 68 5c 73 69 73 5c 73  ed,\swhich\sis\s
0250: 70 72 6f 62 61 62 6c 79 5c 73 75 6e 65 78 70 65  probably\sunexpe
0260: 63 74 65 64 5c 73 62 65 68 61 76 69 6f 75 72 3f  cted\sbehaviour?
0270: 5c 72 5c 6e 5c 72 5c 6e 57 65 27 76 65 5c 73 66  \r\n\r\nWe've\sf
0280: 69 78 65 64 5c 73 74 68 69 73 5c 73 77 69 74 68  ixed\sthis\swith
0290: 5c 73 74 68 65 5c 73 66 6f 6c 6c 6f 77 69 6e 67  \sthe\sfollowing
02a0: 5c 73 70 61 74 63 68 3a 5c 72 5c 6e 5c 72 5c 6e  \spatch:\r\n\r\n
02b0: 2d 2d 2d 5c 73 6d 79 73 71 6c 2b 2b 2d 33 2e 32  ---\smysql++-3.2
02c0: 2e 34 2f 6c 69 62 2f 72 65 73 75 6c 74 2e 63 70  .4/lib/result.cp
02d0: 70 5c 74 32 30 31 39 2d 30 37 2d 32 31 5c 73 30  p\t2019-07-21\s0
02e0: 34 3a 33 32 3a 33 30 2e 30 30 30 30 30 30 30 30  4:32:30.00000000
02f0: 30 5c 73 2d 30 37 30 30 5c 72 5c 6e 2b 2b 2b 5c  0\s-0700\r\n+++\
0300: 73 6d 79 73 71 6c 2b 2b 2d 33 2e 32 2e 34 2f 6c  smysql++-3.2.4/l
0310: 69 62 2f 72 65 73 75 6c 74 5f 6e 65 77 2e 63 70  ib/result_new.cp
0320: 70 5c 74 32 30 31 39 2d 31 30 2d 32 35 5c 73 31  p\t2019-10-25\s1
0330: 35 3a 33 38 3a 33 30 2e 36 35 39 34 32 34 30 39  5:38:30.65942409
0340: 32 5c 73 2d 30 37 30 30 5c 72 5c 6e 40 40 5c 73  2\s-0700\r\n@@\s
0350: 2d 31 31 30 2c 38 5c 73 2b 31 31 30 2c 31 30 5c  -110,8\s+110,10\
0360: 73 40 40 5c 72 5c 6e 5c 73 5c 74 5c 74 5c 74 5c  s@@\r\n\s\t\t\t\
0370: 74 2b 2b 69 74 3b 5c 72 5c 6e 5c 73 5c 74 5c 74  t++it;\r\n\s\t\t
0380: 5c 74 7d 5c 72 5c 6e 5c 73 5c 74 5c 74 7d 5c 72  \t}\r\n\s\t\t}\r
0390: 5c 6e 2d 5c 72 5c 6e 5c 73 5c 74 5c 74 64 62 64  \n-\r\n\s\t\tdbd
03a0: 2d 3e 66 72 65 65 5f 72 65 73 75 6c 74 28 72 65  ->free_result(re
03b0: 73 29 3b 5c 72 5c 6e 2b 5c 74 5c 74 69 66 5c 73  s);\r\n+\t\tif\s
03c0: 28 74 68 72 6f 77 5f 65 78 63 65 70 74 69 6f 6e  (throw_exception
03d0: 73 28 29 5c 73 26 26 5c 73 64 62 64 2d 3e 65 72  s()\s&&\sdbd->er
03e0: 72 6e 75 6d 28 29 5c 73 21 3d 5c 73 30 29 5c 73  rnum()\s!=\s0)\s
03f0: 7b 5c 72 5c 6e 2b 5c 74 5c 74 5c 74 74 68 72 6f  {\r\n+\t\t\tthro
0400: 77 5c 73 55 73 65 51 75 65 72 79 45 72 72 6f 72  w\sUseQueryError
0410: 28 64 62 64 2d 3e 65 72 72 6f 72 28 29 29 3b 5c  (dbd->error());\
0420: 72 5c 6e 2b 5c 74 5c 74 7d 5c 72 5c 6e 5c 73 5c  r\n+\t\t}\r\n\s\
0430: 74 7d 5c 72 5c 6e 5c 73 7d 5c 72 5c 6e 5c 73 5c  t}\r\n\s}\r\n\s\
0440: 72 5c 6e 40 40 5c 73 2d 31 39 30 2c 36 5c 73 2b  r\n@@\s-190,6\s+
0450: 31 39 32 2c 39 5c 73 40 40 5c 72 5c 6e 5c 73 5c  192,9\s@@\r\n\s\
0460: 74 5c 74 7d 5c 72 5c 6e 5c 73 5c 74 7d 5c 72 5c  t\t}\r\n\s\t}\r\
0470: 6e 5c 73 5c 74 65 6c 73 65 5c 73 7b 5c 72 5c 6e  n\s\telse\s{\r\n
0480: 2b 5c 74 5c 74 69 66 5c 73 28 74 68 72 6f 77 5f  +\t\tif\s(throw_
0490: 65 78 63 65 70 74 69 6f 6e 73 28 29 5c 73 26 26  exceptions()\s&&
04a0: 5c 73 64 72 69 76 65 72 5f 2d 3e 65 72 72 6e 75  \sdriver_->errnu
04b0: 6d 28 29 5c 73 21 3d 5c 73 30 29 5c 73 7b 5c 72  m()\s!=\s0)\s{\r
04c0: 5c 6e 2b 5c 74 5c 74 5c 74 74 68 72 6f 77 5c 73  \n+\t\t\tthrow\s
04d0: 55 73 65 51 75 65 72 79 45 72 72 6f 72 28 64 72  UseQueryError(dr
04e0: 69 76 65 72 5f 2d 3e 65 72 72 6f 72 28 29 29 3b  iver_->error());
04f0: 5c 72 5c 6e 2b 5c 74 5c 74 7d 5c 72 5c 6e 5c 73  \r\n+\t\t}\r\n\s
0500: 5c 74 5c 74 2f 2f 5c 73 50 72 69 6f 72 5c 73 74  \t\t//\sPrior\st
0510: 6f 5c 73 76 33 2c 5c 73 74 68 69 73 5c 73 77 61  o\sv3,\sthis\swa
0520: 73 5c 73 63 6f 6e 73 69 64 65 72 65 64 5c 73 61  s\sconsidered\sa
0530: 6e 5c 73 65 72 72 6f 72 2c 5c 73 62 75 74 5c 73  n\serror,\sbut\s
0540: 69 74 5c 73 6a 75 73 74 5c 73 6d 65 61 6e 73 5c  it\sjust\smeans\
0550: 72 5c 6e 5c 73 5c 74 5c 74 2f 2f 5c 73 77 65 27  r\n\s\t\t//\swe'
0560: 76 65 5c 73 66 61 6c 6c 65 6e 5c 73 6f 66 66 5c  ve\sfallen\soff\
0570: 73 74 68 65 5c 73 65 6e 64 5c 73 6f 66 5c 73 61  sthe\send\sof\sa
0580: 5c 73 22 75 73 65 22 5c 73 71 75 65 72 79 27 73  \s"use"\squery's
0590: 5c 73 72 65 73 75 6c 74 5c 73 73 65 74 2e 5c 73  \sresult\sset.\s
05a0: 5c 73 59 6f 75 5c 72 5c 6e 5c 73 5c 74 5c 74 2f  \sYou\r\n\s\t\t/
05b0: 2f 5c 73 63 61 6e 27 74 5c 73 70 72 65 64 69 63  /\scan't\spredic
05c0: 74 5c 73 77 68 65 6e 5c 73 74 68 69 73 5c 73 77  t\swhen\sthis\sw
05d0: 69 6c 6c 5c 73 68 61 70 70 65 6e 2c 5c 73 62 75  ill\shappen,\sbu
05e0: 74 5c 73 69 74 5c 73 69 73 6e 27 74 5c 73 61 6e  t\sit\sisn't\san
05f0: 5c 73 65 72 72 6f 72 2e 0a 4a 20 6c 6f 67 69 6e  \serror..J login
0600: 20 61 6e 6f 6e 79 6d 6f 75 73 0a 4a 20 6d 69 6d   anonymous.J mim
0610: 65 74 79 70 65 20 74 65 78 74 2f 78 2d 66 6f 73  etype text/x-fos
0620: 73 69 6c 2d 70 6c 61 69 6e 0a 4a 20 70 72 69 76  sil-plain.J priv
0630: 61 74 65 5f 63 6f 6e 74 61 63 74 20 31 65 64 62  ate_contact 1edb
0640: 34 64 31 31 63 30 32 36 61 39 38 62 66 37 65 34  4d11c026a98bf7e4
0650: 64 37 35 39 36 36 64 65 30 37 38 34 39 61 31 39  d75966de07849a19
0660: 39 36 35 64 0a 4a 20 73 65 76 65 72 69 74 79 20  965d.J severity 
0670: 4d 69 6e 6f 72 0a 4a 20 73 74 61 74 75 73 20 4f  Minor.J status O
0680: 70 65 6e 0a 4a 20 74 69 74 6c 65 20 45 72 72 6f  pen.J title Erro
0690: 72 73 5c 73 6e 6f 74 5c 73 63 68 65 63 6b 65 64  rs\snot\schecked
06a0: 5c 73 77 68 65 6e 5c 73 66 65 74 63 68 5f 72 6f  \swhen\sfetch_ro
06b0: 77 5c 73 72 65 74 75 72 6e 73 5c 73 4e 55 4c 4c  w\sreturns\sNULL
06c0: 0a 4a 20 74 79 70 65 20 43 6f 64 65 5c 73 44 65  .J type Code\sDe
06d0: 66 65 63 74 0a 4b 20 65 36 63 66 34 62 36 66 62  fect.K e6cf4b6fb
06e0: 62 34 62 38 63 65 61 62 32 30 38 66 34 35 62 62  b4b8ceab208f45bb
06f0: 30 65 63 64 35 39 39 66 31 32 30 65 61 36 34 0a  0ecd599f120ea64.
0700: 55 20 61 6e 6f 6e 79 6d 6f 75 73 0a 5a 20 37 36  U anonymous.Z 76
0710: 62 64 62 66 37 62 34 61 30 30 39 63 37 61 65 35  bdbf7b4a009c7ae5
0720: 31 61 33 33 63 66 39 62 36 39 30 32 32 39 0a     1a33cf9b690229.