diff options
-rw-r--r-- | src/blob.c | 6 |
1 files changed, 5 insertions, 1 deletions
@@ -192,10 +192,14 @@ void blob_percent_decode(blob_t *blob) int blob_pull_inet_addr(blob_t *b, struct in_addr *saddr) { unsigned long ip = 0; + unsigned int octet; int i; for (i = 0; i < 3; i++) { - ip += blob_pull_uint(b, 10); + octet = blob_pull_uint(b, 10); + if (octet > 255) + return 0; + ip += octet; ip <<= 8; if (!blob_pull_matching(b, BLOB_STR("."))) return 0; |