Ticket #998: pton.diff

File pton.diff, 1.4 KB (added by jinmei, 9 years ago)
  • src/lib/acl/ip_check.h

    a b public: 
    226226                          std::back_inserter(address_));
    227227                family_ = AF_INET6;
    228228
    229             } else {
     229            } else if (status == 0) {
    230230                // Not IPV6, try IPV4
    231                 int status = inet_pton(AF_INET, result.first.c_str(),
    232                                        address_bytes);
     231                status = inet_pton(AF_INET, result.first.c_str(),
     232                                   address_bytes);
    233233                if (status == 1) {
    234234                    std::copy(address_bytes, address_bytes + IPV4_SIZE,
    235235                              std::back_inserter(address_));
    236236                    family_ = AF_INET;
    237237
    238                 } else {
    239                     isc_throw(isc::InvalidParameter, "address prefix of " <<
    240                               ipprefix << " is a not valid");
    241238                }
    242239            }
     240            if (status == 0) {
     241                isc_throw(isc::InvalidParameter, "address prefix of " <<
     242                          ipprefix << " is a not valid");
     243            } else if (status == -1) {
     244                isc_throw(isc::Unexpected,
     245                          "address conversion failed due to a system error");
     246            }
    243247
    244248            // All done, so set the mask used in address comparison.
    245249            setMask(result.second);