diff --git a/cli_classcfg.c b/cli_classcfg.c index 5c5d59d96f84de45f41ccfbc0fedf187bfe57e57..df8be8e1e72aed1f88297a5a2e1f1a98e1927770 100755 --- a/cli_classcfg.c +++ b/cli_classcfg.c @@ -437,8 +437,13 @@ void classcfg_parse_ipaddr_ipmask( const char *optstring, const char* optarg, cl ipaddr_conv(subStr[0], &ipaddr); inet_ntop(AF_INET, &(ipaddr), pxipmatch->ipaddr, INET_ADDRSTRLEN); if(nSubCnt == 2) { - ipmask_conv(subStr[1], &mask); - inet_ntop(AF_INET, &(mask), pxipmatch->mask, INET_ADDRSTRLEN); + if (strchr(subStr[1], '.') != NULL) { + ipmask_conv(subStr[1], &mask); + inet_ntop(AF_INET, &(mask), pxipmatch->mask, INET_ADDRSTRLEN); + } else { + strncpy_s(pxipmatch->mask, sizeof(pxipmatch->mask), + subStr[1], strnlen_s(subStr[1], QCLI_MAX_STR)); + } } break; @@ -446,8 +451,13 @@ void classcfg_parse_ipaddr_ipmask( const char *optstring, const char* optarg, cl ip6addr_conv(subStr[0], &ipaddr6); inet_ntop(AF_INET6, &(ipaddr6), pxipmatch->ipaddr, INET_ADDRSTRLEN); if(nSubCnt == 2) { - ip6mask_conv(subStr[1], &mask6); - inet_ntop(AF_INET6, &(mask6), pxipmatch->mask, INET_ADDRSTRLEN); + if (strchr(subStr[1], ':') != NULL) { + ip6mask_conv(subStr[1], &mask6); + inet_ntop(AF_INET6, &(mask6), pxipmatch->mask, INET_ADDRSTRLEN); + } else { + strncpy_s(pxipmatch->mask, sizeof(pxipmatch->mask), + subStr[1], strnlen_s(subStr[1], QCLI_MAX_STR)); + } } break;