]> git.ipfire.org Git - thirdparty/unbound.git/commitdiff
- Fix #610: Undefine-shift in sldns_str2wire_hip_buf.
authorW.C.A. Wijngaards <wouter@nlnetlabs.nl>
Tue, 25 Jan 2022 07:57:49 +0000 (08:57 +0100)
committerW.C.A. Wijngaards <wouter@nlnetlabs.nl>
Tue, 25 Jan 2022 07:57:49 +0000 (08:57 +0100)
sldns/str2wire.c
sldns/str2wire.h

index 1e57211c108a33c640c5ddce92337ceafe6e335f..c61a5964a83527e55094ee3075edcf4d01dc49cd 100644 (file)
 #include <netdb.h>
 #endif
 
+/** bits for the offset */
+#define RET_OFFSET_MASK (((unsigned)(~LDNS_WIREPARSE_MASK))>>LDNS_WIREPARSE_SHIFT)
 /** return an error */
-#define RET_ERR(e, off) ((int)((e)|((off)<<LDNS_WIREPARSE_SHIFT)))
+#define RET_ERR(e, off) ((int)(((e)&LDNS_WIREPARSE_MASK)|(((off)&RET_OFFSET_MASK)<<LDNS_WIREPARSE_SHIFT)))
 /** Move parse error but keep its ID */
 #define RET_ERR_SHIFT(e, move) RET_ERR(LDNS_WIREPARSE_ERROR(e), LDNS_WIREPARSE_OFFSET(e)+(move));
 
index 0c316498956e9a687b4abf088b9322bb50bd0eeb..baee4236fe556896f6c03a4c604f953342f53598 100644 (file)
@@ -187,7 +187,7 @@ uint8_t* sldns_wirerr_get_rdatawl(uint8_t* rr, size_t len, size_t dname_len);
 #define LDNS_WIREPARSE_MASK 0x0fff
 #define LDNS_WIREPARSE_SHIFT 12
 #define LDNS_WIREPARSE_ERROR(e) ((e)&LDNS_WIREPARSE_MASK)
-#define LDNS_WIREPARSE_OFFSET(e) (((e)&~LDNS_WIREPARSE_MASK)>>LDNS_WIREPARSE_SHIFT)
+#define LDNS_WIREPARSE_OFFSET(e) ((((unsigned)(e))&~LDNS_WIREPARSE_MASK)>>LDNS_WIREPARSE_SHIFT)
 /* use lookuptable to get error string, sldns_wireparse_errors */
 #define LDNS_WIREPARSE_ERR_OK 0
 #define LDNS_WIREPARSE_ERR_GENERAL 342