libzutil: zfs_isnumber(): return false if input empty

zpool list, which is the only user, would mistakenly try to parse the
empty string as the interval in this case:

  $ zpool list "a"
  cannot open 'a': no such pool
  $ zpool list ""
  interval cannot be zero
  usage: <usage string follows>
which is now symmetric with zpool get:
  $ zpool list ""
  cannot open '': name must begin with a letter

Avoid breaking the  "interval cannot be zero" string.
There simply isn't a need for this, and it's user-facing.

Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov>
Reviewed-by: Ryan Moeller <ryan@iXsystems.com>
Signed-off-by: Ahelenia Ziemiańska <nabijaczleweli@nabijaczleweli.xyz>
Closes #11841 
Closes #11843
This commit is contained in:
наб
2021-04-06 21:25:53 +02:00
committed by Tony Hutter
parent 7428adc6b7
commit dfc25ea91c
2 changed files with 7 additions and 4 deletions
+3
View File
@@ -35,6 +35,9 @@
boolean_t
zfs_isnumber(const char *str)
{
if (!*str)
return (B_FALSE);
for (; *str; str++)
if (!(isdigit(*str) || (*str == '.')))
return (B_FALSE);