diff --git a/include/haproxy/resolvers-t.h b/include/haproxy/resolvers-t.h index e89f5b547..3bdf5237e 100644 --- a/include/haproxy/resolvers-t.h +++ b/include/haproxy/resolvers-t.h @@ -114,7 +114,7 @@ struct resolv_answer_item { char name[DNS_MAX_NAME_SIZE+1]; /* answer name */ int16_t type; /* question type */ int16_t class; /* query class */ - int32_t ttl; /* response TTL */ + uint32_t ttl; /* response TTL */ int16_t priority; /* SRV type priority */ uint16_t weight; /* SRV type weight */ uint16_t port; /* SRV type port */ diff --git a/src/resolvers.c b/src/resolvers.c index ee49fb8f9..4362b00c9 100644 --- a/src/resolvers.c +++ b/src/resolvers.c @@ -1236,8 +1236,7 @@ static int resolv_validate_dns_response(unsigned char *resp, unsigned char *bufe if (reader + 4 > bufend) goto invalid_resp; - answer_record->ttl = reader[0] * 16777216 + reader[1] * 65536 - + reader[2] * 256 + reader[3]; + answer_record->ttl = read_n32(reader); reader += 4; /* Now reading data len */ @@ -1498,8 +1497,7 @@ static int resolv_validate_dns_response(unsigned char *resp, unsigned char *bufe if (reader + 4 > bufend) goto invalid_resp; - answer_record->ttl = reader[0] * 16777216 + reader[1] * 65536 - + reader[2] * 256 + reader[3]; + answer_record->ttl = read_n32(reader); reader += 4; /* Now reading data len */