• sundb's avatar
    Improve dbid range check for SELECT, MOVE, COPY (#8085) · 3ba2281f
    sundb authored
    SELECT used to read the index into a `long` variable, and then pass it to a function
    that takes an `int`, possibly causing an overflow before the range check.
    
    Now all these commands use better and cleaner range check, and that also results in
    a slight change of the error response in case of an invalid database index.
    
    SELECT:
    in the past it would have returned either `-ERR invalid DB index` (if not a number),
    or `-ERR DB index is out of range` (if not between 1..16 or alike).
    now it'll return either `-ERR value is out of range` (if not a number), or
    `-ERR value is out of range, value must between -2147483648 and 2147483647`
    (if not in the range for an int), or `-ERR DB index is out of range`
    (if not between 0..16 or alike)
    
    
    MOVE:
    in the past it would only fail with `-ERR index out of range` no matter the reason.
    now return the same errors as the new ones for SELECT mentioned above.
    (i.e. unlike for SELECT even for a value like 17 we changed the error message)
    
    COPY:
    doesn't really matter how it behaved in the past (new command), new behavior is
    like the above two.
    3ba2281f
server.h 118 KB