#define PROGRAM_LENGTH 4
#define VERSION_LENGTH 4
+#define RPCB_UNIVERSAL_ADDR_LENGTH 6
+
#pragma pack(1)
struct ServiceRPCFragment
string tok;
while (getline(tokenizer, tok, '.'))
{
+ if (!all_of(tok.begin(), tok.end(), ::isdigit))
+ return false;
int tmp = stoi(tok);
if (tmp > 255)
return false;
uint16_t port = 0;
data += sizeof(UniversalAddress);
string uaddr(data, data + tmp);
- if (validate_and_parse_universal_address(uaddr, address, port))
+ if ((count(uaddr.begin(), uaddr.end(), '.') == (RPCB_UNIVERSAL_ADDR_LENGTH - 1)) and
+ validate_and_parse_universal_address(uaddr, address, port))
{
SfIp sip;
uint32_t addr = htonl(address);