From fcff6c61a0c77662ded48212490b5176fde5a1dd Mon Sep 17 00:00:00 2001
From: Lubos Slovak <lubos.slovak@nic.cz>
Date: Tue, 19 Feb 2013 19:51:39 +0100
Subject: [PATCH] Code review - rrset.c, part 2

refs #2027 @1h
---
 src/libknot/rrset.c | 24 ++++++++++++++++++++----
 1 file changed, 20 insertions(+), 4 deletions(-)

diff --git a/src/libknot/rrset.c b/src/libknot/rrset.c
index 5e93d1e15..59c92bf05 100644
--- a/src/libknot/rrset.c
+++ b/src/libknot/rrset.c
@@ -876,6 +876,8 @@ int knot_rrset_rdata_equal(const knot_rrset_t *r1, const knot_rrset_t *r2)
 int knot_rrset_to_wire(const knot_rrset_t *rrset, uint8_t *wire, size_t *size,
                        size_t max_size, uint16_t *rr_count, void *data)
 {
+	/* [code-review] Missing parameter checks. */
+	
 	// if no RDATA in RRSet, return
 	if (rrset->rdata == NULL) {
 		*size = 0;
@@ -921,6 +923,8 @@ int knot_rrset_rdata_from_wire_one(knot_rrset_t *rrset,
                                    const uint8_t *wire, size_t *pos,
                                    size_t total_size, size_t rdlength)
 {
+	/* [code-review] Missing parameter checks. */
+	
 	if (rdlength == 0) {
 		return KNOT_EOK;
 	}
@@ -1064,6 +1068,8 @@ dbg_rrset_exec_detail(
 			}
 			*((knot_dname_t **)rdata_buffer + offset) = dname;
 			offset += sizeof(knot_dname_t *);
+			
+			/* [code-review] 'parsed' is not updated, is it ok? */
 		}
 	}
 	
@@ -1081,6 +1087,8 @@ int knot_rrset_compare(const knot_rrset_t *r1,
                        const knot_rrset_t *r2,
                        knot_rrset_compare_type_t cmp)
 {
+	/* [code-review] Missing parameter checks. */
+	
 	if (cmp == KNOT_RRSET_COMPARE_PTR) {
 		if ((size_t)r1 > (size_t)r2) {
 			return 1;
@@ -1135,8 +1143,8 @@ int knot_rrset_equal(const knot_rrset_t *r1,
 		res = 0;
 	}
 	
-	if (cmp == KNOT_RRSET_COMPARE_WHOLE) {
-		res *= knot_rrset_rdata_equal(r1, r2);
+	if (cmp == KNOT_RRSET_COMPARE_WHOLE && res == 1) {
+		res = knot_rrset_rdata_equal(r1, r2);
 	}
 
 	return res;
@@ -1199,6 +1207,7 @@ dbg_rrset_exec_detail(
 				dbg_rrset("rrset: deep_copy: Cannot copy RDATA"
 				          " dname.\n");
 				/*! \todo This will leak. Is it worth fixing? */
+				/* [code-review] Why will it leak? */
 				knot_rrset_deep_free(&(*to)->rrsigs, 1,
 				                     copy_rdata_dnames);
 				free((*to)->rdata);
@@ -1253,7 +1262,10 @@ void knot_rrset_free(knot_rrset_t **rrset)
 }
 
 /*----------------------------------------------------------------------------*/
-
+/* [code-review] This function just frees all dnames in one RDATA? 
+ * It should be documented at least a little. Also it is used only in this file,
+ * so maybe it should be static?
+ */
 void knot_rrset_rdata_deep_free_one(knot_rrset_t *rrset, size_t pos,
                                     int free_dnames)
 {
@@ -1315,6 +1327,10 @@ void knot_rrset_deep_free(knot_rrset_t **rrset, int free_owner,
 	}
 
 	// RRSIGs should have the same owner as this RRSet, so do not delete it
+	/* [code-review] Wrong, it must be deleted (== released reference), 
+	 * because the pointer in the RRSIG RRSet should have been retained 
+	 * previously. Otherwise the reference count will be wrong.
+	 */
 	if ((*rrset)->rrsigs != NULL) {
 		knot_rrset_deep_free(&(*rrset)->rrsigs, 0, free_rdata_dnames);
 	}
@@ -1331,7 +1347,7 @@ void knot_rrset_deep_free(knot_rrset_t **rrset, int free_owner,
 }
 
 /*----------------------------------------------------------------------------*/
-
+/* [code-review] Remove. */
 // This might not be needed, we have to store the last index anyway
 //	/*
 //	 * The last one has to be traversed.
-- 
GitLab