]> git.ipfire.org Git - thirdparty/kea.git/commitdiff
[1470] Added checks for zero length data
authorStephen Morris <stephen@isc.org>
Mon, 12 Dec 2011 19:37:13 +0000 (19:37 +0000)
committerStephen Morris <stephen@isc.org>
Mon, 12 Dec 2011 19:37:13 +0000 (19:37 +0000)
src/lib/dns/rdata.cc

index 27496a27c64d7057d78f31948f858c8b284b9346..c1ece52970e0e6756450287c6cbaa02e8410b346 100644 (file)
@@ -112,7 +112,9 @@ Generic::Generic(isc::util::InputBuffer& buffer, size_t rdata_len) {
     }
 
     vector<uint8_t> data(rdata_len);
-    buffer.readData(&data[0], rdata_len);
+    if (rdata_len > 0) {
+        buffer.readData(&data[0], rdata_len);
+    }
 
     impl_ = new GenericImpl(data);
 }
@@ -242,8 +244,10 @@ compare_internal(const GenericImpl& lhs, const GenericImpl& rhs) {
     size_t len = (this_len < other_len) ? this_len : other_len;
     int cmp;
 
-    if ((cmp = memcmp(&lhs.data_[0], &rhs.data_[0], len))
-        != 0) {
+    // TODO: is there a need to check len - should we just assert?
+    // (Depends if it is possible for rdata to have zero length)
+    if ((len != 0) &&
+        ((cmp = memcmp(&lhs.data_[0], &rhs.data_[0], len)) != 0)) {
         return (cmp);
     } else {
         return ((this_len == other_len) ? 0 :