1.6.13
+ * Fix reading \DDD: Error on values that are outside range (>255).
-1.6.12 2012-01-11
+1.6.12
* bugfix #413: Fix manpage source for srcdir != builddir
* Canonicalize the signers name rdata field in RRSIGs when signing
* Ignore minor version of Private-key-format (so v1.3 may be used)
*/
static int
parse_escape(uint8_t *s, uint8_t *q) {
- uint8_t val;
+ uint16_t val;
if (strlen((char *)s) > 3 &&
isdigit((int) s[1]) &&
isdigit((int) s[2]) &&
isdigit((int) s[3])) {
/* cast this so it fits */
- val = (uint8_t) ldns_hexdigit_to_int((char) s[1]) * 100 +
+ val = (uint16_t) ldns_hexdigit_to_int((char) s[1]) * 100 +
ldns_hexdigit_to_int((char) s[2]) * 10 +
ldns_hexdigit_to_int((char) s[3]);
- *q = val;
- return 3;
+ if (val > 255) {
+ /* outside range */
+ return 0;
+ }
+ *q = (uint8_t) val;
+ return 3;
} else {
s++;
if (*s == '\0' || isdigit((int) *s)) {