Fossil Forum

Possible use of uninitalized random variable in uintNocaseCollFunc
Login

Possible use of uninitalized random variable in uintNocaseCollFunc

(1) By anonymous on 2022-03-12 18:41:38 [source]

If the first character of zA is a digit, and the first character of zB is not, x is returned without being initialized. In the sqlite source code there is a line setting x between the while and the if.

  int i=0, j=0, x;
  (void)notUsed;
  while( i<nKey1 && j<nKey2 ){
    if( fossil_isdigit(zA[i]) ){
      int k;
      if( !fossil_isdigit(zB[j]) ) return x;

(2.1) By Larry Brasfield (larrybr) on 2022-03-13 01:41:36 edited from 2.0 in reply to 1 [link] [source]

I think you meant "there is [not] a line setting x between ...".

For that reason, it looks like a flawed comparison, as you suggest. It is used on pathnames, and x is set before the next loop iteration if there is one. Since few pathnames begin with a digit, this flaw has been latent.

(Edited to add:)
This was fixed about 30 minutes ago. Thanks for the report.