In November 2020, github user Buggynours introduced an if statement that did not previously exist, and branches on field_length >= 0 .
https://github.com/MariaDB/server/commit/28af4212b6e2afe1d42729c9c36215ed8a8d38cb#diff-df4382972e2df64f7429b4c4b2037ddeff0c1d6970a5e13b4f98f7995c928cf0
if (fp->field_length >= 0) {
pcf->Length = fp->field_length;
// length is bytes for Connect, not characters
if (!strnicmp(chset, "utf8" , 4))
pcf->Length /= 3;
} else {
pcf->Length= 256; // BLOB?
However, field_length is defined as uint32_t , and has been for at least 21 years .
Since this variable is unsigned , the if statement will always take the true branch. It will never take the false branch.
What is the right behaviour here?
Is the current version correct? ("Always take the true branch" → we should delete the nonsense false branch)
Or is there some real case where the false branch should be taken but which is currently being ignored? (The false branch comment "BLOB?" strongly suggests yes)
If so, this is a bug, and it has been merged into 10.2.37+, 10.3.28+, 10.4.18+, 10.5.9+, 10.6., 10.7. , etc.
Or something else?
This was caught by building with -Wtype-limits .
Daniel Black
made changes -
2023-02-23 03:51
Field
Original Value
New Value
Labels
Connect-Engine JSON
Connect-Engine JSON not-11.0
Daniel Black
made changes -
2023-02-23 04:01
Labels
Connect-Engine JSON not-11.0
Connect-Engine JSON beginner-friendly not-11.0
Daniel Black
made changes -
2023-02-23 04:02
Affects Version/s
10.4.28
[ 28509
]
Affects Version/s
10.3
[ 22126
]
Daniel Black
made changes -
2023-02-23 04:02
Fix Version/s
10.4
[ 22408
]
Daniel Black
made changes -
2023-02-28 00:00
Assignee
Daniel Black
[ danblack
]
Andrew Hutchings (Inactive)
made changes -
2023-04-21 14:48
Component/s
Storage Engine - Connect
[ 10128
]
Fix Version/s
10.4.29
[ 28510
]
Fix Version/s
10.4
[ 22408
]
Resolution
Fixed
[ 1
]
Status
Open
[ 1
]
Closed
[ 6
]
{"report":{"fcp":1300.9000005722046,"ttfb":429.70000076293945,"pageVisibility":"visible","entityId":119643,"key":"jira.project.issue.view-issue","isInitial":true,"threshold":1000,"elementTimings":{},"userDeviceMemory":8,"userDeviceProcessors":64,"apdex":0.5,"journeyId":"803520db-f397-4492-843e-b6f7b2389080","navigationType":0,"readyForUser":1370.8000001907349,"redirectCount":0,"resourceLoadedEnd":1483.6000003814697,"resourceLoadedStart":434.9000005722046,"resourceTiming":[{"duration":357.30000019073486,"initiatorType":"link","name":"https://jira.mariadb.org/s/2c21342762a6a02add1c328bed317ffd-CDN/lu2bv2/820016/12ta74/0a8bac35585be7fc6c9cc5a0464cd4cf/_/download/contextbatch/css/_super/batch.css","startTime":434.9000005722046,"connectEnd":0,"connectStart":0,"domainLookupEnd":0,"domainLookupStart":0,"fetchStart":434.9000005722046,"redirectEnd":0,"redirectStart":0,"requestStart":0,"responseEnd":792.2000007629395,"responseStart":0,"secureConnectionStart":0},{"duration":357.6000003814697,"initiatorType":"link","name":"https://jira.mariadb.org/s/7ebd35e77e471bc30ff0eba799ebc151-CDN/lu2bv2/820016/12ta74/2380add21a9a1006587582385952de73/_/download/contextbatch/css/jira.browse.project,project.issue.navigator,jira.view.issue,jira.general,jira.global,atl.general,-_super/batch.css?agile_global_admin_condition=true&jag=true&jira.create.linked.issue=true&slack-enabled=true","startTime":435.1000003814697,"connectEnd":0,"connectStart":0,"domainLookupEnd":0,"domainLookupStart":0,"fetchStart":435.1000003814697,"redirectEnd":0,"redirectStart":0,"requestStart":0,"responseEnd":792.7000007629395,"responseStart":0,"secureConnectionStart":0},{"duration":409.5999994277954,"initiatorType":"script","name":"https://jira.mariadb.org/s/e9b27a47da5fb0f74a35acd57e9847fb-CDN/lu2bv2/820016/12ta74/0a8bac35585be7fc6c9cc5a0464cd4cf/_/download/contextbatch/js/_super/batch.js?locale=en","startTime":435.4000005722046,"connectEnd":435.4000005722046,"connectStart":435.4000005722046,"domainLookupEnd":435.4000005722046,"domainLookupStart":435.4000005722046,"fetchStart":435.4000005722046,"redirectEnd":0,"redirectStart":0,"requestStart":435.4000005722046,"responseEnd":845,"responseStart":845,"secureConnectionStart":435.4000005722046},{"duration":465.80000019073486,"initiatorType":"script","name":"https://jira.mariadb.org/s/c32eb0da7ad9831253f8397e6cc26afd-CDN/lu2bv2/820016/12ta74/2380add21a9a1006587582385952de73/_/download/contextbatch/js/jira.browse.project,project.issue.navigator,jira.view.issue,jira.general,jira.global,atl.general,-_super/batch.js?agile_global_admin_condition=true&jag=true&jira.create.linked.issue=true&locale=en&slack-enabled=true","startTime":435.5,"connectEnd":435.5,"connectStart":435.5,"domainLookupEnd":435.5,"domainLookupStart":435.5,"fetchStart":435.5,"redirectEnd":0,"redirectStart":0,"requestStart":435.5,"responseEnd":901.3000001907349,"responseStart":901.3000001907349,"secureConnectionStart":435.5},{"duration":469.5,"initiatorType":"script","name":"https://jira.mariadb.org/s/bc0bcb146314416123c992714ee00ff7-CDN/lu2bv2/820016/12ta74/c92c0caa9a024ae85b0ebdbed7fb4bd7/_/download/contextbatch/js/atl.global,-_super/batch.js?locale=en","startTime":435.70000076293945,"connectEnd":435.70000076293945,"connectStart":435.70000076293945,"domainLookupEnd":435.70000076293945,"domainLookupStart":435.70000076293945,"fetchStart":435.70000076293945,"redirectEnd":0,"redirectStart":0,"requestStart":435.70000076293945,"responseEnd":905.2000007629395,"responseStart":905.2000007629395,"secureConnectionStart":435.70000076293945},{"duration":469.80000019073486,"initiatorType":"script","name":"https://jira.mariadb.org/s/d41d8cd98f00b204e9800998ecf8427e-CDN/lu2bv2/820016/12ta74/1.0/_/download/batch/jira.webresources:calendar-en/jira.webresources:calendar-en.js","startTime":435.9000005722046,"connectEnd":435.9000005722046,"connectStart":435.9000005722046,"domainLookupEnd":435.9000005722046,"domainLookupStart":435.9000005722046,"fetchStart":435.9000005722046,"redirectEnd":0,"redirectStart":0,"requestStart":435.9000005722046,"responseEnd":905.7000007629395,"responseStart":905.7000007629395,"secureConnectionStart":435.9000005722046},{"duration":469.8999996185303,"initiatorType":"script","name":"https://jira.mariadb.org/s/d41d8cd98f00b204e9800998ecf8427e-CDN/lu2bv2/820016/12ta74/1.0/_/download/batch/jira.webresources:calendar-localisation-moment/jira.webresources:calendar-localisation-moment.js","startTime":436.1000003814697,"connectEnd":436.1000003814697,"connectStart":436.1000003814697,"domainLookupEnd":436.1000003814697,"domainLookupStart":436.1000003814697,"fetchStart":436.1000003814697,"redirectEnd":0,"redirectStart":0,"requestStart":436.1000003814697,"responseEnd":906,"responseStart":906,"secureConnectionStart":436.1000003814697},{"duration":553.9000005722046,"initiatorType":"link","name":"https://jira.mariadb.org/s/b04b06a02d1959df322d9cded3aeecc1-CDN/lu2bv2/820016/12ta74/a2ff6aa845ffc9a1d22fe23d9ee791fc/_/download/contextbatch/css/jira.global.look-and-feel,-_super/batch.css","startTime":436.30000019073486,"connectEnd":0,"connectStart":0,"domainLookupEnd":0,"domainLookupStart":0,"fetchStart":436.30000019073486,"redirectEnd":0,"redirectStart":0,"requestStart":0,"responseEnd":990.2000007629395,"responseStart":0,"secureConnectionStart":0},{"duration":470.0999994277954,"initiatorType":"script","name":"https://jira.mariadb.org/rest/api/1.0/shortcuts/820016/47140b6e0a9bc2e4913da06536125810/shortcuts.js?context=issuenavigation&context=issueaction","startTime":436.4000005722046,"connectEnd":436.4000005722046,"connectStart":436.4000005722046,"domainLookupEnd":436.4000005722046,"domainLookupStart":436.4000005722046,"fetchStart":436.4000005722046,"redirectEnd":0,"redirectStart":0,"requestStart":436.4000005722046,"responseEnd":906.5,"responseStart":906.5,"secureConnectionStart":436.4000005722046},{"duration":553.8000001907349,"initiatorType":"link","name":"https://jira.mariadb.org/s/3ac36323ba5e4eb0af2aa7ac7211b4bb-CDN/lu2bv2/820016/12ta74/d176f0986478cc64f24226b3d20c140d/_/download/contextbatch/css/com.atlassian.jira.projects.sidebar.init,-_super,-project.issue.navigator,-jira.view.issue/batch.css?jira.create.linked.issue=true","startTime":436.5,"connectEnd":0,"connectStart":0,"domainLookupEnd":0,"domainLookupStart":0,"fetchStart":436.5,"redirectEnd":0,"redirectStart":0,"requestStart":0,"responseEnd":990.3000001907349,"responseStart":0,"secureConnectionStart":0},{"duration":470.29999923706055,"initiatorType":"script","name":"https://jira.mariadb.org/s/719848dd97ebe0663199f49a3936487a-CDN/lu2bv2/820016/12ta74/d176f0986478cc64f24226b3d20c140d/_/download/contextbatch/js/com.atlassian.jira.projects.sidebar.init,-_super,-project.issue.navigator,-jira.view.issue/batch.js?jira.create.linked.issue=true&locale=en","startTime":436.70000076293945,"connectEnd":436.70000076293945,"connectStart":436.70000076293945,"domainLookupEnd":436.70000076293945,"domainLookupStart":436.70000076293945,"fetchStart":436.70000076293945,"redirectEnd":0,"redirectStart":0,"requestStart":436.70000076293945,"responseEnd":907,"responseStart":907,"secureConnectionStart":436.70000076293945},{"duration":1040.3999996185303,"initiatorType":"script","name":"https://jira.mariadb.org/s/d41d8cd98f00b204e9800998ecf8427e-CDN/lu2bv2/820016/12ta74/1.0/_/download/batch/jira.webresources:bigpipe-js/jira.webresources:bigpipe-js.js","startTime":442.20000076293945,"connectEnd":442.20000076293945,"connectStart":442.20000076293945,"domainLookupEnd":442.20000076293945,"domainLookupStart":442.20000076293945,"fetchStart":442.20000076293945,"redirectEnd":0,"redirectStart":0,"requestStart":442.20000076293945,"responseEnd":1482.6000003814697,"responseStart":1482.6000003814697,"secureConnectionStart":442.20000076293945},{"duration":1041.3000001907349,"initiatorType":"script","name":"https://jira.mariadb.org/s/d41d8cd98f00b204e9800998ecf8427e-CDN/lu2bv2/820016/12ta74/1.0/_/download/batch/jira.webresources:bigpipe-init/jira.webresources:bigpipe-init.js","startTime":442.30000019073486,"connectEnd":442.30000019073486,"connectStart":442.30000019073486,"domainLookupEnd":442.30000019073486,"domainLookupStart":442.30000019073486,"fetchStart":442.30000019073486,"redirectEnd":0,"redirectStart":0,"requestStart":442.30000019073486,"responseEnd":1483.6000003814697,"responseStart":1483.6000003814697,"secureConnectionStart":442.30000019073486},{"duration":350.5,"initiatorType":"xmlhttprequest","name":"https://jira.mariadb.org/rest/webResources/1.0/resources","startTime":1001.8000001907349,"connectEnd":1001.8000001907349,"connectStart":1001.8000001907349,"domainLookupEnd":1001.8000001907349,"domainLookupStart":1001.8000001907349,"fetchStart":1001.8000001907349,"redirectEnd":0,"redirectStart":0,"requestStart":1001.8000001907349,"responseEnd":1352.3000001907349,"responseStart":1352.2000007629395,"secureConnectionStart":1001.8000001907349}],"fetchStart":0,"domainLookupStart":0,"domainLookupEnd":0,"connectStart":0,"connectEnd":0,"requestStart":230,"responseStart":430,"responseEnd":438,"domLoading":433,"domInteractive":1523,"domContentLoadedEventStart":1523,"domContentLoadedEventEnd":1563,"domComplete":2299,"loadEventStart":2299,"loadEventEnd":2300,"userAgent":"Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)","marks":[{"name":"bigPipe.sidebar-id.start","time":1503},{"name":"bigPipe.sidebar-id.end","time":1503.9000005722046},{"name":"bigPipe.activity-panel-pipe-id.start","time":1504.1000003814697},{"name":"bigPipe.activity-panel-pipe-id.end","time":1506},{"name":"activityTabFullyLoaded","time":1577}],"measures":[],"correlationId":"ae06f40d24ac12","effectiveType":"4g","downlink":10,"rtt":0,"serverDuration":129,"dbReadsTimeInMs":13,"dbConnsTimeInMs":22,"applicationHash":"9d11dbea5f4be3d4cc21f03a88dd11d8c8687422","experiments":[]}}