Print this page
NEX-9538 dladm_str2bw() does not reset errno which is checked after string conversion
Reviewed by: Yuri Pankov <yuri.pankov@nexenta.com>
Reviewed by: Alex Deiter <alex.deiter@nexenta.com>
Reviewed by: Jean McCormack <jean.mccormack@nexenta.com>
NEX-9184 libdladm/dlmgmtd should do a better link name validation
Reviewed by: Roman Strashkin <roman.strashkin@nexenta.com>
Reviewed by: Alex Deiter <alex.deiter@nexenta.com>


 479         int             val;
 480         char            *endp = NULL;
 481 
 482         errno = 0;
 483         val = strtol(oarg, &endp, 10);
 484         if (errno != 0 || val <= 0 || *endp != '\0')
 485                 return (B_FALSE);
 486 
 487         *interval = val;
 488 
 489         return (B_TRUE);
 490 }
 491 
 492 dladm_status_t
 493 dladm_str2bw(char *oarg, uint64_t *bw)
 494 {
 495         char            *endp = NULL;
 496         int64_t         n;
 497         int             mult = 1;
 498 

 499         n = strtoull(oarg, &endp, 10);
 500 
 501         if ((errno != 0) || (strlen(endp) > 1))
 502                 return (DLADM_STATUS_BADARG);
 503 
 504         if (n < 0)
 505                 return (DLADM_STATUS_BADVAL);
 506 
 507         switch (*endp) {
 508         case 'k':
 509         case 'K':
 510                 mult = 1000;
 511                 break;
 512         case 'm':
 513         case 'M':
 514         case '\0':
 515                 mult = 1000000;
 516                 break;
 517         case 'g':
 518         case 'G':




 479         int             val;
 480         char            *endp = NULL;
 481 
 482         errno = 0;
 483         val = strtol(oarg, &endp, 10);
 484         if (errno != 0 || val <= 0 || *endp != '\0')
 485                 return (B_FALSE);
 486 
 487         *interval = val;
 488 
 489         return (B_TRUE);
 490 }
 491 
 492 dladm_status_t
 493 dladm_str2bw(char *oarg, uint64_t *bw)
 494 {
 495         char            *endp = NULL;
 496         int64_t         n;
 497         int             mult = 1;
 498 
 499         errno = 0;
 500         n = strtoull(oarg, &endp, 10);
 501 
 502         if ((errno != 0) || (strlen(endp) > 1))
 503                 return (DLADM_STATUS_BADARG);
 504 
 505         if (n < 0)
 506                 return (DLADM_STATUS_BADVAL);
 507 
 508         switch (*endp) {
 509         case 'k':
 510         case 'K':
 511                 mult = 1000;
 512                 break;
 513         case 'm':
 514         case 'M':
 515         case '\0':
 516                 mult = 1000000;
 517                 break;
 518         case 'g':
 519         case 'G':